Está en la página 1de 122

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 1
TEMA: PRACTICA DE CREACIN DE UNA CLASE
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
1
Nombre
MiLibreria

4. CDIGO DE LA CLASE
Imports System.Console

Public Class MiLibreria


Public Numero1, Numero2, Numero3 As Integer
Public Function Mayor3() As Integer
Dim Aux As Integer
Aux = Numero1
If (Numero2 > Aux) Then Aux = Numero2
If (Numero3 > Aux) Then Aux = Numero3
Return Aux
End Function
Ing. Patricio Medina M.Sc.

Pg. 1

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Function Mayor2() As Integer


Dim Aux As Integer
If (Numero1 > Numero2) Then
Aux = Numero1
Else
Aux = Numero2
End If
Return Aux
End Function
Public Sub Imprimir()
WriteLine("{0} - {1} - {2}", Numero1, Numero2, Numero3)
End Sub
Public Sub Tabla()
Dim I, R As Integer
For I = 1 To 12
R = Numero1 * I
WriteLine("{0} * {1} = {2}", Numero1, I, R)
Next
End Sub

End Class
5. CDIGO DEL MDULO
Imports System.Console
Module Module1
Sub Main()
Dim MiObjeto As New MiLibreria
Dim Resul As Integer
MiObjeto.Numero1 = 10
MiObjeto.Numero2 = 20
MiObjeto.Numero3 = 80
MiObjeto.Imprimir()
WriteLine()
Resul = MiObjeto.Mayor3
WriteLine("El mayor de los tres es: " & Resul)
WriteLine()
Resul = MiObjeto.Mayor2
WriteLine("El mayor de los dos es: " & Resul)
WriteLine()
MiObjeto.Tabla()
WriteLine()
WriteLine("Pulse una Tecla:") : Readline()
End Sub
End Module
6. GRABAR Y EJECUTAR
Ing. Patricio Medina M.Sc.

Pg. 2

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 2
TEMA: PRACTICA DE CREACIN DE UNA CLASE
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Linea

4. CDIGO DE LA CLASE
REM ====================
REM === CLASE LINEA ===
REM ====================
Public Class Linea

Public px1, px2 As Double


Public py1, py2 As Double

Ing. Patricio Medina M.Sc.

Pg. 3

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Function Longitud() As Double

Dim resp, tmp As Double


tmp = ((px1 - px2) * (px1 - px2)) + ((py1 - py2) * (py1 - py2))
resp = System.Math.Sqrt(tmp)
Return resp
End Function
End Class
5. CDIGO DEL MDULO
REM ==========================
REM ==== CREANDO CLASES ====
REM ==========================
Imports System.Console

Module Module1
Sub Main()
REM AQUI CREAMOS LA VARIABLE DEPENDIENDO DE LA CLASE
Dim aux As Linea
aux = New Linea()
WriteLine("Prctica de Creacin de Clases 1")
REM SOLO CON CONSTANTES
aux.px1 = 2 : aux.py1 = 4
aux.px2 = 10 : aux.py2 = 10
WriteLine("Respuesta {0}", aux.Longitud())
WriteLine()
REM Respuesta debera obtener 10
REM AHORA CON VARIABLES
Dim mirespuesta As Double
Console.Write("Posicin X1=") : aux.px1 = Console.ReadLine()
Console.Write("Posicin Y1=") : aux.py1 = Console.ReadLine()
Console.Write("Posicin X2=") : aux.px2 = Console.ReadLine()
Console.Write("Posicin Y2=") : aux.py2 = Console.ReadLine()
mirespuesta = aux.Longitud()
Console.WriteLine("Respuesta :{0}", mirespuesta)
Console.ReadLine()
End Sub

End Module
6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 4

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 3
TEMA: CLASE ATRIBUTOS Y MTODOS BSICOS
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Bicicleta

4. CDIGO DE LA CLASE
REM =====================
REM == CLASE BICICLETA ==
REM =====================

Public Class Bicicleta


REM AQUI LA DEFINICION DE LOS ATRIBUTOS
Public Modelo As String
Public Precio As Double
Public NumeroDeVelocidades As Byte
Private Velocidad As Integer

Ing. Patricio Medina M.Sc.

Pg. 5

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

REM AQUI LA DEFINICION DE LOS MTODOS


Public Sub Acelerar(ByVal km As Integer)
Velocidad = Velocidad + km
End Sub
Public Sub Frenar()
If Velocidad > 0 Then
Velocidad = Velocidad - 1
End If
End Sub
Public Sub Detener()
Velocidad = 0
End Sub
Public Function ConsultarVelocidad() As Integer
Return Velocidad
End Function
Public Function Imprimir() As String
Return Modelo & " / " & Precio & " / " & NumeroDeVelocidades
End Function

End Class
5. CDIGO DEL MDULO
REM =========================================================
REM ===== CLASE BICICLETA PRCTICA DE ATRIBUTOS Y MTODOS ==
REM =========================================================
Imports System.Console

Module Module1
Sub Main()
Dim varbici As New Bicicleta
varbici.Modelo = "DE PISTA"
varbici.NumeroDeVelocidades = 10
varbici.Precio = 800
WriteLine("VALORES INICIALES")
WriteLine("VELOCIDAD INICIAL : " & varbici.ConsultarVelocidad)
varbici.Acelerar(6)
WriteLine("VELOCIDAD AUMENTADA EN 6 = " & varbici.ConsultarVelocidad)
varbici.Acelerar(40)
WriteLine("VELOCIDAD AUMENTADA EN 40 = " & varbici.ConsultarVelocidad)
varbici.Frenar()
WriteLine("BICICLETA PRIMERA FRENADA = " & varbici.ConsultarVelocidad)
varbici.Frenar()
WriteLine("BICICLETA SEGUNDA FRENADA = " & varbici.ConsultarVelocidad)
WriteLine("DATOS FINALES = " & varbici.Imprimir)
varbici.Detener()
WriteLine("VELOCIDAD FINAL " & varbici.ConsultarVelocidad)
ReadLine()
End Sub

End Module
Ing. Patricio Medina M.Sc.

Pg. 6

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 7

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 4
TEMA: CREACIN DE UNA CLASE PERSONA
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Persona

4. CDIGO DE LA CLASE
REM ========================
REM ==== CLASE PERSONA ===
REM ========================

Public Class Persona


Public Nombre As String
Public Sueldo As Double
Public Fnacimiento As Date

Ing. Patricio Medina M.Sc.

Pg. 8

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Sub New(ByVal nom As String, ByVal sue As Double, ByVal fnaci As Date)

Nombre = nom
Sueldo = sue
Fnacimiento = fnaci
End Sub
Public Function Imprimir() As String
Return Nombre & " - " & Sueldo & " - " & Fnacimiento.ToString()
End Function
Public Function CalcularEdad(ByVal fechaNacimiento As Date) As Byte
Dim fechaActual As Date = DateTime.Now
Dim edad As Byte
edad = DateDiff(DateInterval.Year, fechaNacimiento, fechaActual)
Return edad
End Function
End Class

5. CDIGO DEL MDULO


REM ==================================
REM == EJEMPLO DE CREACIN DE CLASE ==
REM ==================================
Imports System

Module Module1
Sub Main()
Dim g1 As Persona
Dim miedad As Byte
Dim Fnace, Fhoy As Date
Fnace = (#10/15/2000#)
Fhoy = DateTime.Today
REM ENVIAREMOS COMO PARMETRO UN NOMBRE, SUELDO, FECHA DEL
REM COMPUTADOR

g1 = New Persona("PATRICIO", 580.69, Fhoy)


Console.WriteLine("Datos Enviados en la Creacin: " + g1.Imprimir())
miedad = g1.CalcularEdad(Fnace)
Console.WriteLine("LA EDAD ES: " & miedad)
Console.ReadLine()
End Sub

End Module
6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 9

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 5
TEMA: CREANDO PROPIEDADES
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Empleado

4. CDIGO DE LA CLASE

Public Class Empleado


REM declarar una variable de propiedad
REM para la propiedad Nombre
Private VarNombre As String
REM declarar el procedimiento Property
REM para la propiedad Nombre
Public Property Nombre() As String
REM bloque Get para devolver
Ing. Patricio Medina M.Sc.

Pg. 10

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

REM el valor de la propiedad


Get
Return VarNombre
End Get
REM bloque Set para asignar
REM valor a la propiedad
Set(ByVal Value As String)
VarNombre = Value
End Set
End Property

End Class
5. CDIGO DEL MDULO
Imports System.Console

Module Module1
Sub Main()
Dim MiEmpleado As New Empleado()
REM asignar valor a una propiedad
MiEmpleado.Nombre = "PATRICIO"
REM mostrar el valor de una propiedad del objeto
WriteLine("En la propiedad Nombre esta: {0}", MiEmpleado.Nombre)

Write("Pulse una Tecla:") : ReadLine()


End Sub
End Module
6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 11

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 6
TEMA: CREACIN DE PROPIEDADES. CASO 2
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Banco

4. CDIGO DE LA CLASE
REM ========================================
REM == CREACIN DE PROPIEDADES Y SU ACCESO ==
REM ========================================

Public Class Banco


Private Saldo As Double
Private Cliente As String

Ing. Patricio Medina M.Sc.

Pg. 12

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Sub Deposito(ByVal cantidad As Double)


Saldo += cantidad
End Sub
Public Property Nombre() As String
Set(ByVal Value As String)
Cliente = Value
End Set
Get
Return Cliente
End Get
End Property
Public ReadOnly Property Balance() As Double
Get
Return Saldo
End Get
End Property

End Class
5. CDIGO DEL MDULO
REM ==============================
REM === CREACIN DE PROPIEDADES ==
REM ==============================
Imports System.Console

Module Module1
Sub Main()
Dim varbanco As New Banco()
varbanco.Nombre = "PATRICIO"
varbanco.Deposito(500)
Console.WriteLine("Cliente:" & varbanco.Nombre)
Console.WriteLine("Saldo : $" & varbanco.Balance())
Console.ReadLine()
End Sub

End Module
6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 13

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 7
TEMA: PRACTICA DE SOBRECARGA
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Linea

4. CDIGO DE LA CLASE
REM ==========================
REM ==== CREANDO LA CLASE ====
REM ==========================

Public Class Linea


REM VARIABLES
Public PX1, PX2 As Double
Public PY1, PY2 As Double
REM Aqui el Constructor Caso 1 si queremos con valore fijos

Ing. Patricio Medina M.Sc.

Pg. 14

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Sub New()
PX1 = 1 : PY1 = 1
PX2 = 2 : PY2 = 2
End Sub
REM AQUI LA SOBRECARGA
Sub New(ByVal x1 As Double, ByVal y1 As Double, ByVal x2 As Double, ByVal y2 As
Double)
PX1 = x1 : PY1 = y1
PX2 = x2 : PY2 = y2
End Sub
REM DETALLE DE LAS FUNCIONES

Public Function Longitud() As Double


Dim RESP, TMP As Double
TMP = ((PX1 - PX2) * (PX1 - PX2)) + ((PY1 - PY2) * (PY1 - PY2))
RESP = System.Math.Sqrt(TMP)
Return RESP
End Function

End Class
5. CDIGO DEL MDULO
REM =============================
REM === EJEMPLO DE SOBRECARGA ===
REM =============================
Imports System.Console

Module Module1
Sub Main()
Dim AUX, AUX1 As Linea
AUX = New Linea() REM TOMARA LOS VALORES POR DEFECTO
WriteLine("Prctica Manejo de Constructor")
WriteLine("Con Valores por defecto de la Clase: {0} ", AUX.Longitud())
REM AQUI PONIENDO VALORES COMO CONSTANTES
AUX.PX1 = 2 : AUX.PY1 = 4
AUX.PX2 = 10 : AUX.PY2 = 10
WriteLine("Con Constantes : {0}", AUX.Longitud())
REM AHORA PARA EL CONSTRUCTOR ENVIANDO VALORES
AUX1 = New Linea(2, 4, 10, 10)
WriteLine("Con Constructor: {0}", AUX1.Longitud())
ReadLine()
End Sub

End Module
7. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 15

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 8
TEMA: CREACIN DE CLASE NOTAS
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Notas

4. CDIGO DE LA CLASE

Public Class Notas


Private Nombre As String
Private Cur As Byte
Private Para As Char
Private Not1, Not2, Not3, Not4 As Double
Private Tot, Prom As Double
Public Sub Calcular(ByVal N1 As Double, ByVal N2 As
Double)
Tot = N1 + N2
Ing. Patricio Medina M.Sc.

Pg. 16

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Prom = Tot / 2
End Sub
Public Sub Calcular(ByVal N1 As Double, ByVal N2 As Double,
ByVal N3 As Double)
Tot = N1 + N2 + N3
Prom = Tot / 3
End Sub
Public Sub Calcular(ByVal N1 As Double, ByVal N2 As Double,
ByVal N3 As Double, ByVal n4 As Double)
Tot = N1 + N2 + N3 + n4
Prom = Tot / 4
End Sub
Public Property Estudiante() As String
Set(ByVal Value As String)
Nombre = Value
End Set
Get
Return Nombre
End Get
End Property
Public Property Curso() As Byte
Set(ByVal Value As Byte)
Cur = Value
End Set
Get
Return Cur
End Get
End Property
Public Property Paralelo() As Char
Set(ByVal Value As Char)
Para = Value
End Set
Get
Return Para
End Get
End Property
Public Property Nota1() As Double
Set(ByVal Value As Double)
Not1 = Value
End Set
Get
Return Not1
End Get
End Property

Ing. Patricio Medina M.Sc.

Pg. 17

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Property Nota2() As Double


Set(ByVal Value As Double)
Not2 = Value
End Set
Get
Return Not2
End Get
End Property
Public Property Nota3() As Double
Set(ByVal Value As Double)
Not3 = Value
End Set
Get
Return Not3
End Get
End Property
Public Property Nota4() As Double
Set(ByVal Value As Double)
Not4 = Value
End Set
Get
Return Not4
End Get
End Property
Public ReadOnly Property Suma() As Double
Get
Return Tot
End Get
End Property
Public ReadOnly Property Promedio() As Double
Get
Return Prom
End Get
End Property

End Class
5. CDIGO DEL MDULO
Imports System.Console

Module Module1
Sub Main()
Dim VarEstudiante As New Notas()
REM ASIGNAMOS DATOS
With VarEstudiante

Ing. Patricio Medina M.Sc.

Pg. 18

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

.Estudiante = "PATRICIO"
.Curso = 6
.Paralelo = "A"
.Nota1 = 8
.Nota2 = 9
.Calcular(.Nota1, .Nota2)
End With
WriteLine()
REM CALCULOS CON 2 NOTAS
WriteLine("RESULTADOS 1")
WriteLine("ALUMNO
:
WriteLine("SUS NOTAS {0} Y
VarEstudiante.Nota2)
WriteLine("SU SUMA
:
WriteLine("SU PROMEDIO
:
WriteLine()

" & VarEstudiante.Estudiante)


{1}", VarEstudiante.Nota1,
" & VarEstudiante.Suma)
" & VarEstudiante.Promedio)

REM CALCULOS CON 3 NOTAS


VarEstudiante.Nota3 = 5
WriteLine("RESULTADOS 2")
With VarEstudiante
.Calcular(.Nota1, .Nota2, .Nota3)
WriteLine("ALUMNO
: " & .Estudiante)
WriteLine("SUS NOTAS {0} Y {1} Y {2}", .Nota1, .Nota2, .Nota3)

WriteLine("SU SUMA
WriteLine("SU PROMEDIO
End With
WriteLine()

: " & .Suma)


: " & .Promedio)

REM CALCULOS CON 4 NOTAS


VarEstudiante.Nota3 = 10
VarEstudiante.Nota4 = 9
WriteLine("RESULTADOS 3")
With VarEstudiante
.Calcular(.Nota1, .Nota2, .Nota3, .Nota4)
WriteLine("ALUMNO
: " & .Estudiante)
WriteLine("SUS NOTAS {0} Y {1} Y {2} Y {3}", .Nota1,
.Nota2, .Nota3, .Nota4)
WriteLine("SU SUMA
WriteLine("SU PROMEDIO
End With

: " & .Suma)


: " & .Promedio)

WriteLine("Pulse una Tecla:") : Console.ReadLine()


End Sub

End Module
6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 19

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 9
TEMA: ENCAPSULAMIENTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Empleado

4. CDIGO DE LA CLASE
Public Class Empleado
REM variables de propiedad
Public VarNombre As String
Private VarCategoria As Integer
Private VarSueldo As Double
REM procedimientos de propiedad
Public Property Categoria() As Integer
Get
Return VarCategoria

Ing. Patricio Medina M.Sc.

Pg. 20

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

End Get
Set(ByVal Value As Integer)
VarCategoria = Value
End Set
End Property
Public Property Sueldo() As Double
Get
Return VarSueldo
End Get
REM cuando asignamos el valor a esta propiedad,
REM ejecutamos cdigo de validacin en el bloque Set
Set(ByVal Value As Double)
REM si la categora del empleado es 1...
If VarCategoria = 1 Then
REM pero el sueldo supera 220
If Value > 220 Then
REM mostrar un mensaje y asignar un cero
Console.WriteLine("La categora no corresponde con el sueldo")

VarSueldo = 0
Else
REM si todo va bien, asignar el sueldo
VarSueldo = Value
End If
End If
End Set
End Property
End Class

5. CDIGO DEL MDULO


REM PROBLEMA
REM Supongamos que en nuestra clase Empleado necesitamos
crear un elemento para
REM guardar el sueldo pagado, pero el importe del sueldo
deber estar entre un rango
REM de valores en funcin de la categora del empleado. Si
la categora es 1, el sueldo
REM estar entre 1 y 220, mientras que si la categora es
2, el sueldo podr llegar hasta 350.
Imports System.Console
Module Module1
Sub Main()
Dim MiEmpleado As Empleado
MiEmpleado = New Empleado()
MiEmpleado.VarNombre = "PATRICIO"

Ing. Patricio Medina M.Sc.

Pg. 21

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

MiEmpleado.Categoria = 1
MiEmpleado.Sueldo = 250
WriteLine()
Console.WriteLine("Asignacin incorrecta")
Console.WriteLine("Empleado {0} - Categoria {1} - Sueldo {2}", _
MiEmpleado.VarNombre, MiEmpleado.Categoria, MiEmpleado.Sueldo)

MiEmpleado.Sueldo = 175
WriteLine()
Console.WriteLine("Asignacin correcta")
Console.WriteLine("Empleado {0} - Categoria {1} - Sueldo {2}", _
MiEmpleado.VarNombre, MiEmpleado.Categoria, MiEmpleado.Sueldo)

Write("Pulse una Tecla:") : ReadLine()


End Sub
End Module

6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 22

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 10
TEMA: CREANDO PROPIEDADES DE LECTURA Y ESCRITURA
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Empleado

4. CDIGO DE LA CLASE
Public Class Empleado
REM campo de clase
Public VarNombre As String
REM variables de propiedad
Private VarCtaBancaria As String
Private VarEntidad As String
REM variables diversas
Private VarCodigoEntidad As String
REM esta propiedad slo permite asignar valores,

Ing. Patricio Medina M.Sc.

Pg. 23

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

REM por lo que no dispone de bloque Get


Public WriteOnly Property CuentaBancaria() As String
Set(ByVal Value As String)
Select Case Left(Value, 4)
Case "1111"
VarEntidad = "Banco Pichincha"
Case "2222"
VarEntidad = "Banco General"
Case "3333"
VarEntidad = "Cooperativa Oscus"
Case Else
VarEntidad = "Entidad sin Asignar"
End Select
End Set
End Property
REM esta propiedad slo permite obtener valores,
REM por lo que no dispone de bloque Set
Public ReadOnly Property EntidadBancaria() As String
Get
Return VarEntidad
End Get
End Property
End Class

5. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmpleado As Empleado
MiEmpleado = New Empleado()
MiEmpleado.VarNombre = "PATRICIO"
REM a esta propiedad slo podemos asignarle
REM valor, si intentamos obtenerlo, se producir un error
MiEmpleado.CuentaBancaria = "2222-56-7779995555"
REM en esta lnea, la propiedad EntidadBancaria slo
REM nos permite obtener valor, si intentamos asignarlo
REM se producir un error
Console.WriteLine("La entidad del empleado {0} es {1}", _
MiEmpleado.VarNombre, MiEmpleado.EntidadBancaria)
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module
6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 24

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 11
TEMA: CREANDO PROPIEDADES VIRTUALES
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Empleado

4. CDIGO DE LA CLASE
Public Class Empleado
REM campo de clase
Public VarNombre As String
REM variables de propiedad
Private VarFechaIngreso As Date
REM propiedad para manejar la fecha
REM de alta del empleado
Public Property FechaIngreso() As Date
Get

Ing. Patricio Medina M.Sc.

Pg. 25

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Return VarFechaIngreso
End Get
Set(ByVal Value As Date)
VarFechaIngreso = Value
End Set
End Property
REM propiedad virtual
REM en ella devolvemos el nombre del mes en el que se ha dado de
REM alta al empleado, utilizando la variable de otra propiedad

Public ReadOnly Property MesIngreso() As String


Get
Return Format(VarFechaIngreso, "MMMM")
End Get
End Property
End Class

5. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmpleado As Empleado
MiEmpleado = New Empleado()
MiEmpleado.VarNombre = "RICARDO"
MiEmpleado.FechaIngreso = "24/05/2001"
REM mostramos el mes de Ingreso, que corresponde
REM a una propiedad virtual del objeto
WriteLine("El empleado {0} ingreso en el mes de {1}", _
MiEmpleado.VarNombre, MiEmpleado.MesIngreso.ToUpper)
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module

6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 26

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 12
TEMA: PROPIEDADES PREDETERMINADAS
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Empleado

4. CDIGO DE LA CLASE
Public Class Empleado
REM este es el array asociado a
REM la propiedad predeterminada
Private VarViajes() As String
REM declaracin de la propiedad predeterminada
Default Public Property Viajes(ByVal Indice As Integer) As String

Get
REM para devolver un valor, empleamos

Ing. Patricio Medina M.Sc.

Pg. 27

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

REM el nmero de ndice pasado


REM como parmetro
Return VarViajes(Indice)
End Get
Set(ByVal Value As String)
REM para asignar un valor a la propiedad,
REM comprobamos primero si el array est vaco
REM al ser el array tambin un objeto,
REM utilizamos el operador Is
If VarViajes Is Nothing Then
ReDim VarViajes(0)
Else
REM si el array ya contena valores,
REM aadir un nuevo elemento
ReDim Preserve VarViajes(UBound(VarViajes) + 1)
End If
REM asignar el valor al array
VarViajes(Indice) = Value
End Set
End Property
End Class
5. CDIGO DEL MDULO
Imports System.Console
Module Module1
Sub Main()
Dim MiEmpleado As New Empleado()
Dim Posi As Integer
REM primero manejamos la propiedad predeterminada
REM igual que una normal
MiEmpleado.Viajes(0) = "Pelileo"
REM aqu manipulamos la propiedad predeterminada
REM sin indicar su nombre
MiEmpleado(1) = "Ambato"
For Posi = 0 To 1
WriteLine("Visita: {0} - Ciudad: {1}", Posi, MiEmpleado(Posi))

Next
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module

6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 28

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 13
TEMA: CREANDO MTODOS
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Empleado

4. CDIGO DE LA CLASE
Public Class Empleado
REM variables de propiedad
Private VarID As Integer
Private VarNombre As String
Private VarApellidos As String
REM procedimientos de propiedad
Public Property Identificador() As Integer
Get
Return VarID

Ing. Patricio Medina M.Sc.

Pg. 29

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

End Get
Set(ByVal value As Integer)
VarID = value
End Set
End Property
Public Property Nombre() As String
Get
Return VarNombre
End Get
Set(ByVal Value As String)
VarNombre = Value
End Set
End Property
Public Property Apellidos() As String
Get
Return VarApellidos
End Get
Set(ByVal Value As String)
VarApellidos = Value
End Set
End Property
REM mtodos
Public Sub CalcularVacaciones(ByVal FInicio As Date, ByVal
CanDias As Integer)
REM en este mtodo calculamos el periodo
REM de vacaciones del empleado,
REM mostrando los resultados en consola
Dim FFinal As Date
FFinal = DateAdd(DateInterval.Day, CanDias, FInicio)
Console.WriteLine("Empleado {0} - {1} {2}", Identificador,
Nombre, Apellidos)
Console.WriteLine("Vacaciones desde {0} hasta {1}", _
Format(FInicio, "dd/MMM/yy"), Format(FFinal, "d/MMMM/yyyy"))

Console.ReadLine()
End Sub
End Class

5. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()

Ing. Patricio Medina M.Sc.

Pg. 30

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

REM instanciar objeto Empleado


Dim MiEmpleado As Empleado
MiEmpleado = New Empleado()
REM asignar valores a propiedades
MiEmpleado.Identificador = 5
MiEmpleado.Nombre = "Ariel"
MiEmpleado.Apellidos = "Medina"
REM llamar a mtodo
MiEmpleado.CalcularVacaciones("18/07/2008", 15)
End Sub
End Module
6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 31

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 14
TEMA: CLASE EMPLEADO COMPLETO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Empleado

4. CDIGO DE LA CLASE
Public Class Empleado
REM variables de propiedad
Private VarID As Integer
Private VarNombre As String
Private VarApellidos As String
Private VarCedula As String
Private VarFechaAlta As Date
Private VarSueldo As Double
Private VarInicioVacaciones As Date

Ing. Patricio Medina M.Sc.

Pg. 32

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Private VarDiasVacaciones As Integer


REM procedimientos de propiedad
Public Property Identificador() As Integer
Get
Return VarID
End Get
Set(ByVal Value As Integer)
VarID = Value
End Set
End Property
Public Property Nombre() As String
Get
Return VarNombre
End Get
Set(ByVal Value As String)
VarNombre = Value
End Set
End Property
Public Property Apellidos() As String
Get
Return VarApellidos
End Get
Set(ByVal Value As String)
VarApellidos = Value
End Set
End Property
Public Property Cedula() As String
Get
Return VarCedula
End Get
Set(ByVal Value As String)
VarCedula = Value
End Set
End Property
Public Property FechaAlta() As Date
Get
Return VarFechaAlta
End Get
Set(ByVal Value As Date)
VarFechaAlta = Value
End Set
End Property
Public Property Sueldo() As Double
Get
Return VarSueldo

Ing. Patricio Medina M.Sc.

Pg. 33

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

End Get
Set(ByVal Value As Double)
VarSueldo = Value
End Set
End Property
Public Property InicioVacaciones() As Date
Get
Return VarInicioVacaciones
End Get
Set(ByVal Value As Date)
VarInicioVacaciones = Value
End Set
End Property
Public Property DiasVacaciones() As Integer
Get
Return VarDiasVacaciones
End Get
Set(ByVal Value As Integer)
VarDiasVacaciones = Value
End Set
End Property
Public Sub CalcularVacaciones()
Dim FFinal As Date
FFinal = DateAdd(DateInterval.Day, VarDiasVacaciones,
VarInicioVacaciones)
Console.WriteLine("Empleado {0} - {1} {2}", VarID,
VarNombre, VarApellidos)
Console.WriteLine("Vacaciones desde {0} hasta {1}",
Format(VarInicioVacaciones, "dd/MMM/yy"), _
Format(FFinal, "d/MMMM/yyyy"))
End Sub
Public Sub CrearEmpleado()
REM Aqui podemos crear un nuevo registro en la base de
REM datos grabar los valores que debe haber
REM en las propiedades
Console.WriteLine("Se ha creado el empleado: {0} - {1}
{2}", VarID, VarNombre, VarApellidos)
End Sub
Public Sub TransfNomina()
REM realizamos la transferencia de nmina
REM a un empleado, utilizando su identificador

Ing. Patricio Medina M.Sc.

Pg. 34

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

REM obtener los datos del empleado de la base de datos


REM y traspasarlos a las propiedades
REM visualizamos el resultado
Console.WriteLine("Pago de nmina")
WriteLine("Empleado: {0} {1}", VarNombre, VarApellidos)
WriteLine("Ingresado: {0}", VarSueldo)
End Sub
Public Sub MostrarEmpleado()
REM Aqui podemos buscar la informacin del empleado en la
REM base de datos usando el valor de la propiedad
REM identificador
Console.WriteLine("El empleado seleccionado es: {0} {1}",
VarNombre, VarApellidos)
End Sub
End Class
5. CDIGO DEL MDULO
Imports System.Console
Module Module1
Sub Main()
REM instanciar objeto
Dim MiEmpleado As New Empleado()
Dim Aux As Date
MiEmpleado.Identificador = 7
MiEmpleado.Nombre = "Esteban"
MiEmpleado.Apellidos = "Medina"
MiEmpleado.Cedula = "1802333276"
MiEmpleado.DiasVacaciones = 15
MiEmpleado.FechaAlta = "24/05/2001"
MiEmpleado.InicioVacaciones = "18/07/2008"
MiEmpleado.Sueldo = 500
REM llamar a sus mtodos
MiEmpleado.CrearEmpleado()
WriteLine()
MiEmpleado.MostrarEmpleado()
WriteLine()
MiEmpleado.CalcularVacaciones()
WriteLine()
Aux = MiEmpleado.FechaAlta()
WriteLine("Fecha de Ingreso es :" & Aux)
WriteLine()
Aux = MiEmpleado.InicioVacaciones()
WriteLine("Inicia sus Vacaciones el :" & Aux)
WriteLine()
MiEmpleado.TransfNomina()
WriteLine()

Ing. Patricio Medina M.Sc.

Pg. 35

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Write("Pulse una Tecla") : ReadLine()


End Sub
End Module

6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 36

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 15
TEMA: SENTENCIA WITH . ENDWITH
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Empleado

4. CDIGO DE LA CLASE
Public Class Empleado
Public VarNombre As String
Public VarApellidos As String
Public Sub MostrarDatos()
Console.WriteLine("El empleado seleccionado es: {0} {1}",
VarNombre, VarApellidos)
End Sub
End Class

Ing. Patricio Medina M.Sc.

Pg. 37

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

5. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmpleado As Empleado = New Empleado()
With MiEmpleado
.VarNombre = "Ariel"
.VarApellidos = "Medina"
.MostrarDatos()
End With
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module
6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 38

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 16
TEMA: USO DE ME Y MYCLASS PARA LLAMAR A MIEMBROS DE LA
MISMA CLASE.
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Empleado

4. CDIGO DE LA CLASE
Public Class Empleado
Public VarID As Integer
Private VarNombre As String
Public Property Nombre() As String
Get
Return VarNombre
End Get
Set(ByVal Value As String)

Ing. Patricio Medina M.Sc.

Pg. 39

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

VarNombre = Value
End Set
End Property

REM
REM
REM
REM

Public Sub VerDatos()


utilizamos Me y MyClass en este mtodo para tomar
el valor de la variable VarID que se encuentra en esta
misma clase, y para llamar al mtodo NombreMay()
que tambin est en la clase

Console.WriteLine("Cdigo del empleado: {0}", Me.VarID)


Console.WriteLine("Nombre del empleado: {0}",
MyClass.NombreMay())
End Sub
Public Function NombreMay() As String
Return UCase(VarNombre)
End Function
End Class
5. CDIGO DEL MDULO
Imports System.Console
Module Module1
Sub Main()
Dim MiEmpleado As New Empleado()
MiEmpleado.VarID = 169
MiEmpleado.Nombre = "Narciza Medina"
MiEmpleado.VerDatos()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module

6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 40

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 17
TEMA: SOBRECARGA DE MTODOS O POLIMORFISMO EN UNA
MISMA CLASE.
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Empleado

4. CDIGO DE LA CLASE
Imports System.Console
Public Class Empleado
Private VarSalario As Double
Public Property Salario() As Double
Get
Return VarSalario
End Get
Set(ByVal Value As Double)

Ing. Patricio Medina M.Sc.

Pg. 41

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

VarSalario = Value
End Set
End Property
REM mtodos sobrecargados
Public Overloads Sub Sueldo()
REM aqu mostramos en consola el importe del sueldo formateado

WriteLine("El sueldo es {0}", Format(Me.Salario, "#,#.##"))


End Sub
Public Overloads Function Sueldo(ByVal LiDia As Integer) As
String
REM aqu mostramos la fecha del mes actual
REM en la que se realizar la transferencia
REM del sueldo al banco del empleado
Dim LFechaActual As Date
Dim LFechaCobro As String
LFechaActual = Now()
LFechaCobro = CStr(LiDia) & "/" & CStr(Month(LFechaActual))
& "/" & CStr(Year(LFechaActual))
Return LFechaCobro
End Function
Public Overloads Function Sueldo(ByVal LImporteIncentivo As
Double, ByVal LTipoIncentivo As String) As Double
REM aqu calculamos la cantidad de incentivo
REM que se aadir al sueldo del empleado,
REM en funcin del tipo de incentivo
Dim LIncentivo As Double
REM segn el tipo de incentivo,
REM se descuenta un importe
REM de la cantidad del incentivo
Select Case LTipoIncentivo
Case "Viajes"
LIncentivo = LImporteIncentivo - 30
Case "Extras"
LIncentivo = LImporteIncentivo - 20
End Select
Return LIncentivo
End Function
End Class
5. CDIGO DEL MDULO
REM SOBRECARGA DE MTODOS O POLIMORFISMO EN UNA MISMA CLASE
Imports System.Console
Module Module1
Sub Main()
Dim MiEmpleado As New Empleado()

Ing. Patricio Medina M.Sc.

Pg. 42

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Dim LResultado As Double


MiEmpleado.Salario = 500.82
REM llamada al primer mtodo sobrecargado
MiEmpleado.Sueldo()
REM llamada al segundo mtodo sobrecargado
WriteLine("El sueldo se transferir el da {0}",
MiEmpleado.Sueldo(29))
REM llamada al tercer mtodo sobrecargado
LResultado = MiEmpleado.Sueldo(50.75, "Extras")
WriteLine("El incentivo a pagar ser {0}", LResultado)
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module
6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 43

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 18
TEMA: ENLACE TARDO.
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre
Nombre
Nombre

3
Empleado
Proveedor
Horario

4. CDIGO DE LA CLASE EMPLEADO


Imports System.Console
Public Class Empleado
Private VarNombre As String
Private VarApellidos As String

Ing. Patricio Medina M.Sc.

Pg. 44

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Property Nombre() As String


Get
Return VarNombre
End Get
Set(ByVal Value As String)
VarNombre = Value
End Set
End Property
Public Property Apellidos() As String
Get
Return VarApellidos
End Get
Set(ByVal Value As String)
VarApellidos = Value
End Set
End Property
Public Sub MostrarDatos()
WriteLine("El empleado seleccionado es: {0} {1}",
VarNombre, VarApellidos)
End Sub
End Class
5. CDIGO DE LA CLASE PROVEEDOR
Imports System.Console
Public Class Proveedor
Private VarNombre As String
Private VarApellidos As String
Public Property Nombre() As String
Get
Return VarNombre
End Get
Set(ByVal Value As String)
VarNombre = Value
End Set
End Property
Public Property Apellidos() As String
Get
Return VarApellidos
End Get
Set(ByVal Value As String)
VarApellidos = Value
End Set
End Property
Public Sub MostrarDatos()

Ing. Patricio Medina M.Sc.

Pg. 45

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

WriteLine("El proveedor actual es: {0} {1}", VarNombre,


VarApellidos)
End Sub
End Class
6. CDIGO DE LA CLASE HORARIO
Imports System.Console
Public Class Horario
Public Sub HoraActual()
WriteLine("Hora del sistema: {0}", Format(Now(), "HH:mm"))
End Sub
End Class

7. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
REM Declaramos como Object,
REM por lo que obtendremos enlace tardo
Dim MiVariosObj As Object
REM instanciamos un objeto Empleado
MiVariosObj = New Empleado()
MiVariosObj.Nombre = "Ariel"
MiVariosObj.Apellidos = "Medina"
MiVariosObj.MostrarDatos()
REM instanciamos un objeto Proveedor
MiVariosObj = New Proveedor()
MiVariosObj.Nombre = "Esteban"
MiVariosObj.Apellidos = "Martinez"
MiVariosObj.MostrarDatos()
REM instanciamos un objeto Horario
MiVariosObj = New Horario()
MiVariosObj.HoraActual()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module
8. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 46

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 19
TEMA: NAMESPACES. Ejemplo1.
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre
Nombre

2
Factura
Empleado

4. CDIGO DE LA CLASE FACTURA


REM clase Factura
REM esta clase se encuentra dentro
REM del espacio de nombres raz del ensamblado
Imports System.Console
Public Class Factura
Public VarID As Integer
Public VarImporte As Integer
Ing. Patricio Medina M.Sc.

Pg. 47

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Sub Datos()


WriteLine("La factura {0}, tiene un total de {1}",
Me.VarID, Me.VarImporte)
End Sub
End Class
5. CDIGO DE LA CLASE EMPLEADO
REM esta clase se encuentra dentro
REM del espacio de nombres raz del ensamblado,
REM y a su vez, dentro del espacio de nombres Personal
Imports System.Console

Namespace Personal
Public Class Empleado
Public VarID As Integer
Public Sub MirarDatos()
WriteLine("Identificador del Empleado: {0}", Me.VarID)
End Sub
End Class
End Namespace
REM OTRA CLASE PROVEEDOR DENTRO DE PERSONAL

Namespace Personal
Public Class Proveedor
Public VarID As Integer
Public VarRazonSocial As String
Public Sub MuestraProv()
WriteLine("El proveedor tiene el cdigo {0} y es {1}",
Me.VarID, Me.VarRazonSocial)
End Sub
End Class
End Namespace

6. CDIGO DEL MDULO


Imports System.Console
Imports _12NameSpaces.Personal
REM nombre de la carpeta de este proyecto
Module Module1
Sub Main()
REM CASO 1
REM como la clase Factura se encuentra
REM en el espacio de nombres raz,
REM instanciamos normalmente
Dim MiFac As New Factura()
MiFac.VarID = 8
MiFac.VarImporte = 320
MiFac.Datos()
Ing. Patricio Medina M.Sc.

Pg. 48

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

WriteLine()
REM CASO 2
Dim MiEmpleado As Empleado
MiEmpleado = New Empleado()
REM se puede tambien instanciar asi sin utilizar el imports
REM Dim MiEmpleado = New Personal.Empleado
MiEmpleado.VarID = 10
MiEmpleado.MirarDatos()
WriteLine()
REM CASO 3
Dim Miproveedor = New Personal.Proveedor()
Miproveedor.VarId = 18
Miproveedor.VarRazonSocial = "ESTUDIO INFORMTICO PUNTO VIRTUAL"

Miproveedor.MuestraProv()
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module
7. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 49

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 20
TEMA: NAMESPACES. Caso Banco.
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre

1
Banco

4. CDIGO DE LA CLASE

Imports System.Console

Namespace Contabilidad
REM PRIMERA CLASE
Public Class Cuenta
Public VarCodigo As Integer
Public Function Obtener() As Integer
Return Me.VarCodigo
Ing. Patricio Medina M.Sc.

Pg. 50

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

End Function
End Class
REM SEGUNDA CLASE
Public Class Balance
Public VarDescripcion As String
Public Sub MostrarDescripcion()
WriteLine("La descripcin del balance es: {0}",
Me.VarDescripcion)
End Sub
End Class
End Namespace

5. CDIGO DEL MDULO


Imports System.Console
Imports _13NameSpacesBanco.Contabilidad
REM Nombre de la Carpeta
Module Module1
Sub Main()
REM instanciamos con sintaxis calificada
Dim MiCuenta As New Contabilidad.Cuenta()
Dim LDatoCuenta As Integer
MiCuenta.VarCodigo = 158
LDatoCuenta = MiCuenta.Obtener()
WriteLine("Dato de la cuenta:" & LDatoCuenta)
WriteLine()
REM al haber importado el espacio de nombres
REM podemos instanciar usando el nombre
REM de la clase directamente
Dim MiBalance As Balance
MiBalance = New Balance()
MiBalance.VarDescripcion = "Resultado Semestral"
MiBalance.MostrarDescripcion()
WriteLine("Pulse una Tecla:") : ReadLine()
End Sub
End Module
6. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 51

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 21
TEMA: CREANDO ARCHIVOS DLL
1. ABRIR UN NUEVO PROYECTO
2. Seleccione Aplicacin de BIBLIOTECA DE CLASES
Cantidad
Nombre

1
MiLibreria

3. CDIGO DE LA LIBRERIA
Imports System.Console
Namespace Funciones
Public Class Continuar
Public Shared Sub EsperarEnter()
WriteLine()
WriteLine("MENSAJE DESDE LA LIBRERIA")
Write("Pulse ENTER para continuar:")
End Sub
End Class
End Namespace
REM NAMESPACE = Creacin de Nombres propios permite
REM agrupar clases y tipos(types) relacionados a travs de un

REM nombre para una referencia lgica.

Ing. Patricio Medina M.Sc.

Pg. 52

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

REM SE GENERAR EL ARCHIVO MILIBRERIA.DLL. Posee un espacio


REM de nombres denominado
REM FUNCIONES, que a su vez contiene una clase llamada Continuar

REM con un mtodo llamado ESPERARENTER


4. GENERANDO EL ARCHIVO DLL

5.
6.
7.
8.

GRABAR Y CERRAR
ABRIR UN NUEVO PROYECTO
Seleccione Aplicacin de Consola
Agregando la CLASE
Cantidad
Nombre

1
UsoLibreria

9. HACER REFERENCIA HACIA EL ARCHIVO DLL

Ing. Patricio Medina M.Sc.

Pg. 53

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

NOTA: EXAMINAR EN LA CARPETA QUE GUARDO LA LIBRERA


INGRESANDO A \BIN\DEBUG

10. VERIFIQUE QUE SE INCLUYO ARCHIVO EN EXPLORADOR


SOLUCIONES

11. CDIGO DE LA CLASE


Imports System.Console
Imports MiLibreria
Module Module1

Ing. Patricio Medina M.Sc.

Pg. 54

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Sub Main()
WriteLine("IMPRIMO MENSAJE DESDE EL PROGRAMA PRINCIPAL")
Funciones.Continuar.EsperarEnter()
ReadLine()
End Sub
End Module
12. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 55

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 22
TEMA: ACCESO A NAMESPACES DE OTROS ENSAMBLADOS
1. ABRIR UN NUEVO PROYECTO
2. Seleccione Aplicacin de BIBLIOTECA DE CLASES
Cantidad
Nombre

1
MiLibreriaClases

3. CDIGO DE LA LIBRERIA
REM AQUI ESTAN DOS CLASES Y UNA DE ELLAS CONTENIDAS EN
REM UN ESPACIO DE NOMBRES
Imports System.Console
Public Class Factura
Public VarID As Integer
Public VarTotFactura As Integer
Public Sub Datos()
WriteLine("La factura {0}, tiene un total de {1}", _
Me.VarID, Me.VarTotFactura)
End Sub
End Class
Namespace Correo
Public Class Mensaje
Public VarTexto As String

Ing. Patricio Medina M.Sc.

Pg. 56

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public VarFecha As Date


Public Sub Visualizar()
WriteLine("Atencin, mensaje: {0}, de fecha: {1}", _
Me.VarTexto, Me.VarFecha)
End Sub
End Class
End Namespace
4. GENERANDO EL ARCHIVO DLL

5. GRABAR Y CERRAR
6. ABRIR UN NUEVO PROYECTO
7. Seleccione Aplicacin de Consola

8. HACER REFERENCIA HACIA EL ARCHIVO DLL

Ing. Patricio Medina M.Sc.

Pg. 57

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

NOTA: EXAMINAR EN LA CARPETA QUE GUARDO LA LIBRERA


INGRESANDO A \BIN\DEBUG

9.

VERIFIQUE QUE SE INCLUYO ARCHIVO EN EXPLORADOR


SOLUCIONES

Ing. Patricio Medina M.Sc.

Pg. 58

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

10. CDIGO DEL MDULO


REM este Namespace es el raz del proyecto
REM de biblioteca de clases y
REM nos servir para acceder a la clase Factura

Imports MiLibreriaClases
REM
REM
REM
REM

por otro lado importamos el namespace


MilibreriaClases.Correo que nos permitir
acceder a la clase Mensaje, que tambin
est en la biblioteca de clases

Imports MiLibreriaClases.Correo
Imports System.Console
Module Module1
Sub Main()
REM Para EMPLEADO
Dim MiEmpleado As New Empleado()
MiEmpleado.VarID = 1111
MiEmpleado.MostrarEmpleado()
WriteLine()
REM Para FACTURA
Dim MiFactura As New Factura()
MiFactura.VarID = 2222
MiFactura.VarTotFactura = 820
MiFactura.Datos()
WriteLine()
REM Para MENSAJE
Dim MiMensaje As New Mensaje()
MiMensaje.VarTexto = "Hola espero esten Muy Bien"
MiMensaje.VarFecha = Today
MiMensaje.Visualizar()
WriteLine()
Write("Pulse una Tecla para Finalizar:")
Console.ReadLine()
End Sub
End Module
Public Class Empleado
Public VarID As Integer
Public Sub MostrarEmpleado()
WriteLine("Identificador del empleado: {0}", Me.VarID)
Write("Pulse una Tecla para retornar:")
Console.ReadLine()
End Sub
End Class
11. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 59

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 23
TEMA: MTODO CONSTRUCTOR.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


REM Constructor Bsico
Imports System.Console
Module General
Sub Main()
Dim MiEmpleado As Empleado
MiEmpleado = New Empleado()
WriteLine("El objeto se cre {0}", MiEmpleado.FechaCrea)
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module
REM Aqui la Clase

Public Class Empleado


Private VarFechaCrea As Date

Ing. Patricio Medina M.Sc.

Pg. 60

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Property FechaCrea() As Date


Get
Return VarFechaCrea
End Get
Set(ByVal Value As Date)
VarFechaCrea = Value
End Set
End Property
REM AQUI el Mtodo Constructor
Public Sub New()
REM asignamos un valor inicial
REM a una variable de propiedad
Me.FechaCrea = Now
End Sub
End Class
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 61

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 24
TEMA: MTODO CONSTRUCTOR PARAMETRIZADO.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module General
Sub Main()
Dim MiEmpleado As Empleado
MiEmpleado = New Empleado("30/7/2008")
WriteLine("El objeto se cre {0}", MiEmpleado.FechaCrea)
WriteLine()
Write("Pulse una Tecla:")
ReadLine()
REM este es otro modo de instanciar
REM un objeto con un constructor parametrizado
Dim MiEmpleado2 As New Empleado("26/2/2000")
WriteLine("El objeto se cre {0}", MiEmpleado.FechaCrea)
WriteLine()
Write("Pulse una Tecla:")
Ing. Patricio Medina M.Sc.

Pg. 62

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

ReadLine()
End Sub
End Module

Public Class Empleado


Private VarFechaCrea
Public Property FechaCrea() As Date
Get
Return VarFechaCrea
End Get
Set(ByVal Value As Date)
VarFechaCrea = Value
End Set
End Property
REM Aqui mtodo constructor con parmetro
Public Sub New(ByVal ParFecha As Date)
REM asignamos el valor del parmetro
REM a una variable de propiedad
Me.FechaCrea = ParFecha
End Sub
End Class
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 63

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 25
TEMA: MTODO CONSTRUCTOR SOBRECARGADO.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmpleado As New Empleado
MiEmpleado.VarNombre = "Lupe"
MiEmpleado.VarApellidos = "Oate"
MiEmpleado.VarCiudad = "Ambato"
MiEmpleado.VerEmpleado()
WriteLine()
Dim MiEmpleado2 As New Empleado("Isabel", "Oate",
"Riobamba", #8/30/2008#)
MiEmpleado2.VerEmpleado()
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
Ing. Patricio Medina M.Sc.

Pg. 64

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

End Sub
Public Class Empleado
Public VarNombre
Public VarApellidos
Public VarCiudad
Private VarFechaCrea
REM en este constructor sin parmetros,
REM asignamos la fecha actual
Public Sub New()
VarFechaCrea = Now()
End Sub
REM en este constructor, asignamos valores
REM a todos los campos de la clase
Public Sub New(ByVal PNombre As String, ByVal PApellidos As
String, ByVal PCiudad As String, ByVal PFecha As Date)
VarNombre = PNombre
VarApellidos = PApellidos
VarCiudad = PCiudad
VarFechaCrea = Pfecha
End Sub
Public Sub VerEmpleado()
WriteLine("El Empleado: " & VarNombre & " " & VarApellidos
& " " & VarFechaCrea)
End Sub
End Class
End Module

4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 65

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 26
TEMA: HERENCIA
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre
Nombre

2
Empleado
Administrativo

4. CDIGO DE LA CLASE EMPLEADO


Imports System.Console
Public Class Empleado
REM variables de propiedad
Public VarID As Integer
Public VarNombre As String
Public VarApellidos As String
Ing. Patricio Medina M.Sc.

Pg. 66

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Sub MostrarDatos()


WriteLine("Resultado es: {0} {1}", VarNombre, VarApellidos)
End Sub
End Class

5. CDIGO DE LA CLASE ADMINISTRATIVO


Imports System.Console
Public Class Administrativo
REM Aqui realizamos la Herencia

Inherits Empleado
Public Sub EnviarSaludo(ByVal PMensaje As String)
WriteLine("Remitente del mensaje: {0} {1}", Me.VarNombre,
Me.VarApellidos)
WriteLine("Texto del mensaje: {0}", PMensaje)
End Sub
End Class

6. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
REM instanciamos un objeto de la clase derivada
Dim MiAdmin As New Administrativo()
REM accedemos a los miembros de la clase padre
MiAdmin.VarNombre = "Eduardo"
MiAdmin.VarApellidos = "Chiliquinga"
MiAdmin.MostrarDatos()
WriteLine()
REM ahora accedemos a los miembros de la clase hija
MiAdmin.EnviarSaludo("Gracias Seora")
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module
7. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 67

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 27
TEMA: PRACTICA DE HERENCIA CASO PELCULAS
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre
Nombre

2
Video
DVD

4. CDIGO DE LA CLASE VIDEO


REM ===================================
REM == CREACIN DE LA CLASE VIDEO
===
REM ===================================
Public Class Video
REM DECLARAMOS 3 ATRIBUTOS O PROPIEDADES
Private atrID As String
Ing. Patricio Medina M.Sc.

Pg. 68

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Private atrTitulo As String


Private atrPrecio As Single
Public Property ID() As String
Get
Return atrID
End Get
Set(ByVal Value As String)
atrID = Value
End Set
End Property
Public Property Titulo() As String
Get
Return atrTitulo
End Get
Set(ByVal Value As String)
atrTitulo = Value
End Set
End Property
Public Property Precio() As Single
Get
Return atrPrecio
End Get
Set(ByVal Value As Single)
atrPrecio = Value
End Set
End Property
End Class

5. CDIGO DE LA CLASE DVD

REM ===================================
REM == CREACIN DE LA SUBCLASE DVD ===
REM ===================================
Public Class DVD

Inherits Video REM heredando de la clase Video


REM DECLARAMOS 1 ATRIBUTO
Private varMultiplesPistas As Boolean
Public Property MultiplesPistas() As Boolean
Get
Return varMultiplesPistas
End Get

Ing. Patricio Medina M.Sc.

Pg. 69

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Set(ByVal Value As Boolean)


varMultiplesPistas = Value
End Set
End Property
End Class
REM La clase Video contina teniendo tres propiedades, pero
nuestra REM nueva clase DVD
REM ahora tiene cuatro (las 3 de la clase Video y la nueva
REM MultiplesPistas que agregamos).
6. CDIGO DEL MDULO
REM ========================================
REM ====== HERENCIA CLASES VIDEO Y DVD ====
REM ========================================
Module Module1
Sub Main()
Dim varVideo As New Video()
Dim varDvd As New DVD()
REM ASIGNACIN DE VALORES
With varVideo
.ID = "12345"
.Titulo = "La Cenicienta"
.Precio = 10
End With

With varDvd
.ID = "67890"
.Titulo = "Spiderman EN DVD"
.Precio = 18
.MultiplesPistas = True
End With
REM IMPRESIN DE VALORES
Console.WriteLine("DATOS VIDEO BSICO")
With varVideo
Console.WriteLine("ID
:
{0}", .ID)
Console.WriteLine("Ttulo:
{0}", .Titulo)
Console.WriteLine("Precio:
{0}", .Precio)
End With
Console.WriteLine("")
Console.WriteLine("DATOS
With varDvd
WriteLine("ID
:
{0}",
WriteLine("Ttulo:
{0}",
WriteLine("Precio:
{0}",
WriteLine("Mltiples Pistas:

Ing. Patricio Medina M.Sc.

Pg. 70

DEL DVD")
.ID)
.Titulo)
.Precio)
{0}", .MultiplesPistas)

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

End With
Console.Read()
End Sub
End Module
REM EXPLICACIN
REM Para probar los conceptos de herencia vamos a crear una nueva clase base (base class)
REM y una subclase. La clase base tendr cierta funcionalidad que representa a una entidad
REM de la vida real, por ejemplo un Video. La subclase se derivar de esta clase base por
REM lo que ser tambin un Video, pero una de un tipo mas especializado. De esto se trata
REM la herencia, crear nuevas clases que tienen toda la funcionalidad de una clase base
REM pero son ms especializadas o con un foco mas restringido que la original.
REM Tener presente donde entran en juego los Overloads, Override y Shadows.

7. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 71

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 28
TEMA: REGLAS DE MBITO DE CLASES. PUBLIC Y PRIVATE
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiUsuario As Usuario
MiUsuario = New Usuario()
REM accedemos al mtodo pblico del objeto
MiUsuario.AsignarNombre("PAP")
MiUsuario.MostrarDato()
WriteLine()
Dim MiOperador As New Operador
MiOperador.MostrarDato()
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
Ing. Patricio Medina M.Sc.

Pg. 72

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

End Module

Public Class Usuario


REM esta variable slo es accesible
REM por el cdigo de la propia clase
Private VarNombre As String
Public Sub AsignarNombre(ByVal PValor As String)
VarNombre = PValor
End Sub
Public Sub MostrarDato()
Write("El Nombre es: " & VarNombre)
End Sub

End Class
Public Class Operador
Inherits Usuario
Public Sub New()
REM accedemos a un mtodo pblico de la clase base
Me.AsignarNombre("HIJO")
End Sub

End Class
PUBLIC. ser accesible por todo el cdigo de la clase,
clases heredadas y cdigo cliente
PRIVATE. ese miembro slo ser accesible por el cdigo de
la propia clase

4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 73

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 29
TEMA: REGLAS DE MBITO DE CLASES. PROTECTED.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
REM con una instancia del objeto Empleado o Administrativo
REM no podemos acceder al mtodo VerFecha()
REM ya que es Protected
Dim MiEmpleado As Empleado = New Empleado()
MiEmpleado.VarNombre = "Bolivar Morales"
MiEmpleado.DatosEmpleado()
WriteLine()
Dim MiAdmin As New Administrativo()
MiAdmin.VarID = 567
MiAdmin.VarNombre = "Victor Morales"
MiAdmin.VarFecha = "30/08/2008"
MiAdmin.AsignarCodigo("1122")
Ing. Patricio Medina M.Sc.

Pg. 74

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

MiAdmin.DatosAdmin()
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub

Public Class Empleado


Public VarNombre As String
Public VarFecha As Date
REM los dos siguientes miembros slo sern visibles
REM dentro de esta clase o en sus clases derivadas
Protected VarCodigo As String
Protected Function VerFecha()
Return VarFecha
End Function
Public Sub AsignarCodigo(ByVal PCodigo As String)
REM desde aqu s tenemos acceso a la variable
REM Protected declarada en la clase
Me.VarCodigo = PCodigo
End Sub
Public Sub DatosEmpleado()
WriteLine("Datos del Empleado")
WriteLine("Nombre: {0}", Me.VarNombre)
End Sub

End Class
Public Class Administrativo
Inherits Empleado
Public VarID As Integer
Public Sub DatosAdmin()
WriteLine("Datos del administrativo")
WriteLine("Identificador: {0}", Me.VarID)
WriteLine("Nombre: {0}", Me.VarNombre)
REM desde esta clase derivada s tenemos acceso
REM a lo miembros Protected de la clase padre
WriteLine("Fecha: {0}", Me.VerFecha())
WriteLine("Codigo: {0}", Me.VarCodigo)
End Sub

End Class
End Module
REM PROTECTED. Un miembro de clase declarado con este
REM modificador, ser accesible desde el cdigo
REM de su propia clase y desde cualquier clase heredada.

4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 75

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 30
TEMA: REGLAS DE MBITO DE CLASES. FRIEND.
1. ABRIR UN NUEVO PROYECTO
2. Seleccione Aplicacin de BIBLIOTECA DE CLASES
Cantidad
Nombre

1
FriendPrueba

3. CDIGO DE LA LIBRERIA
Imports System.Console

Public Class Empleado


Public VarID As Integer
Private VarNombre As String
REM esta variable slo puede ser
REM accesible por tipos que estn
REM dentro de este ensamblado
Friend VarSueldo As Double
Public Property Nombre() As String
Get
Return VarNombre
End Get
Set(ByVal Value As String)
VarNombre = Value
Ing. Patricio Medina M.Sc.

Pg. 76

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

End Set
End Property
Public Sub VerDatos()
WriteLine("Datos del Empleado")
WriteLine("Cdigo: {0}", Me.VarID)
WriteLine("Nombre: {0}", Me.VarNombre)
WriteLine("Sueldo: {0}", Me.VarSueldo)
End Sub

End Class
Public Class Plantilla
Public Sub Analizar()
Dim MiEmple As Empleado = New Empleado()
MiEmple.VarID = 1122
MiEmple.Nombre = "Santiago Martnez"
REM desde esta clase s podemos acceder
REM al miembro VarSueldo del objeto
REM Empleado, ya que estamos en el mismo ensamblado
MiEmple.VarSueldo = 450
MiEmple.VerDatos()
End Sub

End Class
4. GENERANDO EL ARCHIVO DLL

5. GRABAR Y CERRAR
6. ABRIR UN NUEVO PROYECTO
7. Seleccione Aplicacin de Consola

Ing. Patricio Medina M.Sc.

Pg. 77

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

8. HACER REFERENCIA HACIA EL ARCHIVO DLL

NOTA: EXAMINAR EN LA CARPETA QUE GUARDO LA LIBRERA


INGRESANDO A \BIN\DEBUG

9.

VERIFIQUE QUE SE INCLUYO ARCHIVO EN EXPLORADOR


SOLUCIONES

Ing. Patricio Medina M.Sc.

Pg. 78

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

10. CDIGO DEL MDULO


Imports System.Console
Imports FriendPrueba
Module Module1
Sub Main()
Dim OtroEmplea As Empleado = New Empleado()
REM al acceder a las propiedades del objeto
REM desde este proyecto, no est disponible
REM el miembro VarSueldo ya que est declarado
REM como Friend en la clase Empleado
OtroEmplea.VarID = 3333
OtroEmplea.Nombre = "Cristina Martnez"
OtroEmplea.VerDatos()
Write("Pulse una Tecla:") : ReadLine()
WriteLine()
Dim MiPlantilla As FriendPrueba.Plantilla = New
FriendPrueba.Plantilla()
MiPlantilla.Analizar()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module
FRIEND ser accesible por todo el cdigo del ensamblado es
decir solo en el DLL.
11. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 79

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 31
TEMA: HERENCIA Y SOBRECARGA DE MTODOS .
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmple As Empleado = New Empleado()
MiEmple.VarNombre = "Stalin Freire"
MiEmple.VarSueldo = 1500
MiEmple.CalcularBono()
MiEmple.VerIncentivos()
WriteLine()
Dim MiAdmin As New Administrativo()
MiAdmin.VarNombre = "Bolivar Morales"
MiAdmin.VarSueldo = 900
MiAdmin.CalcularBono(10)
MiAdmin.VerIncentivos()
Write("Pulse una Tecla:") : ReadLine()
End Sub
Ing. Patricio Medina M.Sc.

Pg. 80

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Class Empleado


Public
Public
Public
Public

VarID As Integer
VarNombre As String
VarSueldo As Integer
VarBono As Integer

REM calcular los incentivos en base al sueldo


Public Sub CalcularBono()
Me.VarBono = Me.VarSueldo / 10
End Sub
Public Sub VerIncentivos()
WriteLine("Los incentivos de {0} son {1}", Me.VarNombre,
Me.VarBono)
End Sub

End Class
Public Class Administrativo
Inherits Empleado
REM calcular los incentivos en base a horas
Public Overloads Sub CalcularBono(ByVal PHoras As Integer)
Me.VarBono = PHoras * 12
End Sub

End Class
End Module
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 81

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 32
TEMA: ACCESO A MTODOS DE LA CLASE BASE. MyBase.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmple As Empleado = New Empleado()
MiEmple.VarNombre = "Stalin Freire"
MiEmple.VarSueldo = 1500
MiEmple.CalcularBono()
MiEmple.VerIncentivos()
WriteLine()
Dim MiAdmin As New Administrativo()
MiAdmin.VarNombre = "Bolivar Morales"
MiAdmin.VarSueldo = 900
MiAdmin.CalcularBono(10)
MiAdmin.VerIncentivos()
Write("Pulse una Tecla:") : ReadLine()
End Sub
Ing. Patricio Medina M.Sc.

Pg. 82

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Class Empleado


Public
Public
Public
Public

VarID As Integer
VarNombre As String
VarSueldo As Integer
VarBono As Integer

REM calcular los incentivos en base al sueldo


Public Sub CalcularBono()
Me.VarBono = Me.VarSueldo / 10
End Sub
Public Sub VerIncentivos()
WriteLine("Los incentivos de {0} ", Me.VarNombre)
WriteLine("Con Sueldo de {0} es {1}", Me.VarSueldo, Me.VarBono)

End Sub

End Class
Public Class Administrativo:Inherits Empleado
Public Overloads Sub CalcularBono(ByVal PHoras As Integer)
REM llamamos a la clase base con MyBase para hacer
REM en primer lugar los mismos clculos del bono de la clase Empleado

MyBase.CalcularBono()
REM despus se hacen los clculos propios de esta clase
Me.VarBono += PHoras * 12
End Sub

End Class
End Module
MYBASE Esta palabra clave proporciona acceso a los miembros
de una clase base desde su correspondiente subclase.
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 83

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 33
TEMA: HERENCIA Y SOBRE-ESCRITURA DE MTODOS.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmple As New Empleado()
MiEmple.VarID = 1111
MiEmple.Nombre = "Fabian Flores"
MiEmple.VerDatos()
WriteLine()
Dim MiAdmin As New Administrativo()
MiAdmin.VarID = 2222
MiAdmin.Nombre = "Mara Flores"
MiAdmin.VerDatos()
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
Ing. Patricio Medina M.Sc.

Pg. 84

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

End Module

Public Class Empleado


Public VarID As Integer
Private VarNombre As String
Public Property Nombre() As String
Get
Return VarNombre
End Get
Set(ByVal Value As String)
VarNombre = Value
End Set
End Property
REM Ponemos el mtodo como rescribible con Overridable
Public Overridable Sub VerDatos()
WriteLine("Empleado es: {0} - {1}", Me.VarID, Me.Nombre)
End Sub

End Class
Public Class Administrativo : Inherits Empleado
REM rescribimos este mtodo en forma total con Overrides
Public Overrides Sub VerDatos()
WriteLine("E M P L E A D O")
WriteLine("===============")
WriteLine("Cdigo: {0}", Me.VarID)
WriteLine("Nombre: {0}", Me.Nombre.ToUpper)
End Sub
End Class
OVERRIDABLE. Para indicar en la clase base que un mtodo
podr ser sobrescrito en una subclase, debemos declarar
dicho mtodo utilizando la palabra clave.
OVERRIDES. Cuando en una clase derivada necesitamos
rescribir el mtodo de la clase base.
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 85

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 34
TEMA: HERENCIA Y SOBRE-ESCRITURA DE MTODOS.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmple As New Empleado()
MiEmple.VarID = 1111
MiEmple.VarNombre = "Natasha Bayas"
MiEmple.VerDatos()
MiEmple.CalcularSueldo()
WriteLine("Sueldo {0}", MiEmple.Sueldo)
WriteLine()
Dim MiAdmin As New Administrativo()
MiAdmin.VarID = 2222
MiAdmin.VarNombre = "Marcelo Jijn"
MiAdmin.VerDatos()
MiAdmin.CalcularSueldo()
Ing. Patricio Medina M.Sc.

Pg. 86

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

WriteLine("Sueldo {0}", MiAdmin.Sueldo)


WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module

Public Class Empleado


Public VarID As Integer
Public VarNombre As String
Private VarSueldo As Integer
Public Property Sueldo() As Integer
Get
Return VarSueldo
End Get
Set(ByVal Value As Integer)
VarSueldo = Value
End Set
End Property
Public Sub VerDatos()
WriteLine("El Empleado es : {0}-{1}", Me.VarID, Me.VarNombre)

End Sub
Public Overridable Sub CalcularSueldo()
Me.Sueldo = 200
End Sub

End Class
Public Class Administrativo : Inherits Empleado
Public Overrides Sub CalcularSueldo()
MyBase.CalcularSueldo()
Me.Sueldo += 50
End Sub

End Class
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 87

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 35
TEMA: HERENCIA Y SOBRE-ESCRITURA DE MTODOS.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmple As New Empleado()
MiEmple.VarID = 1111
MiEmple.Nombre = "Fabian Flores"
MiEmple.VerDatos()
WriteLine()
Dim MiAdmin As New Administrativo()
MiAdmin.VarID = 2222
MiAdmin.Nombre = "Mara Flores"
MiAdmin.VerDatos()
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
Ing. Patricio Medina M.Sc.

Pg. 88

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

End Module

Public Class Empleado


Public VarID As Integer
Private VarNombre As String
Public Property Nombre() As String
Get
Return VarNombre
End Get
Set(ByVal Value As String)
VarNombre = Value
End Set
End Property
REM Ponemos el mtodo como rescribible con Overridable
Public Overridable Sub VerDatos()
WriteLine("Empleado es: {0} - {1}", Me.VarID, Me.Nombre)
End Sub

End Class
Public Class Administrativo : Inherits Empleado
REM rescribimos este mtodo en forma total con Overrides
Public NotOverridable Overrides Sub VerDatos()
WriteLine("E M P L E A D O")
WriteLine("===============")
WriteLine("Cdigo: {0}", Me.VarID)
WriteLine("Nombre: {0}", Me.Nombre.ToUpper)
End Sub

End Class
Public Class Directivo : Inherits Administrativo
REM Aqui se produce un error, no se puede sobrescribir este mtodo

REM ya que la clase Administrativo lo impide con NotOverridable

Public Overrides Sub VerDatos()


WriteLine("Empleado es: " & Me.Nombre)
End Sub

End Class
No podemos utilizar NotOverridable en mtodos de una clase
base.
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 89

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 36
TEMA: DIFERENCIA ENTRE SOBRECARGA Y SOBRE-ESCRITURA.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiPersona As Empleado
MiPersona = New Administrativo()
MiPersona.VarNombre = "Andrs Cruz"
MiPersona.VarFalta = "26/02/2000"
REM como la sobrecarga utiliza enlace temprano,
REM se basa en el tipo de la variable y no
REM en el objeto que se asigna a esa variable,
REM por ello slo es visible la implementacin
REM del mtodo que hay en la clase Empleado
MiPersona.VerAlta()
REM Por favor intentente poner lo siguiente:
REM MiPersona.VerAlta("Mes")

REM si intentamos ejecutar el mtodo VerAlta()

Ing. Patricio Medina M.Sc.

Pg. 90

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

REM que recibe una cadena, se producir un error


Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module

Public Class Empleado


Public VarNombre As String
Public VarFalta As Date
REM Ver la fecha de alta completa
Public Sub VerAlta()
WriteLine("El empleado {0} se incorpor el {1}",
Me.VarNombre, Me.VarFalta)
End Sub

End Class
Public Class Administrativo : Inherits Empleado
REM Ver slo una parte de la fecha de alta
REM segn el parmetro pasado
Public Overloads Sub VerAlta(ByVal PParteFecha As String)
Dim LValorFecha As String = ""
Select Case PParteFecha
Case "Mes"
LValorFecha = Format(Me.VarFalta, "MMMM")
Case "DiaSemana"
LValorFecha = Format(Me.VarFalta, "dddd")
End Select
WriteLine("Empleado {0}", Me.VarNombre)
WriteLine("Incorporado {0}", LValorFecha)
End Sub

End Class
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 91

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 37
TEMA: DIFERENCIA ENTRE SOBRECARGA Y SOBRE-ESCRITURA.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiPersona As Empleado
MiPersona = New Administrativo()
MiPersona.VarNombre = "Sebastin Cruz"
REM
REM
REM
REM
REM
REM
REM

como la sobre-escritura utiliza enlace tardo,


se basa en el objeto que contiene la variable y
no en el tipo de dato de la variable, se ejecuta
la versin del mtodo MostrarNombre() que est
en la clase Administrativo, ya que el objeto
que contiene la variable MiPersona es una
instancia de Administrativo

MiPersona.MostrarNombre()
Ing. Patricio Medina M.Sc.

Pg. 92

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module

Public Class Empleado


Public VarNombre As String
Public VarFalta As Date
Public Overridable Sub MostrarNombre()
WriteLine("El nombre del empleado es {0}", Me.VarNombre)
End Sub
End Class

Public Class Administrativo : Inherits Empleado


Public Overrides Sub MostrarNombre()
WriteLine("E M P L E A D O")
WriteLine("===============")
WriteLine(Me.VarNombre.ToUpper)
End Sub

End Class
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 93

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 38
TEMA: OCULTAMIENTO DE MIEMBROS DE UNA CLASE.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiAdmin As New Administrativo()
Dim LImporte As Double
Dim LFecha As String
MiAdmin.Salario = 500
LImporte = MiAdmin.Sueldo(100, "Viajes")
REM los siguientes mtodos estn ocultos
REM desde este objeto y se produce un error al llamarlos
REM MiAdmin.Sueldo()
REM LFecha = MiAdmin.Sueldo(8)
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module

Ing. Patricio Medina M.Sc.

Pg. 94

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Class Empleado


Private VarSalario As Double
Public Property Salario() As Double
Get
Return VarSalario
End Get
Set(ByVal Value As Double)
VarSalario = Value
End Set
End Property
REM Aqui mtodos sobrecargados
Public Overloads Sub Sueldo()
REM aqu vemos el importe del sueldo formateado
WriteLine("El sueldo es {0}", Format(Me.Salario, "#,#.##"))
End Sub
Public Overloads Function Sueldo(ByVal PDia As Integer) As String

REM aqu vemos la fecha del mes actual


REM en la que se realizar la transferencia
REM del sueldo al banco del empleado
Dim LFechaActual As Date
Dim LFechaCobro As String
LFechaActual = Now()
LFechaCobro = CStr(PDia) & "/" & CStr(Month(LFechaActual))
& "/" & CStr(Year(LFechaActual))
Return LFechaCobro
End Function

End Class

Public Class Administrativo


Inherits Empleado
REM este mtodo oculta a los sobrecargados
REM de la clase base Empleado
Public Shadows Function Sueldo(ByVal PImporteIncentivo As
Double, ByVal PTipoIncentivo As String) As Double
REM aqu calculamos la cantidad de incentivo
REM que se aadir al sueldo del empleado,
REM en funcin del tipo de incentivo
Dim LIncentivo As Double
Select Case PTipoIncentivo
Case "Viajes"
LIncentivo = PImporteIncentivo - 30
Case "Extras"
LIncentivo = PImporteIncentivo - 10
End Select
Return LIncentivo
End Function

End Class
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 95

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 39
TEMA: PALABRAS ME, MyCLASS, MyBASE.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiDirec As Directivo = New Directivo()
MiDirec.VarID = 1111
MiDirec.VarNombre = "Cristina Ortiz"
MiDirec.VarFalta = "24/5/2006"
MiDirec.DameInformacion()
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module

Public Class Empleado


Public VarID As Integer
Public VarNombre As String

Ing. Patricio Medina M.Sc.

Pg. 96

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public VarFalta As Date


Public Overridable Sub VerDatos()
WriteLine("Empleado." & " ID:{0} - Nombre:{1} - Fecha de
alta:{2}", Me.VarID, Me.VarNombre, Me.VarFalta)
End Sub

End Class
Public Class Administrativo : Inherits Empleado
Public Overrides Sub VerDatos()
WriteLine("E M P L E A D O")
WriteLine("===============")
WriteLine("Identificador: {0}", Me.VarID)
WriteLine("Nombre: {0}", StrConv(Me.VarNombre,
VbStrConv.ProperCase))
WriteLine("Fecha de alta: {0}", Format(Me.VarFalta,
"dd/MMM/yy"))
End Sub
Public Sub DameInformacion()
REM cuando el objeto en ejecucin es de la clase derivada Directivo

REM los resultados de las llamadas desde


REM este mtodo al mtodo VerDatos() son los siguientes:
REM llama a Empleado.VerDatos() - Enlace temprano
MyBase.VerDatos()
WriteLine()
REM llama a Administrativo.VerDatos() - Enlace temprano
MyClass.VerDatos()
WriteLine()
REM llama a Directivo.VerDatos() - Enlace tardo
Me.VerDatos()
WriteLine()
REM llama a Directivo.VerDatos() - Enlace tardo
VerDatos()
WriteLine()
End Sub

End Class
Public Class Directivo : Inherits Administrativo
Public Overrides Sub VerDatos()
WriteLine("El empleado {0} inicio en el mes de:",
Me.VarNombre)

Ing. Patricio Medina M.Sc.

Pg. 97

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

WriteLine(Format(Me.VarFalta, "MMMM"))
End Sub

End Class
Me y MyClass, sirven para llamar a los miembros de una
clase desde el cdigo de la propia clase; mientras que con
la palabra clave MyBase podemos llamar a los miembros de la
clase base desde una subclase.

4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 98

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 40
TEMA: HERENCIA Y MTODOS CONSTRUCTORES.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmpleado As New Empleado("Esteban")
Dim MiAdmin As New Administrativo
MiEmpleado.VerDatos()
WriteLine()
MiAdmin.VerDatos()
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module

Public Class Empleado


Public VarID As Integer

Ing. Patricio Medina M.Sc.

Pg. 99

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public VarNombre As String


Public VarSueldo As Integer
REM constructor parametrizado
Public Sub New(ByVal PNombre As String)
Me.VarNombre = PNombre
End Sub
Public Sub VerDatos()
WriteLine("Empleado: " & Me.VarNombre)
End Sub

End Class
Public Class Administrativo
Inherits Empleado
REM constructor normal
Public Sub New()
REM llamada al constructor de la clase base
MyBase.New("Lorena")
Me.VarSueldo = 100
End Sub
Public Overloads Sub VerDatos()
WriteLine("Administrativo: " & Me.VarNombre)
End Sub

End Class
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 100

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 41
TEMA: HERENCIA Y MTODOS CONSTRUCTORES.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmpleado As New Empleado("Esteban")
Dim MiAdmin As New Administrativo
MiEmpleado.VerDatos()
WriteLine()
MiAdmin.VerDatos()
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module

Public Class Empleado


Public VarID As Integer

Ing. Patricio Medina M.Sc.

Pg. 101

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public VarNombre As String


Public VarSueldo As Integer
REM constructor parametrizado
Public Sub New(ByVal PNombre As String)
Me.VarNombre = PNombre
End Sub
REM constructor sin parmetros
Public Sub New()
VarNombre = "Lorena"
End Sub
Public Sub VerDatos()
WriteLine("Empleado: " & Me.VarNombre)
End Sub
End Class

Public Class Administrativo


Inherits Empleado
REM
REM
REM
REM

al disponer en la clase base de


un constructor normal, ya no hay
necesidad de crear un constructor
en esta clase derivada

Public Overloads Sub VerDatos()


WriteLine("Administrativo: " & Me.VarNombre)
End Sub

End Class
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 102

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 42
TEMA: POLIMORFISMO BASADO EN HERENCIA
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola
3. Agregando la CLASE
Cantidad
Nombre
Nombre
Nombre

3
Pago
PagoBonificado
PagoBonificadoExtra

4. CDIGO DE LA CLASE PAGO


REM ======== CLASE 1 ============
REM === CLCULO DEL PAGO NETO ===
REM =============================
Public Class Pago
Public Overridable Function CalculaPago(ByVal
horasTrabajadas As Decimal, ByVal pagoXHora As Decimal) As
Decimal

Ing. Patricio Medina M.Sc.

Pg. 103

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Return (horasTrabajadas * pagoXHora)


End Function
End Class
5. CDIGO DE LA CLASE PAGOBONIFICADO
REM ============== CLASE 2=======================
REM === ES EL VALOR DEL PAGO * EL BONO DE PUNTUALIDAD
REM ==========================================
Public Class PagoBonificado

Inherits Pago
Public Overrides Function CalculaPago(ByVal horasTrabajadas
As Decimal, ByVal pagoXHora As Decimal) As Decimal
Dim PagoNeto As Decimal
PagoNeto = MyBase.CalculaPago(horasTrabajadas, pagoXHora)
Return PagoNeto * BonoPuntualidad
End Function
End Class
REM Overrides = Reemplazo

6. CDIGO DE LA CLASE PAGOBONIFICADOEXTRA


REM ============== CLASE 3 =================
REM == ES EL VALOR DEL PAGO * VALOR EXTRA ==
REM =====================================
Public Class PagoBonificadoExtra

Inherits PagoBonificado
REM CLCULO DE PAGO CON BONIFICACIN Y EXTRA
Public Overloads Function CalculaPago(ByVal horasTrabajadas
As Decimal, ByVal pagoXHora As Decimal, ByVal extra As
Decimal) As Decimal
Dim mipago As Decimal
mipago = MyBase.CalculaPago(horasTrabajadas, pagoXHora)
Return mipago * extra
End Function
End Class
REM OVERLOAD = Sustitucin

7. CDIGO DEL MDULO

Ing. Patricio Medina M.Sc.

Pg. 104

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

REM =======================================
REM == USO POLIMORFISMO BASADO EN HERENCIA
REM =======================================
Imports System.Console
Module Module1
Public Const PagoXHoraVig As Decimal = 5
Public Const BonoPuntualidad As Decimal = 1.25
Sub Main()
Dim PagoNoPuntuales As Pago = New Pago
Dim PagoPuntuales As New PagoBonificado
Dim PagoPuntualesPlus As New PagoBonificadoExtra
Dim Horas As Decimal = 20
WriteLine("PAGO A LOS NO PUNTUALES
: " &
PagoNoPuntuales.CalculaPago(Horas, PagoXHoraVig))
WriteLine("PAGO A LOS PUNTUALES
: " &
PagoPuntuales.CalculaPago(Horas, PagoXHoraVig))
WriteLine("PAGO A LOS PUNTUALES + EXTRAS : " &
PagoPuntualesPlus.CalculaPago(Horas, PagoXHoraVig, 2))
WriteLine("Terminado:")
ReadLine()
End Sub
End Module
REM EXPLICACIN
1.El mtodo PAGO.CALCULAPAGO() requiere 2 argumentos: horas trabajadas y
valor hora
2.El calculo es la multiplicacin de los 2 argumentos anteriores
3.La clase PAGOBONIFICADO hereda funcionalidad de la clase PAGO
4.La clase PAGOBONIFICADOEXTRA hereda funcionalidad de la clase
PAGOBONIFICADO
5.Las relaciones de herencia queda: PAGO es clase base de PAGOBONIFICADO
6.PAGOBONIFICADO es clase Derivada de PAGO y clase base de
PAGOBONIFICADOEXTRA
7.PAGOBONIFICADOEXTRA Slo es clase derivada de PAGOBONIFICADO
8.Ahora respecto a los mtodos:
9.El mtodo PAGO.CALCULAPAGO() es sustituido por
PAGOBONIFICADO.CALCULAPAGO()
10.Y PAGOBONIFICADO.CALCULAPAGO es sustituido por
PAGOBONIFICADOEXTRA.CALCULAPAGO()

8. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 105

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 43
TEMA: CLASES ABSTRACTAS O NO INSTANCIABLES.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiAdmin As New Administrativo()
MiAdmin.VarID = 1111
MiAdmin.VarNombre = "Paulina Alvarado"
WriteLine("Nombre en maysculas del administrativo: {0}",
MiAdmin.NombreMay)
MiAdmin.VarFalta = "18/10/2001"
MiAdmin.MesesActivo()
WriteLine()
MiAdmin.VerDatos()
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module
Ing. Patricio Medina M.Sc.

Pg. 106

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

REM clase abstracta, no podemos crear objetos Empleado

Public MustInherit Class Empleado


Public VarID As Integer
Public VarNombre As String
Public VarFalta As Date
Public ReadOnly Property NombreMay() As String
Get
Return UCase(Me.VarNombre)
End Get
End Property
REM mtodo abstracto; este mtodo debe ser sobrescrito
REM por la clase derivada
Public MustOverride Sub MesesActivo()
Public Sub VerDatos()
WriteLine("Informacin sobre el empleado." & _
" ID:{0} - Nombre:{1} - Fecha de alta:{2}", _
Me.VarID, Me.VarNombre, Me.VarFalta)
Console.WriteLine()
End Sub

End Class
REM desde esta clase tendremos acceso
REM a los miembros de la clase Empleado

Public Class Administrativo


Inherits Empleado
REM en esta clase sobrescribimos este mtodo
REM declarado como abstracto en la clase abstracta
Public Overrides Sub MesesActivo()
WriteLine("Ingreso en el mes de {0}", Format(Me.VarFalta,
"MMMM"))
WriteLine("El nmero de meses que lleva es: {0}", _
DateDiff(DateInterval.Month, Me.VarFalta, Now))
End Sub

End Class
Debemos tener en cuenta que los miembros abstractos slo
tienen sentido si son declarados en clases abstractas. Por
tal motivo, slo podremos crear mtodos con MustOverride en
clases que hayan sido definidas como MustInherit.
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 107

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 44
TEMA: COMPROBAR TIPO DE OBJETO.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmple As New Empleado()
MiEmple.VarID = 1111
MiEmple.VarNombre = "Santiago Martnez"
ManipularVarios(MiEmple)
WriteLine()
Dim MiFac As New Factura()
MiFac.VarFecha = "16/08/2008"
MiFac.VarTotFactura = 500
ManipularVarios(MiFac)
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub

Ing. Patricio Medina M.Sc.

Pg. 108

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Sub ManipularVarios(ByVal MiObjeto As Object)


REM Obtenemos informacin sobre el tipo del objeto
Dim LTipoObj As Type
LTipoObj = MiObjeto.GetType()
REM comprobamos qu tipo de objeto es,
REM y en funcin de eso, ejecutamos el
REM mtodo adecuado
Select Case LTipoObj.Name
Case "Empleado"
CType(MiObjeto, Empleado).VerDatos()
Case "Factura"
CType(MiObjeto, Factura).Emitir()
End Select
End Sub

Public Class Empleado


Public VarID As String
Public VarNombre As String
Public Overridable Sub VerDatos()
WriteLine("Empleado: {0}, Nombre: {1}", Me.VarID,
Me.VarNombre)
End Sub

End Class
Public Class Factura
Public VarFecha As Date
Public VarTotFactura As Integer
Public Sub Emitir()
WriteLine("DATOS DE LA FACTURA:")
WriteLine("Fecha de factura: {0}", Me.VarFecha)
WriteLine("Total de la factura: {0}", Me.VarTotFactura)
End Sub

End Class
End Module
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 109

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 45
TEMA: COMPROBAR TIPO DE OBJETO CON HERENCIA.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmple As New Empleado()
MiEmple.VarID = 58
MiEmple.VarNombre = "MARIANELA ESCOBAR"
ManipularVarios(MiEmple)
WriteLine()
Dim MiAdmin As New Administrativo()
MiAdmin.VarID = 80
MiAdmin.VarNombre = "MNICA ORTIZ"
ManipularVarios(MiAdmin)
WriteLine()
Dim MiFac As New Factura()
Ing. Patricio Medina M.Sc.

Pg. 110

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

MiFac.VarFecha = "16/8/2008"
MiFac.VarTotFactura = 600
MiFac.Emitir()
WriteLine()
REM Otra Forma de Imprimir
ManipularVarios(MiFac)
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
Public Sub ManipularVarios(ByVal MiObjeto As Object)
REM obtenemos informacin sobre el tipo del objeto
Dim LTipoObj As Type
LTipoObj = MiObjeto.GetType()
REM comprobamos qu tipo de objeto es,
REM y en funcin de eso, ejecutamos el mtodo adecuado
Select Case LTipoObj.Name
Case "Empleado", "Administrativo"
CType(MiObjeto, Empleado).VerDatos()
Case "Factura"
CType(MiObjeto, Factura).Emitir()
End Select
End Sub
End Module

Public Class Empleado


Public VarID As String
Public VarNombre As String
Public Overridable Sub VerDatos()
WriteLine("Empleado: {0}, Nombre: {1}", Me.VarID,
Me.VarNombre)
End Sub

End Class
Public Class Factura
Public VarFecha As Date
Public VarTotFactura As Integer
Public Sub Emitir()
WriteLine("DATOS DE LA FACTURA:")
WriteLine("Fecha de factura: {0}", Me.VarFecha)
WriteLine("Total de la factura: {0}", Me.VarTotFactura)
End Sub

End Class
Public Class Administrativo
Inherits Empleado
Public VarFalta As Date
Public Overrides Sub VerDatos()

Ing. Patricio Medina M.Sc.

Pg. 111

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

WriteLine("DATOS DEL ADMINISTRATIVO")


WriteLine("========================")
WriteLine("Cdigo: {0}", Me.VarID)
WriteLine("Nombre: {0}", Me.VarNombre)
End Sub
Public Function MesAlta()
Return Format(Me.VarFalta, "MMMM")
End Function

End Class
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 112

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 46
TEMA: COMPROBAR TIPO DE OBJETO MTODO PARTICULAR.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiEmple As New Empleado()
MiEmple.VarID = 58
MiEmple.VarNombre = "MARIBEL CABEZAS"
ManipularVarios(MiEmple)
WriteLine()
Dim MiAdmin As New Administrativo()
MiAdmin.VarID = 80
MiAdmin.VarNombre = "MARCELO QUINTEROS"
ManipularVarios(MiAdmin)
WriteLine()
Dim MiFac As New Factura()
Ing. Patricio Medina M.Sc.

Pg. 113

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

MiFac.VarFecha = "16/8/2008"
MiFac.VarTotFactura = 500
REM Otra Forma de Imprimir
ManipularVarios(MiFac)
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
Public Sub ManipularVarios(ByVal MiObjeto As Object)
Dim LTipoObj As Type
LTipoObj = MiObjeto.GetType()
Select Case LTipoObj.Name
Case "Empleado"
CType(MiObjeto, Empleado).VerDatos()
REM aadimos este caso a la estructura
Case "Administrativo"
CType(MiObjeto, Administrativo).VerDatos()
WriteLine("EL ADMINISTRATIVO INICIO EN {0}", _
CType(MiObjeto, Administrativo).MesAlta())
Case "Factura"
CType(MiObjeto, Factura).Emitir()
End Select
End Sub
End Module

Public Class Empleado


Public VarID As String
Public VarNombre As String
Public Overridable Sub VerDatos()
WriteLine("Empleado: {0}, Nombre: {1}", Me.VarID,
Me.VarNombre)
End Sub
End Class

Public Class Factura


Public VarFecha As Date
Public VarTotFactura As Integer
Public Sub Emitir()
WriteLine("DATOS DE LA FACTURA:")
WriteLine("Fecha de factura: {0}", Me.VarFecha)
WriteLine("Total de la factura: {0}", Me.VarTotFactura)
End Sub

End Class
Public Class Administrativo
Inherits Empleado

Ing. Patricio Medina M.Sc.

Pg. 114

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public VarFalta As Date


Public Overrides Sub VerDatos()
WriteLine("DATOS DEL ADMINISTRATIVO")
WriteLine("========================")
WriteLine("Cdigo: {0}", Me.VarID)
WriteLine("Nombre: {0}", Me.VarNombre)
End Sub
Public Function MesAlta()
Return Format(Me.VarFalta, "MMMM").ToUpper
End Function

End Class
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 115

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 47
TEMA: MIEMBROS COMPARTIDOS.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
Dim MiValor As String
REM aunque no hemos instanciado objetos
REM de la clase Empleado, podemos llamar a este mtodo compartido

WriteLine("Nombre del mes: {0}",


Empleado.MostrarNombreMes())
REM ahora creamos una instancia de la clase
Dim MiEmpleado As New Empleado()
MiValor = MiEmpleado.MostrarNombreDia()
WriteLine("Nombre del da: {0}", MiValor)
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module
Ing. Patricio Medina M.Sc.

Pg. 116

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Public Class Empleado


Public Shared Function MostrarNombreMes() As String
REM este mtodo puede ser llamado
REM directamente empleando el nombre
REM de la clase como calificador
Return Format(Now(), "MMMM")
End Function
Public Function MostrarNombreDia() As String
REM este mtodo precisa de una instancia para ser llamado
Return Format(Now(), "dddd")
End Function

End Class
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 117

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 48
TEMA: MIEMBROS COMPARTIDOS EN VARIABLES.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
REM accedemos a la variable compartida y le asignamos valor
Empleado.VarApellido = "Moreno"
REM instanciamos un primer objeto Empleado
Dim MiEmple1 As New Empleado()
REM asignamos valor a su variable de instancia
MiEmple1.VarNombre = "Mnica"
REM mostramos las dos variables del objeto
WriteLine("Objeto Empleado 1 - sus valores")
WriteLine("Nombre: {0} - Apellidos: {1}",
MiEmple1.VarNombre, Empleado.VarApellido)
WriteLine()
Ing. Patricio Medina M.Sc.

Pg. 118

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

REM instanciamos un segundo objeto Empleado


Dim MiEmple2 As New Empleado()
REM asignamos valor a su variable de instancia
MiEmple2.VarNombre = "Juan"
REM mostramos las dos variables del objeto
WriteLine("Objeto Empleado 2 - sus valores")
WriteLine("Nombre: {0} - Apellidos: {1}",
MiEmple2.VarNombre, Empleado.VarApellido)
WriteLine()
REM ahora mostramos el valor de la variable compartida VarContar

WriteLine("Se han instanciado {0} objetos de la clase


Empleado", Empleado.VarContar)
WriteLine()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module

Public Class Empleado


Public
Public
Public
Public

VarNombre As String REM miembro de instancia


Shared VarApellido As String REM miembro compartido
Shared VarContar As Integer REM miembro compartido
Sub New()
REM por cada instancia de la clase creada,
REM incrementar este campo compartido
VarContar += 1
End Sub

End Class
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 119

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

TALLER 49
TEMA: ESTRUCTURAS.
OJO POR MAYOR COMPRENSIN CREAREMOS LA CLASE EN EL MISMO
CDIGO DEL PROYECTO
1. Abrir un nuevo Proyecto
2. Seleccione Aplicacin de Consola

3. CDIGO DEL MDULO


Imports System.Console
Module Module1
Sub Main()
REM declarar una variable de la estructura y manipularla directamente

Dim MiBanco1 As DatosBanco


MiBanco1.MiCuenta = 10
MiBanco1.Titular = "Soledad Guerrero"
MiBanco1.Cedula = "11111"
MiBanco1.Saldo = 100
MiBanco1.Informacion()
Console.WriteLine()
REM declaramos una variable de la estructura
REM pero aqu la instanciamos antes de
REM comenzar a trabajar con ella, para que
REM se ejecute su mtodo constructor
Dim MiBanco2 As DatosBanco
MiBanco2 = New DatosBanco(450)
Ing. Patricio Medina M.Sc.

Pg. 120

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

MiBanco2.MiCuenta = 20
MiBanco2.Titular = "Christian Poveda"
MiBanco2.Cedula = "22222"
MiBanco2.Informacion()
Console.WriteLine()
REM en esta ocasin trabajamos con los
REM miembros compartidos de la estructura,
REM por lo que no es necesario una variable
REM con el tipo de la estructura, sino que
REM usamos directamente los miembros compartidos
WriteLine("La fecha de apertura de la cuenta es {0}", _
DatosBanco.FApertura)
DatosBanco.SaldoMin()
Write("Pulse una Tecla:") : ReadLine()
End Sub
End Module

Public Structure DatosBanco


Public MiCuenta As Integer
Public Titular As String
Public Saldo As Integer
Private MiCedu As String
Shared FApertura As Date
Shared SaldoMinimo As Integer
REM el constructor de una estructura debe definirse con
REM parmetros; si no ponemos parmetros hay que declararlo
REM como compartido
Public Sub New(ByVal liSaldo As Integer)
Saldo = liSaldo
End Sub
Public Property Cedula() As String
Get
Return MiCedu
End Get
Set(ByVal Value As String)
MiCedu = Value
End Set
End Property
Public Sub Informacion()
WriteLine()
WriteLine("INFORMACIN DE LA CUENTA")
WriteLine("Cdigo: {0} - Titular: {1} - Cdula: {2} Saldo: {3}", MiCuenta, Titular, Me.Cedula, Saldo)
End Sub
REM
REM
REM
REM los

miembros compartidos de la estructura


si el constructor no tiene parmetros
debe ser compartido (shared), y adems,
miembros que maneje deben ser tambin compartidos

Ing. Patricio Medina M.Sc.

Pg. 121

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c

F -X C h a n ge

F -X C h a n ge

c u -tr a c k

N
y
bu
to
k
lic

Digitally signed
by PatmedPOO
Shared
Sub New()
DN: cn=PatmedPOO,
c=EC,
FApertura
= Now
o=Personal, ou=Personal
SaldoMinimo = 150
Location: PUCESA
Date: 2012.05.23
09:47:51 -05'00'
End Sub

REM mtodo compartido que devuelve el saldo mnimo


Shared Sub SaldoMin()
WriteLine("El saldo mnimo necesario debe ser de {0}",
SaldoMinimo)
End Sub

End Structure
4. GRABAR Y EJECUTAR

Ing. Patricio Medina M.Sc.

Pg. 122

.d o

.c

.d o

lic

to

bu

O
W
!

PD

O
W
!

PD

c u -tr a c k

.c