Está en la página 1de 59

Visual Basic.

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

Objetivos
Introduccin a Microsoft Visual Basic .NET
Nuevos conceptos Cambios

Integracin con .NET Herramientas

Contenido
Seccin 1: Seccin 2: lenguaje Seccin 3: Seccin 4: Resumen Conceptos generales Caractersticas del Integracin con .Net Uniendo las partes

Seccin 1: Generalidades
Hacer el lenguaje an ms simple de utilizar
...al menos, ms fcil de aprender

Corregir algunas cosas del diseo Agregar caractersticas de orientacin a objetos completa Convertirlo en ciudadano de primera del mundo .NET ...restringiendo los cambios a lo estrictamente necesario

Orientacin 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
Reutilizacin
Composicin (TieneMiForm
Control

un)

MiForm Tiene-un Control

Herencia (Es-un)

Form

Construyendo jerarquas de tipo Versionamiento Polimorfismo

MiForm Es-un EntryForm

FormInic

MiForm

MiNuevoForm

Interfaces
Declaracin de contrato entre las partes
Permite orientacin a componentes

Define estructura y semnticas para un propsito especfico Definicin abstracta de mtodo y propiedades Soporta herencia (mltiple) Ejemplo: Interface IPersonAge

Property YearOfBirth() As Integer Function GetAgeToday() As Integer

End Interface

Seccin 2: Caractersticas 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)

Cada tipo puede ser un valor o una referencia


Tipos de valores:

entre lenguajes

Primitivas, enumeradores, estructuras


Referencias:

Clases, mdulos, interfaces, vectores, delegados, y cadenas


Los objetos pueden contener ambas

TODO hereda implcitamente de System.Object

Enteros

Tipos Primitivos

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

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

Numricos 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 simblico de un conjunto de valores Definidos especficamente Basados en enteros
Byte, Short, Integer, o Long Por defecto, Integer

Ejemplo:

Enum Color As Byte rojo verde azul End Enum

Vectores
Derivan de la clase System.Array Definidos por tipo y tamao
Dim OneDimension(10) As Integer Dim TwoDimensions(20,intVal) As Integer

Sintaxis declarativa
Dim anArray() As Integer ReDim anArray(10)

El lmite inferior siempre es cero No se soporta tamao fijo La cantidad de dimensiones es fija

Concepto para objetos: cdigo y datos Las clases contienen miembros:


De datos: variables, constantes Propiedades: valores que se

Clases

acceden por mtodos get/set Mtodos: exponen funcionalidad Especiales: eventos, delegados, constructores, destructores

Herencia

1/2

Clase base simple, pero con mltiples interfaces base


Public Class DerivedClass Inherits BaseClass Implements IBase1, IBase2 ... End Class

Clases base abstractas Clases no heredables

Public MustInherit Class AbstractBase ... End Class Public NotInheritable Class FinalClass ... End Class

Herencia
Sobrecarga

2/2

Un mtodo sobrecarga otro

Igual nombre Diferentes parmetros

Sobre escritura
Mtodos que sobrescriben a otros con la

misma declaracin

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

Tipos definidos por el usuario Clases livianas


reemplazan Type
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

Estructuras

Accesibilidad
Cada miembro define su propia accesibilidad
Private

Slo 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

No es slo 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

Propiedades

Se usan como miembros de datos No pueden indexarse


intVal = Sample.valPlus1

Manejo de Excepciones
No necesariamente son errores Dos estilos: estructurados (SEH) y no estructurados (UEH) Slo se permite un estilo por mtodo UEH se soporta por compatibilidad para atrs
On Error, Resume, Error Microsoft.VisualBasic.Information.Err

Manejo estructurado
Las excepciones son conceptos del sistema Sintaxis:
Propagadas entre componentes

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

y pueden dispararse con explcitamente


Throw

Pueden definirse personalizadas Derivadas de System.Exception

Delegados
Punteros a funciones orientados a objetos Pueden apuntar a un mtodo en particular de un objeto Delegate Function CmpFunc(x As Integer, y As Integer)especfico 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 Private WithEvents mW As Marcador
Public Sub mW_MueveRaton(...) Handles mW.MouseHover

El .NET Framework expone un nuevo sistema de eventos Transmitibles a muchos Se vinculan dinmicamente manejadores a los eventos Muchos eventos pueden enviarse al mismo mtodo
AddHandler, RemoveHandler Basado en delegados

Simple, ms consistente
Declaraciones ms 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 slo dentro del mismo No hay creacin implcita
Debe usarse New

Control de Tipos estricto

Ms robusto

Conversiones implcitas y explcitas


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

Option Strict

Inicializadores Los Parmetros opcionales DEBEN tener un valor por defecto


Sub Calcular(Optional ByVal

Option Explicit

param As Boolean = False)

Mejor Rendimiento
Soporta free threading
Mejor respuesta

Evaluacin rpida
X = A And B AND (C OR D)

Algunos otros cambios


Siempre se usan parntesis al llamar mtodos
En todos los casos, Sub y Function, an cuando

no requieran argumentos

Por defecto, los parmetros se pasan ByVal Las propiedades son parmetros por referencia
Mantienen los cambios

Gosub/Return no existen ms No hay tipo de dato por defecto Operadores aritmticos de llamada rpida:

Finalizacin Determinista
Un objeto se destruye automticamente
Cuando no se lo necesita ms (Set a Nothing)

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

automticas detrs 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 solucin posible:


Armar un esquema personalizado de cuenta de

uso

No mantener estado en los objetos!

Seccin 3: Integracin con .Net


Common Language Runtime Conceptos de Namespaces, Assemblies, Mdulos Free Threading Reflection Atributos Windows Forms Herramientas

El motor de ejecucin comn

(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 cdigo no administrado tiene sus

implicancias

Namespaces
Concepto Organizacional
Namespace MyLib

Un programa puede tener mltiples Namespaces declarados Los Namespaces pueden repartirse entre varios programas Importando namespaces
Permite acceder a los tipos sin necesidad de

Pueden y deben ser jerrquicos ... System.Reflection End Namespace MiLib.Ayudas.Controles.Ingresos

Namespace global, sin nombre


Tienen alcance para todo el programa

calificarlos completamente Se ubican a nivel del archivo

Assemblies
Resultado de compilar tanto una .dll o un .exe
Puede ser en uno o ms archivos

El, archivo contiene la metadata (manifiesto)


Descripcin de s mismo Descripcin de los tipos implementados Referencias externas Informacin de versin Control de la seguridad Y ms ...

Mdulos
La ms pequea unidad a ser compilada Contiene una o ms clases o interfaces
El Sub Main() habitualmente tiene alcance

Ms de un mdulo pueden compartir el mismo assembly


archivo Imports System Ejemplo: Public Module Principal Sub Main() Console.WriteLine(Hola mundo!") End Sub End Module
El cual entonces, es un assembly multi-

de mdulo

Free Threading
Ejecuta mltiples tareas simultneamente
Pueden compartirse objetos entre hilos

Usa el operador AddressOf en el Sub para declarar Dim miThread As New Threading.thread(AddressOf
miThread.Start() miThread.Join()

MiSub)

El Sub no puede tener argumentos, ni devolver valores Es necesario sincronizar

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 sincronizacin ... Monitor.Exit(Me) End Sub

Reflection
Mecanismo para obtener informacin en tiempo de ejecucin
Assemblies Tipos: clases, interfaces, mtodos

Provee vinculacin tarda para la invocacin de mtodos

Informacin adicional declarativa de un elemento del programa Es posible definir atributos personalizados de clases
Public Class PersonFirstName Inherits Attribute End Class

Atributos

Pueden obtenerse en tiempo de ejecucin, a travs de reflection Mejoran la funcionalidad del programa
Public Function <WebMethod()> Hello As String ...
Se usa como meta elementos Brinda ayudas al ejecutor

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 HTTP Regla de Negocio Obtener Pedido Dataset


pedidos.xsd

Form1.vb Dataset
pedidos.xsd

OLE DB

XML

Dataset Command PedidoCmd

Base de Datos

Compilador por lnea de comando


Compila fuentes Visual Basic a Vbc /target:exe /out:myprogram.exe *.vb MSIL Tiene una multitud de opciones Puede llamarse de cualquier entorno Usa menos recursos que Visual Studio Puede utilizarse con Nmake

Visual Studio.NET
Basado en el SDK del .NET Framewrok Integracin y funcionalidad mejoradas
Proyectos en varios lenguajes Un entorno (IDE) integrado para todos Herramientas integradas: Visual Modeler,

Adm. De Bases de Datos Integracin perfecta de la ayuda: Ayuda dinmica, IntelliSense

Mayor productividad para todo:


Desarrollo rpido de aplicaciones Proyectos en gran escala

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 transicin


Microsoft.VisualBasic se importa por

defecto Clases que exponen funcionalidades de...


Colecciones Funciones de Fecha/Hora Ms

Visual Basic Upgrade Wizard


Aplica los cambios automticamente Genera soluciones
Conversin de tipos
Variant a Object Integer a Short, Long a Integer Type a Structure Currency a Decimal

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

Windows Forms

Recomendaciones para la actualizacin

Seccin 4: Uniendo las partes


Sample Walkthrough
Exploring Visual Basic.NET Features in

Duwamish Books

Duwamish Books
Ejemplo de aplicacin empresarial Buenas prcticas en el diseo en mltiples capas Incluida en Visual Studio.NET Es un buen comienzo para aprender
Visual Basic.NET ASP.NET ADO.NET

Resumen
Grandes cambios para aprovechar las ventajas del .NET Famework Lenguaje modernizado y consistente Caractersticas heredadas finalmente se han eliminado El cdigo Visual Basic.NET puede reutilizarse Soporte para la migracin

Questions?

Duwamish Books
A Sample Application for Microsoft .NET

Installing the Sample

1/2

Install the "Enterprise Samples" with Visual Studio.NET Location of the Visual Basic Version
Directory

.\EnterpriseSamples\DuwamishOnline VB

Installation Tasks
Check the prerequisites Microsoft Windows 2000 Server; Microsoft SQL Server 2000 with English Query optional and supported

Installing the Sample

2/2

The installation wizard will guide you Defaults should be OK for almost everybody. Setup will install database, Web site, and code After installation is complete:
File/Open Solution with the

Duwamish.sln file Can build the sample with

Duwamish Architecture Overview User / Browser ASP.NET


IIS Web SystemFramework ADO.NE T Common.Data BusinessFacade BusinessRules DataAccess

Database

Duwamish7.Common

Common Components

Contains systems configuration

options Contains common data definitions (classes)


subnamespace Duwamish.Common.Data

"Internal" data representation for

Book, Category, Customer, OrderData

Duwamish7.SystemFramework
Diagnostics utilities

Duwamish7.DataAccess
Contains all database-related code Uses ADO.NET architecture
Using SQL Server managed

provider Shows DataSet, DataSetCommand usage

Optimized for performance by using stored procs

Duwamish7.BusinessRules
Implements all business rules
Validation of business objects (for

examle, Customer EMail) Updating business objects Calculations (Shipping Cost, Taxes)

All data access performed through DataAccess

Duwamish7.BusinessFacade
Implements logical business subsystems
CustomerSystem: Profile

management OrderSystem: Order management ProductSystem: Catalog management

Reads data through DataAccess Data validated and updated using BusinessRules

Duwamish7.Web
Implements the user interface for Web access Uses ASP.NET architecture
Employs Web Forms model Uses code behind forms Manages state Uses custom Web controls

All functionality accessed through BusinessFacade

Demo: Duwamish in Action

Shop at Duwamish Online.NET

Exploring Duwamish VB
Exploring Visual Basic.NET Features in Duwamish

Extending Duwamish VB
Extending Duwamish VB

Legal Notices
Unpublished work. 2001 Microsoft Corporation. All rights reserved. Microsoft, IntelliSense, Visual Basic, Visual Studio, and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. The names of actual companies and products mentioned herein may be the trademarks of their respective owners.

También podría gustarte