Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

44
Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

Transcript of Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Page 1: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Visual Basic.NET

Visual Basic.NET

Daniel A. SearaDirector Regional MSDNBuenos Aires – ARGENTINA

NDSoft

Page 2: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Objetivos• Introducción a Microsoft Visual

Basic .NETNuevos conceptosCambios

• Integración con .NET • Herramientas

Page 3: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Contenido• Sección 1: Conceptos generales• Sección 2: Características del

lenguaje• Sección 3: Integración con .Net• Sección 4: Uniendo las partes• Resumen

Page 4: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Sección 1: Generalidades

• Hacer el lenguaje aún más simple de utilizar ...al menos, más fácil de aprender

• Corregir algunas cosas del diseño• Agregar características de orientación a

objetos completa• Convertirlo en “ciudadano de primera” del

mundo .NET• ...restringiendo los cambios a lo

estrictamente necesario

Page 5: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Orientación a objetos• Herencia (Inheritance)• Sobrecarga (Overloading)• Interfaces• Miembros Compartidos• Constructores e inicializadores

Sub New()

anObject = New Class(“Data”, data)

• Eventos orientados a objetos

Page 6: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Conceptos de Herencia• Reutilización

Composición (Tiene-un)MiForm Tiene-un Control

Herencia (Es-un)MiForm Es-un EntryForm

• Construyendo jerarquías de tipo

• Versionamiento• Polimorfismo

MiForm Control

Form

FormInic

MiForm

MiNuevoForm

Page 7: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Interfaces• Declaración de contrato entre las partes

Permite orientación a componentes

• Define estructura y semánticas para un propósito específico

• Definición abstracta de método y propiedades

• Soporta herencia (múltiple)• Ejemplo:Interface IPersonAge

Property YearOfBirth() As Integer

Function GetAgeToday() As Integer

End Interface

Page 8: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Sección 2: Características del lenguaje

• “Type System”• Clases y Herencia• Manejo de excepciones• Conceptos de eventos• Cambios

Page 9: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Type System• Usa el Sistema de Tipos Comunes de.NET

No se necesitan conversiones (marshalling) entre lenguajes

• Cada tipo puede ser un valor o una referencia Tipos de valores:

Primitivas, enumeradores, estructuras Referencias:

Clases, módulos, interfaces, vectores, delegados, y cadenas

Los objetos pueden contener ambasTODO hereda implícitamente de

System.ObjectSystem.Object

Page 10: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Tipos Primitivos• Enteros

Byte (8 bits), Short (16 bits) Integer (32 bits), Long (64 bits)

• De Punto flotante Single (4 bytes), Double (8 bytes)

• Numéricos exactos Decimal (28 digitos) (reemplaza Currency)

• Boolean, Date, Char• String (¡Tipo por referencia!)• Bytes con signo, y enteros sin signo no son

soportados

Page 11: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Enumeradores• Nombre simbólico de un conjunto de

valores• Definidos específicamente• Basados en enteros

Byte, Short, Integer, o LongPor defecto, Integer

• Ejemplo:

Enum Color As Byterojoverdeazul

End Enum

Enum Color As Byterojoverdeazul

End Enum

Page 12: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Vectores• Derivan de la clase System.ArraySystem.Array• Definidos por tipo y tamaño

• Sintaxis declarativa

• El límite inferior siempre es cero • No se soporta tamaño fijo• La cantidad de dimensiones es fija

Dim anArray() As IntegerReDim anArray(10)

Dim OneDimension(10) As IntegerDim TwoDimensions(20,intVal) As Integer

Page 13: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Clases• Concepto para objetos: código

y datos• Las clases contienen

miembros:De datos: variables, constantesPropiedades: valores que se

acceden por métodos get/setMétodos: exponen funcionalidadEspeciales: eventos, delegados,

constructores, destructores

Page 14: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Herencia 1/2

• Clase base simple, pero con múltiples interfaces base

• Clases base abstractas

• Clases no heredables

Public Class DerivedClassInherits BaseClassImplements IBase1, IBase2...

End Class

Public MustInherit Class AbstractBase ...End Class

Public NotInheritable Class FinalClass...End Class

Page 15: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Herencia 2/2

• Sobrecarga Un método sobrecarga otro

Igual nombreDiferentes parámetros

• Sobre escritura Métodos que sobrescriben a otros con la

misma declaración

• NotOverridable, MustOverride Definen si deben o no pueden

sobrescribirse

• Acceso calificado MyClass, MyBase

Page 16: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

EjemploPublic Class CustomerInherits Person Implements ICustomer Private CustomerNo As String Public Property Customer As String Get Return CustomerNo End Get Set CustomerNo = Customer End SetEnd Property Public Overloads Sub New()End Sub Public Overloads Sub New(ByVal par as Integer) MyBase.New(par)End Sub Public Sub DoAny(ByVal c as Char) Implements ICustomer.DoAnyEnd SubEnd Class

Page 17: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Estructuras• Tipos definidos por el usuario

reemplazan Type• Clases “livianas”

Consisten de los mismos miembrosSon tipos de valor, en cambio las clases son

referenciasPueden implementar InterfacesNo pueden heredarse

Public Structure ClienteImplements ICstmr Public NroCliente, Nombre As String Public Sub New()End Sub Public Sub Hacer(ByVal c as Char) Implements ICstmr.HacerEnd SubEnd Structure

Page 18: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Accesibilidad• Cada miembro define su propia

accesibilidad Private

Sólo dentro del contexto donde se declara Protected (solo miembros de la clase)

Acceso adicional por clases derivadas Friend

Acceso desde el mismo Assembly Protected Friend

Protected + Friend Public

Sin restricciones

Page 19: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Propiedades• No es sólo almacenamiento

Pueden realizarse operaciones

• Se usan como miembros de datos

• No pueden indexarse

intVal = Sample.valPlus1

Public Class Sample Private val as Integer Public Property valPlus1() as Integer Get valPlus1 = val+1 End Get Set val = valPlus1-1 End Set End PropertyEnd Class

Page 20: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Manejo de Excepciones• No necesariamente son errores• Dos estilos: estructurados (SEH) y no

estructurados (UEH)• Sólo se permite un estilo por método• UEH se soporta por compatibilidad

para atrásOn Error, Resume, ErrorMicrosoft.VisualBasic.Information.Err

Page 21: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Manejo estructurado• Las excepciones son conceptos del

sistema Propagadas entre componentes

• Sintaxis:

Pueden definirse personalizadas Derivadas de System.ExceptionSystem.Exception

• y pueden dispararse con explícitamente Throw

Try <Algo riesgoso>Catch e As Exception <Recupero del error>Finally <Ejecutar en cualquier caso>End Try

Page 22: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Delegados• Punteros a funciones orientados a objetos• Pueden apuntar a un método en particular

de un objeto específico

Delegate Function CmpFunc(x As Integer, y As Integer) As Boolean

Public Function Cmp(x As Integer, y As Integer) As Boolean... (This function implemented in some class)End Function

Sub Sort(Sort As CmpFunc, ByRef IntArray() As Integer) ... If Sort.Invoke(IntArray(i), Value) Then ... Exchange values End If ...End Sub

Call Sort( new CmpFunc( AddressOf aObj.Cmp), AnArray)

Page 23: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Eventos• Soporta el estilo “tradicional”

WithEvents

• El .NET Framework expone un nuevo sistema de eventos Basado en delegados

• Transmitibles a muchos• Se vinculan dinámicamente

manejadores a los eventos AddHandler, RemoveHandler

• Muchos eventos pueden enviarse al mismo método

Private WithEvents mW As Marcador

Public Sub mW_MueveRaton(...) Handles mW.MouseHover

Page 24: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Simple, más consistente

• Declaraciones más “obvias”Visual Basic 6: Dim i,j as Integer

i es Variant, j es IntegerVisual Basic.NET: Dim i,j as Integer

Ambas son Integer• Las variables declaradas en un

bloque existen sólo dentro del mismo• No hay creación implícita

Debe usarse New

Page 25: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Más robusto• Control de Tipos estricto

Conversiones implícitas y explícitas

Option Strict

Option Explicit• Inicializadores• Los Parámetros opcionales DEBEN tener un

valor por defecto Sub Calcular(Optional ByVal param As Boolean = False)

Dim Base as CBaseDim Derivada as CDerivada = new CDerivada()

Base = Derivada

Page 26: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Mejor Rendimiento• Soporta “free threading”

Mejor respuesta

• Evaluación rápidaX = A And B AND (C OR D)

Page 27: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Algunos otros cambios• Siempre se usan paréntesis al llamar métodos

En todos los casos, Sub y Function, aún cuando no requieran argumentos

• Por defecto, los parámetros se pasan ByVal• Las propiedades son parámetros por

referencia Mantienen los cambios

• Gosub/Return no existen más• No hay tipo de dato por defecto• Operadores aritméticos de “llamada rápida”:

x += 7• Vinculación tardía

Page 28: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Finalización Determinista• Un objeto se destruye automáticamente

Cuando no se lo necesita más (Set a Nothing)

• Visual Basic.NET: No está disponible la cuenta de referencias

automáticas “detrás de la escena” Los objetos los destruye el “recolector de

residuos” (GC) cuando él lo dispone Los recursos pueden, virtualmente, mantenerse

“vivos” en forma permanente

• Una solución posible: Armar un esquema personalizado de cuenta de

uso

• ¡No mantener estado en los objetos!

Page 29: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Sección 3: Integración con .Net

• Common Language Runtime• Conceptos de Namespaces, Assemblies,

Módulos• “Free Threading”• “Reflection”• Atributos• “Windows Forms”• Herramientas

Page 30: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

El motor de ejecución común (CLR)

• Accede a los servicios de la Plataforma.NET

• Con interoperabilidad entre lenguajesIncluyendo Herencia

• Interoperabilidad con COM servicios de bajo nivelCOM-InteropP/InvokeLlamar código no administrado tiene sus

implicancias

Page 31: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Namespaces• Concepto Organizacional

Pueden y deben ser jerárquicos System.Reflection MiLib.Ayudas.Controles.Ingresos

• Un programa puede tener múltiples Namespaces declarados

• Los Namespaces pueden repartirse entre varios programas

• Importando namespaces Permite acceder a los tipos sin necesidad de

calificarlos completamente Se ubican a nivel del archivo

• Namespace global, sin nombre Tienen alcance para todo el programa

Namespace MyLib

...

End Namespace

Page 32: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Assemblies• Resultado de compilar tanto una .dll o

un .exe Puede ser en uno o más archivos

• El, archivo contiene la metadata (manifiesto) Descripción de sí mismo Descripción de los tipos implementados Referencias externas Información de versión Control de la seguridad Y más ...

Page 33: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Módulos• La más pequeña unidad a ser compilada• Contiene una o más clases o interfaces

El Sub Main() habitualmente tiene alcance de módulo

• Más de un módulo pueden compartir el mismo assembly El cual entonces, es un assembly multi-

archivo• Ejemplo:

Imports System Public Module Principal Sub Main() Console.WriteLine(“¡Hola mundo!") End Sub End Module

Page 34: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

“Free Threading”• Ejecuta múltiples tareas

simultáneamente Pueden compartirse objetos entre hilos

• Usa el operador AddressOf en el Sub para declarar

• El Sub no puede tener argumentos, ni devolver valores

• Es necesario sincronizar

Dim miThread As New Threading.thread(AddressOf MiSub)

miThread.Start()

miThread.Join()

Page 35: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Ejemplo

Dim Escritor As Thread = new Thread( _AddressOf UnObjeto.ThreadSub)

Dim Lector As Thread = new Thread( _AddressOf UnObjeto.ThreadSub)

...Escritor.Start()Lector.Start()Escritor.Join()Lector.Join()...Public Sub ThreadSub Monitor.Enter(Me) ‚Inicia un bloque de sincronización ... Monitor.Exit(Me) End Sub

Page 36: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Reflection• Mecanismo para obtener

información en tiempo de ejecuciónAssembliesTipos: clases, interfaces, métodos

• Provee vinculación tardía para la invocación de métodos

Page 37: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Atributos• Información adicional declarativa de un

elemento del programa• Es posible definir atributos personalizados

de clases

• Pueden obtenerse en tiempo de ejecución, a través de “reflection”

• Mejoran la funcionalidad del programa Brinda ayudas al ejecutor

Se usa como meta elementos

Public Class PersonFirstName Inherits AttributeEnd Class

Dim <PersonFirstName()> Vorname As StringDim <PersonFirstName()> PrimeiroNome As String

Public Function <WebMethod()> Hello As String ...

Page 38: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Windows® Forms• Nueva biblioteca de formularios, basada en

el.NET Framework• Para aplicaciones de escritorio• Servicios locales de usuario, para

aplicaciones en 3 capas

Cliente Windows Web Service

Basede

Datos

Form1.vb Regla de Negocio Obtener Pedido

Dataset

pedidos.xsdDataset

pedidos.xsdDataset Command

PedidoCmd

HTTP

XML

OLE DB

Page 39: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Compilador por línea de comando

• Compila fuentes Visual Basic a MSIL

• Tiene una multitud de opciones• Puede llamarse de cualquier entorno• Usa menos recursos que Visual Studio• Puede utilizarse con Nmake

Útil para proyectos de múltiples idiomas

Vbc /target:exe /out:myprogram.exe *.vb

Page 40: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Visual Studio.NET• Basado en el SDK del .NET Framewrok• Integración y funcionalidad mejoradas

Proyectos en varios lenguajes Un entorno (IDE) integrado para todos Herramientas integradas: Visual Modeler,

Adm. De Bases de Datos Integración perfecta de la ayuda: Ayuda

dinámica, IntelliSense®

• Mayor productividad para todo: Desarrollo rápido de aplicaciones Proyectos en gran escala

Page 41: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

De Visual Basic 6 a Visual Basic.NET

• Visual Basic.NET es el sucesor de Visual Basic 6...pero algunas cosas marcan diferencia

• Las clases de compatibilidad ayudan en la transiciónMicrosoft.VisualBasic se importa por

defectoClases que exponen funcionalidades de...

ColeccionesFunciones de Fecha/HoraMás

Page 42: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Visual Basic Upgrade Wizard

• Aplica los cambios automáticamente• Genera soluciones

Conversión de tiposVariant a ObjectInteger a Short, Long a IntegerType a StructureCurrency a Decimal

Vectores que comienzan en cero Reemplazo de los formularios por .NET

Windows Forms

• Recomendaciones para la actualización

Page 43: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Duwamish Books• Ejemplo de aplicación empresarial• “Buenas prácticas” en el diseño en múltiples

capas• Incluida en Visual Studio.NET• Es un buen comienzo para aprender

Visual Basic.NETASP.NETADO.NET

Page 44: Visual Basic.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Resumen• Grandes cambios para aprovechar

las ventajas del .NET Famework• Lenguaje modernizado y consistente• Características “heredadas”

finalmente se han eliminado• El código Visual Basic.NET puede

reutilizarse• Soporte para la migración