Sei sulla pagina 1di 15

07/05/2016

Prctica de POO con


Visual Basic

Parte 1
Crear y editar una clase

Etapas del desarrollo de una


Solucin .NET OO con Visual Basic

1. Crear la clase y sus miembros


(Biblioteca de Clase)
2. Utilizar la clase (Windows
Forms)
3. Ampliar la clase con sobrecarga
y manejo de eventos
4. Aplicar herencia de clases

07/05/2016

Crear la primera clase


personas: una clase reutilizable
personas
En muchos de los programas que escribimos se
utiliza registro de personas:
Un administrador de contactos para clientes.
Un seguimiento de empleados.
Aunque los programas pueden ser bastante
diferentes, los atributos que se aplican a cada
persona seran los mismos.
Todas las personas tienen nombre, edad,
direccin, nmero de telfono, etc.
Comenzaremos la prctica creando una clase que
represente a una persona.
persona
Podemos guardar esta clase y utilizarla en
otros programas que escribamos en el futuro.

Crear la primera clase


personas: una clase reutilizable
personas
Las clases se pueden crear de tres maneras:
1. como parte del cdigo en un mdulo de
formulario en un proyecto de aplicacin
Windows Forms,
2. como un mdulo de clase separado
agregado a un proyecto de aplicacin
Windows Forms o
3. como un proyecto de bibliotecas de
clase independiente.

07/05/2016

Crear la primera clase


personas: una clase reutilizable
personas
En la primerar modalidad (crear clases en un
mdulo de formulario) encontramos una
desventaja: slo estar disponible dentro del
proyecto que contiene el formulario.
Si deseamos compartir una clase con otros
proyectos, necesitamos crearla en un mdulo
de clase.
Un mdulo de clase es un archivo de cdigo,
separado del resto, que contiene una o ms
clases.
Como es un archivo independiente, se puede
utilizar en otros proyectos.

Crear la primera clase


personas: una clase reutilizable
personas

Los mdulos de clase se pueden crear


de dos maneras:
Como un mdulo agregado a un
proyecto de aplicacin Windows
Forms.
Como un proyecto de bibliotecas de
clase independiente

07/05/2016

Crear la primera clase


personas: una clase reutilizable
personas

Un mdulo de clase puede agregarse a


un proyecto existente seleccionando
Clase en el cuadro de dilogo Agregar
nuevo elemento, disponible en el
men Proyecto.
Como ejercicio crearemos un proyecto
de bibliotecas de clases independientes.
(dll)

Crear la primera clase


personas: una clase reutilizable
personas
En el men File, seleccionamos New Project.
En el panel Templates, del cuadro de dilogo New
Project, hacemos clic en Class Library.

En la casilla Name,
escribimos Personas y
hacemos clic en el botn OK.

07/05/2016

Crear la primera clase


personas: una clase reutilizable
personas

Observamos que el nombre en el


Editor de Cdigo tambin cambia a
Personas.vb.

En el Explorador de
soluciones, hacemos clic con el
botn secundario del ratn en
Class1.vb y seleccionamos
Cambiar nombre y, a
continuacin, cambiamos el
nombre a "Personas.vb".

Crear la primera clase


personas: una clase reutilizable
personas

En el men File, elegimos Save All.


En el cuadro de dilogo Save Project, definimos una
Location especial.
NOTA: podemos crear un directorio en el cual
almacenar todas las clases para reutilizarlas mas
tarde (en este caso es C:\devel\vboop)
Guardamos el Proyecto con el botn Save y cerramos.
Mantendremos el proyecto abierto, porque lo usaremos
durante todo el ejercicio.

07/05/2016

Editar la clase personas

propiedades
Ahora, aprenderemos a agregar propiedades a
la clase que creamos en la seccin anterior.
Todos los objetos tienen atributos y las
propiedades representan esos atributos.
Consideremos la clase "Personas", que
representa a una persona.
Las personas tienen atributos como el nombre y
la edad, por lo que la clase Personas necesita
propiedades que representen dichos atributos.

Editar la clase personas

propiedades
Se pueden agregar propiedades a una
clase de dos maneras:
Como campo.
Como procedimiento de propiedad.
Tambin podemos determinar cmo
funciona una propiedad utilizando los
modificadores Public, ReadOnly o
WriteOnly.

07/05/2016

Editar la clase personas

propiedades
Los campos son variables pblicas dentro de una clase
que se pueden establecer o leer desde fuera de la clase.
Resultan de utilidad para propiedades que no se tienen
que validar, por ejemplo, un valor "Boolean" (True o
False).
En el caso de la clase Personas, se puede tener una
propiedad Boolean denominada soltero, que especifica
si el estado civil de una persona es soltero o no, puesto
que hay slo dos valores posibles.
Para agregar un campo a una clase, el cdigo podra ser
como el que sigue:
Public Soltero As Boolean

Editar la clase personas

propiedades
Pero, en la mayor parte de los casos usaremos
procedimientos de propiedad para agregar
una propiedad a una clase.
Los procedimientos de propiedad tienen tres
partes:
Una declaracin de una variable privada
para almacenar el valor de la propiedad.
Un procedimiento Get que expone el valor.
Un procedimiento Set que establece el valor.
Veamos un procedimiento de propiedad para
una propiedad NomCompleto, de la clase
Personas:

07/05/2016

Editar la clase personas

procedimientos de propiedad
Private nombreValor As String

Campo string privado que


almacena el valor de la
propiedad

Public Property NomCompleto() As String


Inicia el procedimiento
Get
de propiedad
NomCompleto = nombreValor
Cdigo que se ejecuta para
End Get
recuperar el valor del campo.
Set(ByVal value As String)
Si leemos oPersona.NomCompleto
nombreValor = value
el cdigo devolver el valor
almacenado en el campo
End Set
nombreValor
End Property

Cierra el procedimiento
de propiedad

Cdigo para introducir un valor en el campo


nombreValor con el argumento valor.
Si escribimos oPersona.NomCompleto=Carlos,
el valor string Carlos se pasa como parmetro
value; el Set lo asignar al campo nombreValor
para almacenarlo.

Editar la clase personas

procedimientos de propiedad
Porqu usamos un procedimiento de propiedad
en lugar de un campo?:
En el mundo real, hay ciertas reglas para los
nombres de personas: por ejemplo, los
nombres de personas no contienen nmeros
Para hacer un control en base a requisitos
como este, se puede agregar cdigo al
procedimiento Set para comprobar el
argumento value e impedir el almacenamiento
de nombres de persona invlidos en el campo.

07/05/2016

Editar la clase personas

procedimientos de propiedad
Vamos a crear procedimientos de propiedad para
la clase Personas
Agregamos cdigo de declaracin debajo de la
lnea Public Class Personas:
Private nombre1Valor As String
Private nombre2Valor As String
Private apellido1Valor As String
Private apellido2Valor As String
Public soltero As Boolean

Editar la clase personas

procedimientos de propiedad
procedimiento de propiedad Nombre1 para la clase
Personas
Public Property Nombre1() As String
Get
Nombre1 = nombre1Valor
End Get
Set(ByVal value As String)
nombre1Valor = value
End Set
End Property
para completar: escribir el cdigo de procedimiento de
propiedad para las propiedades Nombre2, Apellido1 y
Apellido2

07/05/2016

Editar la clase personas


procedimientos de propiedad
WriteOnly y ReadOnly
Los procedimientos de propiedad pueden ser ReadOnly y
WriteOnly cuando deseamos tomar un valor de propiedad y
convertirlo en un valor diferente.
Por ejemplo, pensemos en la antigedad en un puesto de
trabajo de una persona.
A diferencia del nombre, la antigedad cambia con el
tiempo; el error sera almacenar la antigedad como un
dato esttico; si se lee un ao despus de haber sido
guardada, la informacin devuelta sera incorrecta.
En la clase Personas, podemos evitarlo agregando dos
propiedades:
una propiedad "WriteOnly ingresoAnio" que representa
el ao de ingreso al puesto de trabajo, que nunca
cambia, y
una propiedad "ReadOnly Antiguedad" que devuelve
un valor calculando la diferencia entre el ao en curso y
el ao de ingreso

Editar la clase personas


procedimientos de propiedad
WriteOnly y ReadOnly
Private AnioIngreso As Integer
WriteOnly Property aIngreso() As Integer
Set(ByVal value As Integer

AnioIngreso = value
End Set
End Property
ReadOnly Property Antiguedad() As String
Get

Antiguedad = _
My.Computer.Clock.LocalTime.Year AnioIngreso
End Get
End Property

10

07/05/2016

Editar la clase Personas


mtodos
Agregar mtodos a una clase

Agregaremos mtodos a una clase para que pueda


realizarse acciones con ella.
La mayora de los objetos tienen acciones que
pueden realizar. Estas acciones se implementarn
con mtodos.
La clase Personas que creamos tiene muchas
acciones que pueden realizar las personas y estas
acciones se pueden expresar como mtodos de
clase.

Editar la clase Personas


mtodos
Mtodos de una clase
Los mtodos de una clase se implementan con
mdulos Sub o Function, declarados dentro de la
clase.
clase
Si bien la mayora de los mtodos de clase son
pblicos, tambin se pueden agregar mtodos que
slo la propia clase puede utilizar.
Por ejemplo, la clase Personas puede tener su
propia funcin para calcular la antigedad en un
puesto de trabajo de una persona.
Si declaramos la funcin como Private, no se puede
ver o llamar desde fuera de la clase.

11

07/05/2016

Editar la clase Personas


mtodos
Agregamos el mtodo CalcAntiguedad para la clase
Personas
Private Function CalcAntiguedad(ByVal anio As
Integer) As Integer
CalcAntiguedad = My.Computer.Clock.LocalTime.Year
- anio
End Function
Ocultar el cdigo que realiza el mtodo (con Private), es la
manera de VB de realizar el "encapsulamiento".

Editar la clase Personas


mtodos
Agreguemos otro mtodo para la clase Personas:
Public Function NombreCompleto() As String
If Nombre2 <> "" Then
NombreCompleto = nom1Valor & " " _
& nom2Valor & " " & ape1Valor
Else
NombreCompleto = nom1Valor & " " _
& ape1Valor
End If
End Function

12

07/05/2016

Editar la clase Personas


mtodos
Ahora cambiaremos la propiedad antiguedad que
calcula el valor CalcAntiguedad para usar el mtodo:
ReadOnly Property Antiguedad() As String
Get
Antiguedad = CalcAntiguedad(AnioIngreso)
End Get
End Property
Antes estaba declarada as:
ReadOnly Property Antiguedad() As String
Get
Antiguedad = My.Computer.Clock.LocalTime.Year AnioIngreso
End Get
End Property

Editar la clase Personas


eventos
Recordemos que el manejo de eventos en
programacin era un mecanismo para responder a
acciones o hechos externos al programa.
Por ejemplo, un usuario hace clic en un botn de un
formulario y nosotros escribimos cdigo para
responder a ese evento.
En esta seccin, obtendremos informacin sobre cmo
agregar eventos a una clase:
Primero, debemos declarar el evento.
A continuacin, debemos provocarlo.

13

07/05/2016

Editar la clase Personas


eventos
Provocar un evento significa que estamos sealizando la
aparicin del evento.
La provocacin del evento la creamos dentro del
mtodo que maneja la accin (recordemos que no hay
botones, formularios o timers todo es puro
cdigo
Crear un evento en una clase, significa hacer una declaracin
usando la instruccin Event. sto indica que el objeto puede
provocar el evento que especificamos.
Por ejemplo, quizs deseemos agregar un evento
AntiguedadCalculada a la clase Personas que hicimos.
Luego podemos codificar la provocacin del evento con
cdigo ubicado dentro del mtodo CalcAntiguedad.
Despus de hacer esto, cada vez que se llame al mtodo,
podemos ejecutar algn cdigo adicional en cuanto se
haya calculado la antigedad en el cargo de la persona.

Editar la clase Personas


eventos
Agregamos la siguiente declaracin:

Public Event AntiguedadCalculada(ByVal


antiguedad As Integer)
En el mtodo CalcAntiguedad
CalcAntiguedad, reemplazamos el
cdigo existente por el siguiente cdigo para provocar
el evento:
Private Function CalcAntiguedad(ByVal anio As
Integer) As Integer

Dim Antiguedad =
My.Computer.Clock.LocalTime.Year anio
RaiseEvent AntiguedadCalculada(antiguedad)
CalcAntiguedad =
My.Computer.Clock.LocalTime.Year - anio
End Function

14

07/05/2016

Fin de creacin y primera edicin


de la clase Personas
Guardamos todo el proyecto de
biblioteca de clases.

15

Potrebbero piacerti anche