Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Basic.NET
Daniel A. Seara
Director Regional MSDN
Buenos Aires – ARGENTINA
NDSoft
Objetivos
• Introducción a Microsoft Visual Basic .NET
Nuevos conceptos
Cambios
• Integración con .NET
• Herramientas
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
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
Orientación a objetos
• Herencia (Inheritance)
• Sobrecarga (Overloading)
• Interfaces
• Miembros Compartidos
• Constructores e inicializadores
Sub New()
MiNuevoForm
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
Sección 2: Características
del lenguaje
• “Type System”
• Clases y Herencia
• Manejo de excepciones
• Conceptos de eventos
• Cambios
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.Object
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
Enumeradores
• Nombre simbólico de un conjunto de valores
• Definidos específicamente
• Basados en enteros
Byte, Short, Integer, o Long
Por defecto, Integer
• Ejemplo:
• Sobrecarga
Un método sobrecarga otro
Igual nombre
Diferentes 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
Ejemplo
Public Class Customer
Inherits Person
Implements ICustomer
Private CustomerNo As String
Public Property Customer As String
Get
Return CustomerNo
End Get
Set
CustomerNo = Customer
End Set
End 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.DoAny
End Sub
End Class
Estructuras
• Tipos definidos por el usuario
reemplazan Type
• Clases “livianas”
Consisten de los mismos miembros
Son tipos de valor, en cambio las clases son
referencias
Pueden implementar Interfaces
No pueden heredarse
Public Structure Cliente
Implements ICstmr
Public NroCliente, Nombre As String
Public Sub New()
End Sub
Public Sub Hacer(ByVal c as Char) Implements ICstmr.Hacer
End Sub
End Structure
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
Propiedades
• No es sólo almacenamiento
Pueden realizarse operaciones
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 Property
End Class
• No pueden indexarse
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
Manejo estructurado
• Las excepciones son conceptos del sistema
Propagadas entre componentes
• Sintaxis: Try
<Algo riesgoso>
Catch e As Exception
<Recupero del error>
Finally
<Ejecutar en cualquier caso>
End Try
Pueden definirse personalizadas
Derivadas de System.Exception
• y pueden dispararse con explícitamente
Throw
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
Option Strict
Option Explicit
• Inicializadores
• Los Parámetros opcionales DEBEN tener un valor
por defecto
Sub Calcular(Optional ByVal
param As Boolean = False)
Mejor Rendimiento
• Soporta “free threading”
Mejor respuesta
• Evaluación rápida
X = A And B AND (C OR D)
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
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!
Sección 3: Integración
con .Net
• Common Language Runtime
• Conceptos de Namespaces, Assemblies,
Módulos
• “Free Threading”
• “Reflection”
• Atributos
• “Windows Forms”
• Herramientas
El motor de ejecución común (CLR)
Public Function
Se usa <WebMethod()>
como meta elementos Hello As String
...
Dim <PersonFirstName()> Vorname As String
Dim <PersonFirstName()> PrimeiroNome As String
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
Form1.vb Regla de Negocio Base
HTTP Obtener Pedido OLE DB de
Dataset XML Datos
Dataset Dataset Command
pedidos.xsd pedidos.xsd PedidoCmd
Compilador por línea de comando