5 Vb.Net

2,120 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,120
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
120
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

5 Vb.Net

  1. 1. VB.NET Dr. Diego Lz. de Ipiña Gz. de Artaza http://paginaspersonales.deusto.es/dipina
  2. 2. <ul><li>En Visual Basic, un programa tiene los bloques estándar en todo programa. </li></ul><ul><li>El código de Visual Basic se guarda en módulos de proyecto </li></ul><ul><ul><li>Proyecto se compone de ficheros que se compilan en una aplicación </li></ul></ul><ul><li>Todo código en VB.NET debe seguir la siguiente secuencia: </li></ul><ul><ul><li>Sentencias Option </li></ul></ul><ul><ul><li>Sentencias Imports </li></ul></ul><ul><ul><li>Procedimiento Main </li></ul></ul><ul><ul><li>Sentencias Class , Module , y Namespace </li></ul></ul><ul><ul><li>Además un programa puede contener sentencias de compilación condicionales. </li></ul></ul><ul><li>Si el código introducido no sigue este orden se producen errores de compilación. </li></ul>El lenguaje VB.NET
  3. 3. <ul><li>Establecen reglas para el código subsiguiente, ayudando a prevenir errores sintácticos y de lógica </li></ul><ul><ul><li>La sentencia Option Explicit asegura que todas las variables están declaradas y escritas correctamente </li></ul></ul><ul><ul><ul><li>Evita que todas las variables declaradas sean de tipo Object </li></ul></ul></ul><ul><ul><ul><li>Las variables se declaran usando Dim , Private , Public , or ReDim </li></ul></ul></ul><ul><ul><ul><li>Option Explicit On ‘ Fuerza la declaración explícita de variables </li></ul></ul></ul><ul><ul><ul><li>Dim MyVar As Integer ' Declara variable. </li></ul></ul></ul><ul><ul><ul><li>MyInt = 10 ‘ Genera error al no estar la variable declarada </li></ul></ul></ul><ul><ul><ul><li>MyVar = 10 ' Variable declarada por lo que no genera error </li></ul></ul></ul>Sentencias Option I
  4. 4. <ul><ul><li>La sentencia Option Strict ayuda a prevenir errores lógicos y de perdida de datos que ocurren cuando se trabaja con variables de diferente tipo. </li></ul></ul><ul><ul><ul><li>Prohíbe conversiones implícitas </li></ul></ul></ul><ul><ul><ul><li>Option Strict On ‘ Fuerza a declarar variables también </li></ul></ul></ul><ul><ul><ul><li>Dim MyVar As Integer ' Declara variables. </li></ul></ul></ul><ul><ul><ul><li>MyVar = 1000 ' </li></ul></ul></ul><ul><ul><ul><li>‘ Intento de convertir Integer a float genera error </li></ul></ul></ul><ul><ul><ul><li>MyVar = 1234567890.987654321 </li></ul></ul></ul>Sentencias Option II
  5. 5. <ul><ul><li>La sentencia Option Compare establece la manera en la que los strings son comparados, por formato binario (basado en la representación binaria interna de los datos) o textual (case insensitive). </li></ul></ul><ul><ul><li>‘ Establece el modo de comparación a binario </li></ul></ul><ul><ul><li>Option Compare Binary ' Esto es, &quot;AAA&quot; es menor que &quot;aaa&quot;. </li></ul></ul><ul><ul><li>' Establece el modo de comparación a textual </li></ul></ul><ul><ul><li>Option Compare Text ' Esto es, &quot;AAA&quot; es igual a &quot;aaa &quot; </li></ul></ul>Sentencias Option III
  6. 6. <ul><li>Permiten nombrar clases y otros tipos definidos en los espacios de nombres importados (o assemblies) sin tener que especificar el cámino absoluto a ellas. </li></ul><ul><ul><li>Imports [ aliasname = ] namespace o </li></ul></ul><ul><ul><li>Imports [ aliasname = ] namespace.element </li></ul></ul><ul><ul><li>Si no se especifica alias los elementos definidos en el namespace se referencian sin prefijo y si no prefijados con el alias </li></ul></ul><ul><ul><li>Se pueden especificar varios Imports en un programa y deben de aparecer antes de las sentencias Module y Class </li></ul></ul><ul><ul><li>Imports Str = Microsoft.VisualBasic.Strings </li></ul></ul><ul><ul><li>' Coloca Imports al comienzo de tu programa </li></ul></ul><ul><ul><li>Class MyClass1 </li></ul></ul><ul><ul><li>Sub ShowHello() </li></ul></ul><ul><ul><li>MsgBox(Str.Left(“Hola&quot;, 5)) ' Visualiza &quot;Hola&quot; </li></ul></ul><ul><ul><li>End Sub </li></ul></ul><ul><ul><li>End Class </li></ul></ul>Sentencias Imports
  7. 7. <ul><li>“ Punto de comienzo&quot; de una aplicación — el primer procedimiento accedido cuando ejecutas tu código. </li></ul><ul><li>Algunas de las tareas que puedes llevar a cabo dentro del código del Main : </li></ul><ul><ul><li>Cargar un formulario </li></ul></ul><ul><ul><li>Averiguar si alguna copia de tu programa existe </li></ul></ul><ul><ul><li>Abrir una conexión a una base de datos </li></ul></ul><ul><li>Cuatro variedades: </li></ul><ul><ul><li>Sub Main()  la más común </li></ul></ul><ul><ul><li>Sub Main(ByVal CmdArgs() As String) </li></ul></ul><ul><ul><li>Function Main() As Integer </li></ul></ul><ul><ul><li>Function Main(ByVal CmdArgs() As String) As Integer </li></ul></ul>Procedimiento Main
  8. 8. <ul><li>La mayoría del código de un aplicación VB lo definen las clases y los módulos </li></ul><ul><ul><li>Contienen sentencias: </li></ul></ul><ul><ul><ul><li>Sub </li></ul></ul></ul><ul><ul><ul><li>Function </li></ul></ul></ul><ul><ul><ul><li>Event </li></ul></ul></ul><ul><ul><ul><li>Declaraciones de variables y otras partes del código necesarias para hacer que tu aplicación se ejecute. </li></ul></ul></ul>Sentencias Class , Module y Namespace
  9. 9. <ul><li>Declara el nombre de una clase, así como la definición de variables, propiedades, eventos y métodos que la componen </li></ul><ul><ul><li>[ < attrlist > ] [ Public | Private | Protected | Friend | Protected Friend ] [ Shadows ] [ MustInherit | NotInheritable ] </li></ul></ul><ul><ul><li>Class  name </li></ul></ul><ul><ul><li>[ Inherits classname  ] </li></ul></ul><ul><ul><li>[ Implements interfacenames ] </li></ul></ul><ul><ul><li>[ statements ] </li></ul></ul><ul><ul><li>End Class </li></ul></ul>Sentencia Class I
  10. 10. <ul><ul><li>Public  sin restricciones de acceso </li></ul></ul><ul><ul><li>Private  entidad accesible sólo en contexto en que es declarada </li></ul></ul><ul><ul><li>Protected  accesible dentro de una clase o en hija de ella </li></ul></ul><ul><ul><li>Friend  accesible sólo dentro del programa que contiene la declaración de la entidad </li></ul></ul><ul><ul><li>MustInherit  no se pueden crear instancias de esta clase </li></ul></ul><ul><ul><li>NotInheritable  no se permite más herencia </li></ul></ul><ul><ul><li>name  nombre de la clase </li></ul></ul><ul><ul><li>Inherits  esta clase deriva de classname </li></ul></ul><ul><ul><li>classname  (requerido) nombre de la clase de la que deriva </li></ul></ul><ul><ul><li>Implements  esta clase implementa una interfaz </li></ul></ul><ul><ul><li>interfacename  nombre de la interfaz derivada </li></ul></ul>Sentencia Class II
  11. 11. <ul><ul><li>statements  variables, propiedades, eventos y métodos dentro de la clase </li></ul></ul><ul><ul><li>End Class  termina un bloque de clase </li></ul></ul><ul><ul><li>Cada atributo en attrlist tiene la siguiente sintáxis y partes: </li></ul></ul><ul><ul><li>attrname [ ( { attrargs | attrinit } ) ], attrlist Parts </li></ul></ul><ul><ul><ul><li>attrname  (requerido) nombre del atributo </li></ul></ul></ul><ul><ul><ul><li>attrargs  (o ptional) lista de argumentos del atributo </li></ul></ul></ul><ul><ul><ul><li>attrinit  (o pcional) lista de campos o propiedades para inicializar el atributo, si hay varios separados por comas </li></ul></ul></ul>Sentencia Class III
  12. 12. <ul><li>Clases sin modificador de acceso son declaradas Friend por defecto </li></ul><ul><li>Todo elemento dentro de una clase es por defecto público (métodos) excepto campos y constantes que son privados </li></ul><ul><li>Ejemplos: </li></ul><ul><li>Public Class ThisClass </li></ul><ul><li>' [declaración de variable, propiedad, método y eventos] </li></ul><ul><li>End Class </li></ul>Sentencia Class IV
  13. 13. <ul><li>Ejemplo simple herencia: </li></ul><ul><li>Public Class ThisClass </li></ul><ul><li>Inherits AnotherClass </li></ul><ul><li>' Añade código para sobreescribir, sobrecargar o extender miembros </li></ul><ul><li>' hereda de AnotherClass. </li></ul><ul><li>...' Declaraciones de variable, propiedad, método, y eventos </li></ul><ul><li>End Class </li></ul>Ejemplos declaración clases
  14. 14. [ < 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 Declaración de Propiedad
  15. 15. <ul><li>Dim  se usa para declarar espacio de almacenamiento para variables </li></ul><ul><li>Ejemplos de uso: </li></ul><ul><li>Dim AnyValue, MyValue As Object </li></ul><ul><li>' Los números se inicializan por defecto a 0. </li></ul><ul><li>Dim Number As Integer </li></ul><ul><li>Dim FirstNumber, SecondNumber, ThirdNumber As Integer </li></ul><ul><li>Dim MyDate As Date, MyValue As Single, MySwitch As Boolean </li></ul><ul><li>' DayArray es un array de 51 Objects indexados de 0 a 50. </li></ul><ul><li>Dim DayArray(50) As Object </li></ul><ul><li>' Matrix2 es un array bidimensional de tipo entero </li></ul><ul><li>Dim Matrix2(3, 4) As Integer </li></ul>Declaración de variable
  16. 16. <ul><li>Const  define constantes </li></ul><ul><li>Ejemplos de uso: </li></ul><ul><li>Const MyConst As Integer = 459 </li></ul><ul><li>' Declara una constante pública de tipo string </li></ul><ul><li>' disponible sólo a nivel de clase </li></ul><ul><li>Public Const MyString As String = &quot;HELP&quot; </li></ul><ul><li>' Declara una constante privada de tipo Integer </li></ul><ul><li>Private Const MyInt As Integer = 5 </li></ul>Declaración de constantes
  17. 17. <ul><li>Sintáxis: </li></ul><ul><li>If condition [ Then ] </li></ul><ul><li>[ statements ] </li></ul><ul><li>[ ElseIf elseifcondition [ Then ] </li></ul><ul><li>[ elseifstatements ] ] </li></ul><ul><li>[ Else </li></ul><ul><li>[ elsestatements ] ] </li></ul><ul><li>End If ó </li></ul><ul><li>If condition Then [ statements ] [ Else elsestatements ] </li></ul>Sentencias If
  18. 18. 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 = &quot;One&quot; Else MyString = &quot;More than one&quot; Ejemplo If
  19. 19. Dim Number As Integer = 8 Select Number ' Evalúa número. Case 1 To 5 ' Número entre 1 y 5 Debug.WriteLine(“Entre 1 y 5&quot;) Case 6, 7, 8 ' Número entre 6 y 8 Debug.WriteLine(“Entre 6 y 8&quot;) Case 9 To 10 ' Número entre 9 y 10 Debug.WriteLine(“Mayor que 8&quot;) Case Else ' Otros valores Debug.WriteLine(“No entre 1 y 10&quot;) End Select Sentencia Select … Case
  20. 20. 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 ( While )
  21. 21. 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) 'Añadir num a string Next Digit ' Incrementar counter MyString = MyString & &quot; &quot; ' Añadir un space. Next Words Sentencias iterativas ( For )
  22. 22. Module Test Sub F() Try G() Catch e As Exception Console.WriteLine(&quot;Exception in F: &quot; & e.Message) e = New Exception(&quot;F&quot;) ' Relanzar excepción. Throw e End Try End Sub Excepciones I
  23. 23. Sub G() Throw New Exception(&quot;G&quot;) End Sub Sub Main() Try F() Catch e As Exception Console.WriteLine(&quot;Exception in Main: &quot; & e.Message) End Try End Sub End Module Excepciones II
  24. 24. 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 Delegate s
  25. 25. Public Class EventSource ' Declara un evento Public Event LogonCompleted(ByVal UserName As String) Sub CauseEvent() ' Lanza un evento después de login correcto. RaiseEvent LogonCompleted(“Deusto&quot;) End Sub End Class Eventos
  26. 26. Interface ICustomerInfo ' Declaración de una interfaz Property CustomerName() As String Sub UpdateCustomerStatus() Event UpdateComplete() End Interface Ejemplo complejo clases I
  27. 27. 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 ' Añadir código para modificar estado cuenta ' Lanzar evento para indicar que este método se ha ejecutado. RaiseEvent UpdateComplete() End Sub End Class Ejemplo complejo clases II
  28. 28. ‘ Métodos 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&quot; ' Recuperar y visualizar valor propiedad MsgBox(“Nombre cliente: &quot; & Cust.CustomerName) ' Invoca UpdateCustomerStatus para lanzar evento UpdateComplete event. Cust.UpdateCustomerStatus() End Sub Ejemplo complejo clases III
  29. 29. Sub HandleUpdateComplete() ' Manejador de evento para UpdateComplete. MsgBox(“Actualización completada.&quot;) End Sub Ejemplo complejo clases IV
  30. 30. <ul><li>Declara el nombre de un espacio de nombres </li></ul><ul><ul><li>Namespace { name | name.name } </li></ul></ul><ul><ul><li>[ componenttypes ] </li></ul></ul><ul><ul><li>End Namespace </li></ul></ul><ul><ul><li>componenttypes contiene enumeraciones, estructuras, interfaces, clases, módulos, delegates y otros espacios de nombres </li></ul></ul><ul><ul><li>similares a paquetes en Java </li></ul></ul>Sentencia Namespace
  31. 31. <ul><li>Declaración namespaces anidados: </li></ul><ul><li>Namespace N1 ' Declara espacio de nombres N1. </li></ul><ul><li>Namespace N2 ' Declara espacio de nombres N2 dentro de N1. </li></ul><ul><li>Class A ' Declara una clase dentro de N1.N2. </li></ul><ul><li>' Añade una clase. </li></ul><ul><li>End Class </li></ul><ul><li>End Namespace </li></ul><ul><li>End Namespace </li></ul><ul><li>Lo mismo en una sola línea: </li></ul><ul><li>Namespace N1.N2 ' Declara dos espacios de nombres: N1 y N2. </li></ul><ul><li>Class A ' Declara una clase dentro de N1.N2. </li></ul><ul><li>' Añade una clase aquí. </li></ul><ul><li>End Class </li></ul><ul><li>End Namespace </li></ul>Ejemplo Namespaces
  32. 32. [  < 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 I
  33. 33. <ul><li>Lista de atributos de este procedimiento </li></ul><ul><li>Overloads  Este procedimiento (método) sobrecarga otro declarado en una clase base </li></ul><ul><li>Overrides  sobreescribe método de clase base </li></ul><ul><li>Overridable/NotOverridable  método puede [NO] ser sobrecargado </li></ul><ul><li>MustOverride  método es abstracto, debe ser sobreescrito por clase que deriva </li></ul><ul><li>Cada argumento en arglist tiene el siguiente formato: </li></ul><ul><li>[  < attrlist >  ] [ Optional ] [{ ByVal  | ByRef  }] [  ParamArray  ] argname[ ( ) ] [  As  argtype ] [  =  defaultvalue ] </li></ul>Procedimientos con Sub II
  34. 34. ' 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 algún argumento es 0, salir del procedure Exit Sub ' Exit Sub immediately. ‘ equivalente a Return End If Area = Length * Width ' Calcula área del rectángulo. Debug.WriteLine(Area) ' Imprime valor de área. End Sub Ejemplo Sub
  35. 35. <ul><li>Sintáxis similar a Sub pero devuelve un valor </li></ul><ul><li>' Procedure Sub con dos argumentos. </li></ul><ul><li>Public Function CalcSum ( ByVal ParamArray Args() As Double ) As Double </li></ul><ul><li>Dim I As Integer </li></ul><ul><li>CalcSum = 0 </li></ul><ul><li>If Args.Length <= 0 Then Exit Function ' No se han pasado args. </li></ul><ul><li>For I = 0 To UBound(Args, 1) </li></ul><ul><li>CalcSum += Args(I) </li></ul><ul><li>Next I </li></ul><ul><li>End Function ' Devuelve último valor de CalcSum. </li></ul><ul><li>La función puede ser llamada como: </li></ul><ul><li>Dim ReturnedValue As Double </li></ul><ul><li>ReturnedValue = CalcSum(4, 3, 2, 1) </li></ul><ul><li>' Args(0) = 4, Args(1) = 3, and so on. </li></ul>Sentencia Function
  36. 36. <ul><li>Pueden aparecer en cualquier lugar en un módulo. </li></ul><ul><ul><li>Se ejecutan si ciertas condiciones se cumplen </li></ul></ul><ul><ul><li>Se pueden también usar para hacer debugging de tu aplicación, es la única situación en la que se ejecutan. </li></ul></ul>Sentencias de compilación condicional
  37. 37. 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
  38. 38. <ul><li>Para compilar y ejecutar desde línea de comando: </li></ul><ul><ul><li>Crear código fuente usando un editor de texto y llamarlo hola.vb. </li></ul></ul><ul><ul><li>Invocar el compilador, escribiendo el comando: vbc hola.vb </li></ul></ul><ul><ul><li>Si no hay errores de compilación, el compilador genera el fichero hola.exe </li></ul></ul><ul><ul><li>Para ejecutar el comando escribir: hola </li></ul></ul>Compilando y ejecutando Hola Mundo

×