Semana 1 - Vb.net
-
Upload
monica-saavedra-caballero -
Category
Documents
-
view
36 -
download
1
Transcript of Semana 1 - Vb.net
Objetivos• Introducción a Microsoft Visual
Basic .NETNuevos conceptosCambios
• 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()
anObject = New Class(“Data”, data)
• Eventos orientados a objetos
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
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 ambasTODO hereda implícitamente de
System.ObjectSystem.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 LongPor defecto, Integer
• Ejemplo:
Enum Color As Byterojoverdeazul
End Enum
Enum Color As Byterojoverdeazul
End Enum
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
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
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
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
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
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
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
• 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
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
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
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)
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
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
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
Mejor Rendimiento• Soporta “free threading”
Mejor respuesta
• Evaluación rápidaX = 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)
• 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
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
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 ...
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
“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()
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
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
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 ...
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
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
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
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