Está en la página 1de 38

VB.

NET
Dr. Diego Lz. de Ipia Gz. de Artaza http://paginaspersonales.deusto.es/dipina

El lenguaje VB.NET
En Visual Basic, un programa tiene los bloques estndar en todo programa. El cdigo de Visual Basic se guarda en mdulos de proyecto Proyecto se compone de ficheros que se compilan en una aplicacin Todo cdigo en VB.NET debe seguir la siguiente secuencia:
Sentencias Option Sentencias Imports Procedimiento Main Sentencias Class, Module, y Namespace Adems un programa puede contener sentencias de compilacin condicionales.

Si el cdigo introducido no sigue este orden se producen errores de compilacin.

Sentencias Option I
Establecen reglas para el cdigo subsiguiente, ayudando a prevenir errores sintcticos y de lgica
La sentencia Option Explicit asegura que todas las variables estn declaradas y escritas correctamente
Evita que todas las variables declaradas sean de tipo Object Las variables se declaran usando Dim, Private, Public, or ReDim
Option Explicit On Fuerza la declaracin explcita de variables Dim MyVar As Integer ' Declara variable. MyInt = 10 Genera error al no estar la variable declarada MyVar = 10 ' Variable declarada por lo que no genera error

Sentencias Option II
La sentencia Option Strict ayuda a prevenir errores lgicos y de perdida de datos que ocurren cuando se trabaja con variables de diferente tipo.
Prohbe conversiones implcitas
Option Strict On Fuerza a declarar variables tambin Dim MyVar As Integer ' Declara variables. MyVar = 1000 ' Intento de convertir Integer a float genera error MyVar = 1234567890.987654321

Sentencias Option III


La sentencia Option Compare establece la manera en la que los strings son comparados, por formato binario (basado en la representacin binaria interna de los datos) o textual (case insensitive).
Establece el Option Compare ' Establece el Option Compare modo de comparacin a binario Binary ' Esto es, "AAA" es menor que "aaa". modo de comparacin a textual Text ' Esto es, "AAA" es igual a "aaa"

Sentencias Imports
Permiten nombrar clases y otros tipos definidos en los espacios de nombres importados (o assemblies) sin tener que especificar el cmino absoluto a ellas.
Imports [ aliasname = ] namespace o Imports [ aliasname = ] namespace.element

Si no se especifica alias los elementos definidos en el namespace se referencian sin prefijo y si no prefijados con el alias Se pueden especificar varios Imports en un programa y deben de aparecer antes de las sentencias Module y Class
Imports Str = Microsoft.VisualBasic.Strings ' Coloca Imports al comienzo de tu programa Class MyClass1 Sub ShowHello() MsgBox(Str.Left(Hola", 5)) ' Visualiza "Hola" End Sub End Class

Procedimiento Main
Punto de comienzo" de una aplicacin el primer procedimiento accedido cuando ejecutas tu cdigo. Algunas de las tareas que puedes llevar a cabo dentro del cdigo del Main:
Cargar un formulario Averiguar si alguna copia de tu programa existe Abrir una conexin a una base de datos

Cuatro variedades:
Sub Main() la ms comn Sub Main(ByVal CmdArgs() As String) Function Main() As Integer Function Main(ByVal CmdArgs() As String) As Integer

Sentencias Class, Module y Namespace


Contienen sentencias:

La mayora del cdigo de un aplicacin VB lo definen las clases y los mdulos


Sub Function Event Declaraciones de variables y otras partes del cdigo necesarias para hacer que tu aplicacin se ejecute.

Sentencia Class I
Declara el nombre de una clase, as como la definicin de variables, propiedades, eventos y mtodos que la componen
[ <attrlist> ] [ Public | Private | Protected | Friend | Protected Friend ] [ Shadows ] [ MustInherit | NotInheritable ] Class name [ Inherits classname ] [ Implements interfacenames ] [ statements ] End Class

Sentencia Class II
Public sin restricciones de acceso Private entidad accesible slo en contexto en que es declarada Protected accesible dentro de una clase o en hija de ella Friend accesible slo dentro del programa que contiene la declaracin de la entidad MustInherit no se pueden crear instancias de esta clase NotInheritable no se permite ms herencia name nombre de la clase Inherits esta clase deriva de classname classname (requerido) nombre de la clase de la que deriva Implements esta clase implementa una interfaz interfacename nombre de la interfaz derivada

Sentencia Class III


statements variables, propiedades, eventos y mtodos dentro de la clase End Class termina un bloque de clase Cada atributo en attrlist tiene la siguiente sintxis y partes: attrname [({ attrargs | attrinit })], attrlist Parts
attrname (requerido) nombre del atributo attrargs (optional) lista de argumentos del atributo attrinit (opcional) lista de campos o propiedades para

inicializar el atributo, si hay varios separados por comas

Sentencia Class IV
Clases sin modificador de acceso son declaradas Friend por defecto Todo elemento dentro de una clase es por defecto pblico (mtodos) excepto campos y constantes que son privados Ejemplos: Public Class ThisClass ' [declaracin de variable, propiedad, mtodo y eventos] End Class

Ejemplos declaracin clases


Ejemplo simple herencia:
Public Class ThisClass Inherits AnotherClass ' Aade cdigo para sobreescribir, sobrecargar o extender miembros ' hereda de AnotherClass. ...' Declaraciones de variable, propiedad, mtodo, y eventos End Class

Declaracin de Propiedad
[ <attrlist> ] [ Default ] [ Public | Private | Protected | Friend | Protected Friend ] _ [[ ReadOnly | WriteOnly ] [ Overloads | Overrides ] _ [ Overridable | NotOverridable ] | MustOverride | Shadows | Shared ] _ Property varname([ ByVal parameter list ]) [ As typename ] [ Implements interfacemember ] [ <attrlist> ] Get [ block ] End Get [ <attrlist> ] Set(ByVal value As typename ) [ block ] End Set End Property

Declaracin de variable
Dim se usa para declarar espacio de almacenamiento para variables Ejemplos de uso:
Dim AnyValue, MyValue As Object ' Los nmeros se inicializan por defecto a 0. Dim Number As Integer Dim FirstNumber, SecondNumber, ThirdNumber As Integer Dim MyDate As Date, MyValue As Single, MySwitch As Boolean ' DayArray es un array de 51 Objects indexados de 0 a 50. Dim DayArray(50) As Object ' Matrix2 es un array bidimensional de tipo entero Dim Matrix2(3, 4) As Integer

Declaracin de constantes
Const define constantes Ejemplos de uso:
Const MyConst As Integer = 459 ' Declara una constante pblica de tipo string ' disponible slo a nivel de clase Public Const MyString As String = "HELP" ' Declara una constante privada de tipo Integer Private Const MyInt As Integer = 5

Sentencias If
Sintxis:
If condition [ Then ] [ statements ] [ ElseIf elseifcondition [ Then ] [ elseifstatements ] ] [ Else [ elsestatements ] ]

End If If condition Then [ statements ] [ Else


elsestatements ]

Ejemplo If
Dim Number, Digits As Integer Dim MyString As String Number = 53 ' Inicializa variable. If Number < 10 Then Digits = 1 ElseIf Number < 100 Then Digits = 2 Else Digits = 3 End If If Digits = 1 Then MyString = "One" Else MyString = "More than one"

Sentencia Select Case


Dim Number As Integer = 8 Select Number ' Evala nmero. Case 1 To 5 ' Nmero entre 1 y 5 Debug.WriteLine(Entre 1 y 5") Case 6, 7, 8 ' Nmero entre 6 y 8 Debug.WriteLine(Entre 6 y 8") Case 9 To 10 ' Nmero entre 9 y 10 Debug.WriteLine(Mayor que 8") Case Else ' Otros valores Debug.WriteLine(No entre 1 y 10") End Select

Sentencias iterativas (While)


Dim Counter As Integer = 0 While Counter < 20 Evaluar el valor de Counter. Counter += 1 ' Incrementar Counter. End While ' Finalizar cuando counter=20 Debug.WriteLine (Counter) ' Imprime 20

Sentencias iterativas (For)


Dim Words, Digit As Integer Dim MyString As String For Words = 10 To 1 Step -1 ' Realizar 10 repeticiones For Digit = 0 To 9 ' Otras 10 MyString = MyString & CStr(Digit) 'Aadir num a string Next Digit ' Incrementar counter MyString = MyString & " " ' Aadir un space. Next Words

Excepciones I
Module Test Sub F() Try G() Catch e As Exception Console.WriteLine("Exception in F: " & e.Message) e = New Exception("F") ' Relanzar excepcin. Throw e End Try End Sub

Excepciones II
Sub G() Throw New Exception("G") End Sub Sub Main() Try F() Catch e As Exception Console.WriteLine("Exception in Main: " & e.Message) End Try End Sub End Module

Delegates
Delegate Function DoubleFunc(x As Double) As Double Class A Private f As New DoubleFunc(AddressOf Square) Overloads Shared Function Square(x As Single) As Single Return x * x End Function Overloads Shared Function Square(x As Double) As Double Return x * x End Function End Class

Eventos
Public Class EventSource ' Declara un evento Public Event LogonCompleted(ByVal UserName As String) Sub CauseEvent() ' Lanza un evento despus de login correcto. RaiseEvent LogonCompleted(Deusto") End Sub End Class

Ejemplo complejo clases I


Interface ICustomerInfo ' Declaracin de una interfaz Property CustomerName() As String Sub UpdateCustomerStatus() Event UpdateComplete() End Interface

Ejemplo complejo clases II


Public Class CustomerInfo ' CustomerInfo implementa interfaz IcustomerInfo Implements ICustomerInfo Private CustomerNameValue As String ' Para guardar el valor de la propiedad Public Event UpdateComplete() Implements ICustomerInfo.UpdateComplete Public Property CustomerName() As String Implements _ ICustomerInfo.CustomerName Get Return CustomerNameValue End Get Set(ByVal Value As String) CustomerNameValue = Value ' Guarda el valor del atributo. End Set End Property Public Sub UpdateCustomerStatus() Implements _ ICustomerInfo.UpdateCustomerStatus ' Aadir cdigo para modificar estado cuenta ' Lanzar evento para indicar que este mtodo se ha ejecutado. RaiseEvent UpdateComplete() End Sub End Class

Ejemplo complejo clases III


Mtodos para probar clase Public Sub TestImplements() Dim Cust As New CustomerInfo() ' Asociar manejador para eventos lanzados por objeto Cust AddHandler Cust.UpdateComplete, AddressOf HandleUpdateComplete ' Asignar valor a la propiedad CustomerName Cust.CustomerName = Diego" ' Recuperar y visualizar valor propiedad MsgBox(Nombre cliente: " & Cust.CustomerName) ' Invoca UpdateCustomerStatus para lanzar evento UpdateComplete event. Cust.UpdateCustomerStatus() End Sub

Ejemplo complejo clases IV


Sub HandleUpdateComplete() ' Manejador de evento para UpdateComplete. MsgBox(Actualizacin completada.") End Sub

Sentencia Namespace
Declara el nombre de un espacio de nombres Namespace { name | name.name } [componenttypes ] End Namespace

componenttypes contiene enumeraciones, estructuras, interfaces, clases, mdulos, delegates y otros espacios de nombres similares a paquetes en Java

Ejemplo Namespaces
Declaracin namespaces anidados:
Namespace N1 ' Declara espacio de nombres N1. Namespace N2 ' Declara espacio de nombres N2 dentro de N1. Class A ' Declara una clase dentro de N1.N2. ' Aade una clase. End Class End Namespace End Namespace

Lo mismo en una sola lnea:


Namespace N1.N2 ' Declara dos espacios de nombres: N1 y N2. Class A ' Declara una clase dentro de N1.N2. ' Aade una clase aqu. End Class End Namespace

Procedimientos con Sub I


[ <attrlist> ] [{ Overloads | Overrides | Overridable | NotOverridable | MustOverride | Shadows | Shared }] [{ Public | Protected | Friend | Protected Friend | Private }] Sub name [(arglist)] [ Implements interface.definedname ] [ statements ] [ Exit Sub ] [ statements ] End Sub

Procedimientos con Sub II


Lista de atributos de este procedimiento Overloads Este procedimiento (mtodo) sobrecarga otro declarado en una clase base Overrides sobreescribe mtodo de clase base Overridable/NotOverridable mtodo puede [NO] ser sobrecargado MustOverride mtodo es abstracto, debe ser sobreescrito por clase que deriva Cada argumento en arglist tiene el siguiente formato:
[ <attrlist> ] [ Optional ] [{ ByVal | ByRef }] [ ParamArray ] argname[( )] [ As argtype ] [ = defaultvalue ]

Ejemplo Sub
' Procedure Sub procedure con dos argumentos. Sub SubComputeArea(ByVal Length As Double, ByVal Width As Double) Dim Area As Double ' Declara variable local. If Length = 0 Or Width = 0 Then ' Si algn argumento es 0, salir del procedure Exit Sub ' Exit Sub immediately. equivalente a Return End If Area = Length * Width ' Calcula rea del rectngulo. Debug.WriteLine(Area) ' Imprime valor de rea. End Sub

Sentencia Function
Sintxis similar a Sub pero devuelve un valor
' Procedure Sub con dos argumentos. Public Function CalcSum(ByVal ParamArray Args() As Double) As Double Dim I As Integer CalcSum = 0 If Args.Length <= 0 Then Exit Function ' No se han pasado args. For I = 0 To UBound(Args, 1) CalcSum += Args(I) Next I End Function ' Devuelve ltimo valor de CalcSum.

La funcin puede ser llamada como:


Dim ReturnedValue As Double ReturnedValue = CalcSum(4, 3, 2, 1) ' Args(0) = 4, Args(1) = 3, and so on.

Sentencias de compilacin condicional


Pueden aparecer en cualquier lugar en un mdulo.
Se ejecutan si ciertas condiciones se cumplen Se pueden tambin usar para hacer debugging de tu aplicacin, es la nica situacin en la que se ejecutan.

Hola Mundo en VB.NET


' fichero: hola.vb ' compilar: vbc hola.vb Imports System module Hello sub main() Console.WriteLine(Hola desde VB.NET) end sub end module

Compilando y ejecutando Hola Mundo


Para compilar y ejecutar desde lnea de comando:
Crear cdigo fuente usando un editor de texto y llamarlo hola.vb. Invocar el compilador, escribiendo el comando: vbc hola.vb Si no hay errores de compilacin, el compilador genera el fichero hola.exe Para ejecutar el comando escribir: hola

También podría gustarte