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

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

Embed Size (px)

Citation preview

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