Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina...

31
Visual Visual Basic.NET Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina [email protected]

Transcript of Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina...

Page 1: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Visual Visual Basic.NETBasic.NET

Daniel A. SearaNDSoft Consultoría y DesarrolloDirector Regional MSDN [email protected]

Page 2: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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 3: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Orientación a objetos

• Herencia (Inheritance)

• Sobrecarga (Overloading)

• Interfaces

• Miembros Compartidos

• Constructores e inicializadores– Sub New()

– unObjeto = New Class(“Arg”, datos)

• Eventos orientados a objetos

Page 4: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Conceptos de Herencia

• Reutilización– Composición (Tiene-un)

• MiForm Tiene-un Control

MiForm Control

Form

FormInic

MiForm

MiNuevoForm

– Herencia (Es-un)• MiForm Es-un FormInic

• Construyendo jerarquías de tipo

• Versionamiento• Polimorfismo

Page 5: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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 IPersonaEdad Property Nacimiento() As Integer Function TraerEdadActual() As IntegerEnd Interface

Page 6: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Características del lenguaje

• “Type System”

• Clases y Herencia

• Manejo de excepciones

• Conceptos de eventos

• Cambios

Page 7: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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 ambas• TODO hereda implícitamente de

System.ObjectSystem.Object

Page 8: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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 9: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Enumeradores

• Nombre simbólico de un conjunto de valores

• Definidos específicamente

• Basados en enteros– Byte, Short, Integer, o Long– Por defecto, Integer

• Ejemplo: Enum Color As Byterojoverdeazul

End Enum

Page 10: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Vectores• Derivan de la clase System.ArraySystem.Array

• Definidos por tipo y tamaño

Dim UnVector() As IntegerReDim UnVector(10)

Dim UnaDimension(10) As IntegerDim DosDimensions(20,intVal) As Integer

• Sintaxis declarativa

• El límite inferior siempre es cero

• No se soporta tamaño “fijo” (4 to 12)

• La cantidad de dimensiones es fija

Page 11: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Clases

• Concepto para objetos: código y datos

• Las clases contienen miembros:– De datos: variables, constantes– Propiedades: valores que se acceden

por métodos get / set– Métodos: exponen funcionalidad– Especiales: eventos, delegados,

constructores, destructores

Page 12: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Herencia 1/2

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

Public Class ClaseDerivadaInherits ClaseBaseImplements IBase1, IBase2...

End Class

Public MustInherit Class ClaseAbstracta ...End Class

Public NotInheritable Class ClaseFinal...End Class

• Clases base abstractas

• Clases no heredables

Page 13: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Herencia 2/2

• Sobrecarga– Un método sobrecarga otro

• Igual nombre• Diferentes parámetros

• Sobre escritura– Métodos que sobrescriben a otros de una

clase heredada, con la misma declaración

• NotOverridable, MustOverride– Definen si deben o no pueden sobrescribirse

• Acceso calificado– MyClass, MyBase

Page 14: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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 15: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Propiedades

• No es sólo almacenamiento– Pueden realizarse

operaciones

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

• Se usan como miembros de datos

• No pueden indexarse

Page 16: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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ás– On Error, Resume, Error– Microsoft.VisualBasic.Information.Err

Page 17: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Manejo estructurado

• Las excepciones son conceptos del sistema– Propagadas entre componentes aún de distintos

lenguajes

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

– Pueden definirse personalizadas– Derivadas de System.ExceptionSystem.Exception

• y pueden dispararse explícitamente con – Throw

Page 18: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Eventos• Soporta el estilo “tradicional” WithEvents

Private WithEvents mW As MarcadorPublic Sub mW_MueveRaton(...) Handles mW.MouseHover

• 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

Page 19: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Simple, más consistente

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

i es Variant, j es Integer– Visual 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 20: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Más robusto• Control de Tipos estricto

– Conversiones implícitas y explícitasDim Base as CBaseDim Derivada as CDerivada = new CDerivada()Base = Derivada

– Option Strict

– Option Explicit

• Inicializadores• Los Parámetros opcionales DEBEN tener un

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

Page 21: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Mejor Rendimiento

• Soporta “free threading”– Mejor respuesta– ¡Pero se deben conocer muy bien los

mecanismos de manejo de hilos de ejecución!

• Evaluación rápida– X = A And B AndAlso (C OR D)

• Si A y B Son Verdad, no se evalúan C ni D

Page 22: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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 23: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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 24: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Integración con .Net

• Common Language Runtime

• Conceptos de Namespaces, Assemblies, Módulos

• “Free Threading”

• Atributos

• Visual Studio.Net

Page 25: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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

• Accede a los servicios de la Plataforma.NET

• Con interoperabilidad entre lenguajes– Incluyendo Herencia

• Interoperabilidad con COM servicios de bajo nivel– COM-Interop– P/Invoke– Llamar código no administrado tiene sus

implicancias

Page 26: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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 27: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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 28: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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 29: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

Atributos

• Información adicional declarativa de un elemento del programa

• Es posible definir atributos personalizados de clases

Public Class PersonFirstName Inherits AttributeEnd Class

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

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

• Mejoran la funcionalidad del programa– Brinda ayudas al ejecutor

Page 30: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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: Visio, 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 31: Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo Director Regional MSDN Argentina daniels@ndsoft.com.ar.

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