Desarrollo Aplicaciones Windows
con Microsoft Visual Studio
Conceptos Fundamentales
La
Programacin Orientada a Objetos (POO)
es un paradigma de programacin que define
los programas en trminos de "clases de
objetos
Propsito
Crear y utilizar objetos que colaboren entre s
para realizar tareas.
Esto
permite hacer los programas y
componentes ms fciles de escribir,
mantener y reutilizar.
Caractersticas
Abstraccin.
Encapsulamiento.
Herencia.
Polimorfismo.
Abstraccin
Capacidad
del ser humano para entender
una situacin y extraer elementos
excluyendo detalles irrelevantes.
Encapsulamiento
Propiedad
de los objetos de proveer acceso
a su estado a travs de su interfaz o de
relaciones preestablecidas con otros objetos.
Polimorfismo
Comportamientos
diferentes asociados a
objetos distintos para una misma accin.
A
B
C
D
Dibujar
Rectngulo
Clase y Objeto
Clase: Descripcin nombrada del conjunto de
objetos que comparten los mismos atributos,
funcionamiento, relaciones y semntica.
Objeto: Instancia de clase
provista de datos y
comportamiento.
Componentes:
Implementacin, Estado e
Interfaz.
POO en Visual Basic
Clase.
Objeto.
Datos:
Campos, Propiedades, Atributos.
Comportamiento: Mtodos y Eventos.
Accesibilidad.
Herencia.
Interfaces.
Polimorfismo (por herencia e interfaz).
Sobrecarga de mtodos y operadores.
Sobrescritura y Ensombrecimiento.
Espacios de nombre.
Clase
Instruccin
Class.
Haga uso de Partial para
crear definiciones
parciales de una clase.
Partial Public Class Libro
Public Codigo As String
Public Titulo As String
End Class
Public Class Clase
' Implementacin de la clase
End Class
Partial Public Class Libro
Public Precio As Double
Public FechaPublicacion As Date
Public Function ObtenerInfo() As String
Return String.Format("{0}-{1} ({2})", _
Me.Codigo, Me.Titulo, Me.Precio)
End Function
End Class
Objeto
Utilice la instruccin New.
Puede crear instancias de tres formas
diferentes.
Todas las instancias de clase son objetos de
tipo referencia.
' Forma 1
Dim Libro1 As New Libro
' Forma 2
Dim Libro2 As Libro = New Libro
' Forma 3
Dim Libro3 As Libro
Libro3 = New Libro
Campos, Propiedades
Un campo es una variable definida dentro de
la clase que tiene como fin almacenar
informacin que defina el estado de cada
instancia.
Public Class Ventana
Public Alto As Integer
Public Ancho As Integer
Public Titulo As String
Public ColorFondo As System.Drawing.Color
End Class
Module ModuloPrueba
Sub Main()
Dim MiVentana As New Ventana
MiVentana.Ancho = 250
End Sub
End Module
Campos, Propiedades
Utilice
la instruccin Property.
Incluyen dos mtodos: Get (lectura) y Set
(Escritura)
Una propiedad puede ser de slo lectura
(ReadOnly) o de slo escritura (WriteOnly)
Public Class Ventana
Private m_Alto As Integer
Public Property Alto() As Integer
Get
Return Me.m_Alto
End Get
Set(ByVal value As Integer)
Me.m_Alto = value
End Set
End Property
End Class
Public Class Prueba
Sub Probar()
Dim MiVentana As New Ventana
' Se ejecuta Mtodo Set
MiVentana.Alto = 125
' Se Ejecuta Mtodo Get
Dim ValorAlto As Integer = MiVentana.Alto
End Sub
End Class
Mtodos y Eventos
Pueden
ser procedimientos o funciones. Un
procedimiento se implementa mediante la
instruccin Sub. Una funcin se implementa
mediante la instruccin Function.
Public Class Operaciones
Protected Sub Convertir(ByVal Origen As Integer, ByVal Destino As Double)
' Implementacin
End Sub
Public Function EsPrimo(ByVal Valor As Integer) As Boolean
' Implementacin
End Function
End Class
Constructores y Destructores
Utilice Sub New() para un constructor.
Utilice Sub Finalize()
Public Class Clase
para un destructor.
Sub New()
'Implementacin
End Sub
Todas las clases
Sub New(ByVal FechaHoraActual As Date)
'Implementacin
tienen un constructor
End Sub
Protected Overrides Sub Finalize()
' Implementacin
por defecto.
End Sub
End Class
Pueden sobrecargarse
Module ModuloPrueba
Sub Main()
slo los constructores.
Dim Objeto1 As New Clase
Dim Objeto2 As New Clase(Date.Now)
End Sub
End Module
Miembros compartidos
Instruccin Shared.
Aplicado a Campos, propiedades y mtodos.
Los mtodos compartidos slo pueden
manipular campos o propiedades
compartidas.
Accesibilidad
Ensamblados
Clase Derivada
Cliente
Clase Base
Public
Private
Protected
Friend
Clase sin relacin
Herencia
Utilice
la instruccin Inherits.
Todas las clases derivan implcitamente de
Object.
Public Class Cliente
' Implementacin clase Base
End Class
Public Class Tienda
Inherits Cliente
' Implementacin clase Derivada
End Class
Public Class Individuo
Inherits Cliente
' Implementacin clase Derivada
End Class
Modificadores:
Inherits.
NotInheritable.
MustInherit.
Interfaces
Instruccin Interface.
No contienen implementacin.
Implementada por clases y estructuras.
Pueden derivarse entre ellas.
Interfaces. Ejemplo
Public Class Contacto
Public Nombre As String
Public Telefono As String
Public Direccion As String
End Class
Public Interface IContacto
Sub Adicionar(ByVal Elemento As Contacto)
Sub Adicionar(ByVal Elementos() As Contacto)
End Interface
Public Class Agenda
Implements IContacto
Public Sub Adicionar(ByVal Elemento As Contacto) _
Implements IContacto.Adicionar
Implementacin
End Sub
Public Sub Adicionar(ByVal Elementos() As Contacto) _
Implements IContacto.Adicionar
Implementacin
End Sub
End Class
Polimorfismo por Herencia
Public Class Cliente
Public Overridable Function Mensaje() As String
Return "Soy la clase Cliente"
End Function
End Class
Public Class Tienda
Inherits Cliente
Public Overrides Function Mensaje() As String
Return "Soy la clase Tienda"
End Function
End Class
Public Class Individuo
Inherits Cliente
Public Overrides Function Mensaje() As String
Return "Soy la clase Individuo"
End Function
End Class
Module ModuloPrueba
Sub Main()
Dim Cliente1 As New Cliente
Dim Tienda1 As New Tienda
Dim Individuo1 As New Individuo
Call MuestraMensaje(Cliente1)
Call MuestraMensaje(Tienda1)
Call MuestraMensaje(Individuo1)
End Sub
Sub MuestraMensaje(ByVal Objeto As Cliente)
Console.WriteLine(Objeto.Mensaje())
End Sub
End Module
Sobrecarga de mtodos
Utilice
la instruccin Overloads para definir
explcitamente mtodos sobrecargados.
Public Class CuentaEmail
Overloads Sub EnviaMensaje(ByVal Destino As String)
'Implementacin Sobrecarga 1
End Sub
Overloads Sub EnviaMensaje(ByVal Destinos() As String)
'Implementacin Sobrecarga 2
End Sub
Overloads Sub EnviaMensaje(ByVal Destino As String, ByVal Adjunto As Object)
'Implementacin Sobrecarga 3
End Sub
End Class
Public Class Prueba
Sub Probar()
El requisito de la
Dim MiCuenta As New CuentaEmail
MiCuenta.EnviaMensaje("
[email protected]")
sobrecarga en la misma
End Sub
clase es que los mtodos
End Class
tengan firma diferente.
Sobrecarga de operadores
Instruccin
Operator.
Utilice Narrowing o Widening para restringir o
extender el tipo resultante.
Public Class Binario
Public Numero As String
' Sobrecarga del operador '+' para una suma de binarios con acarreo.
Public Shared Operator +(ByVal valor1 As Binario, _
ByVal valor2 As Binario) As Binario
' Implementacin
End Operator
End Class
Module ModuloPrueba
Sub Main()
Dim oB1 As New Binario
Dim oB2 As New Binario
oB1.Numero = "101"
oB2.Numero = "100"
' Publicamos el resultados de sumar dos nmeros binarios (operador sobrecargado)
Console.WriteLine("{0} + {1} = {2}", oB1.Numero, oB2.Numero, (oB1 + oB2).Numero)
End Sub
End Module
Sobrescritura
Utilice
la instruccin Overridable en el mtodo que
ser sobrescrito, y la instruccin Overrides en el
mtodo que sobrescribe.
Public Class Archivo
Public Overridable Sub Abrir _
(ByVal Ruta As String)
' Implementacion en clase Base
End Sub
End Class
Public Class ArchivoXML
Inherits Archivo
Public Overrides Sub Abrir _
(ByVal RutaXML As String)
' Implementacin clase Derivada
End Sub
End Class
Modificadores:
NotOverridable.
MustOverride.
Module ModuloPrueba
Sub Main()
Dim Archivo1 As New ArchivoXML
Archivo1.Abrir("noticias.xml")
End Sub
End Module
Ensombrecimiento
Utilice la instruccin Shadows.
Se anulan todas las implementaciones de la
clase base.
Public Class Prestamo
Public Overloads Function CalculaCuota(ByVal Monto As Double, _
ByVal Interes As Single, ByVal Meses As Integer) As Double
' Implementacin
End Function
Public Overloads Function CalculaCuota(ByVal Monto As Double, _
ByVal Meses As Integer) As Double
' Implementacin
End Function
Public Overloads Function CalculaCuota(ByVal Monto As Double, _
ByVal Meses As Integer, ByVal Gastos As Double) As Double
' Implementacin
End Function
End Class
Public Class PrestamoEspecial
Inherits Prestamo
Public Shadows Function CalculaCuota( _
ByVal Monto As Double)
' Implementacin
End Function
End Class
Public Class Prueba
Sub Probar()
Dim PrestamoEspecial1 As New PrestamoEspecial
PrestamoEspecial1.CalculaCuota(1250.0)
End Sub
End Class
Espacios de nombre
Instruccin
Namespace.
Importe un espacio de nombre con Imports.
Conexin a SQL Server
Conexin a SQL Server
Modo Local
Public conexion As New SqlConnection("Initial
Catalog= BaseDatos;Data Source=(LOCAL);user id =
USUARIO; password = CLAVE;")
A UN SERVIDOR
Public conexion As New SqlConnection("Initial
Catalog=BaseDatos;Data Source=IPdelSERVIDOR;user
id = USUARIO; password = CLAVE;")
AUTENTICACIN DE
WINDOWS
Proveedor
Sintaxis
SqlClient
Integrated Security=true;
Integrated Security=SSPI;
OleDb
Integrated Security=SSPI;
Odbc
Trusted_Connection=yes;
OracleClient
Integrated Security=yes;