Академический Документы
Профессиональный Документы
Культура Документы
Herencia
Encapsulacin
Polimorfismo
Nota: Algunos autores aaden un cuarto requisito: la abstraccin, pero este ltimo
est estrechamente ligado con la encapsulacin.
Herencia
Encapsulacin
Segn Visual Studio.NET:
"La encapsulacin es la capacidad de contener y controlar el acceso a un grupo
de elementos asociados. Las clases proporcionan una de las formas ms
comunes de encapsular elementos."
Cuando usamos las clases, stas tienen una serie de caractersticas (los datos
que manipula) as como una serie de comportamientos (las acciones a realizar con
esos datos). La encapsulacin es esa capacidad de la clase de ocultarnos sus
interioridades para que slo veamos lo que tenemos que ver, sin tener que
preocuparnos de cmo est codificada para que haga lo que hace... simplemente
nos debe importar que lo hace.
Resumiendo: Establece la separacin entre la interfaz del objeto y su
implementacin.
Polimorfismo
Qu es una clase?
Los programas de Visual Basic se generan con objetos como formularios y
controles. Los objetos tambin se pueden utilizar para representar cosas reales
como personas, equipos informticos o incluso algo ms abstracto, como una
cuenta bancaria.
Una clase es simplemente una representacin de un tipo de objeto. Pensad en ella
como un plano que describe el objeto. As como un plano puede utilizarse para
construir varios edificios, una clase podemos usarla para crear varias copias de un
objeto.
Aunque puede que no os hayis dado cuenta, ya hemos utilizado las clases en
otros tutoriales de VB que hay porCristalab, como por ejemplo,en el tutorial bsico
de Visual Basic .NET o al crear aplicaciones con .NET y las seguiremos viendo en
los prximos Tips o Tutoriales que vengan.
Por ejemplo, el control TextBox lo define una clase TextBox, que define su aspecto
y sus funciones. Cada vez que arrastramos un control TextBox a un formulario,
realmente est creando una nueva instancia de la clase TextBox.
Cada control TextBox es una copia exacta, aunque distinta, de la clase que lo
define, la clase TextBox. Puesto que cada objeto es una "instancia" independiente
de una clase, la accin de crear una clase se denomina creacin de instancias.
Hasta ahora hemos agregado los controles TextBox a su formulario arrastrndolos
desde el Cuadro de herramientas, pero tambin puede crear instancias de un
objeto TextBox en su cdigo si utiliza la palabra clave New.
Dim Textbox1 As New TextBox
Class BankAccount
'La hacemos privada
Private AccountNumber As String
Private AccountBalance As Decimal
'Y la ponemos publica para que calcule el balance
Public Sub UpdateBalance()
End Sub
ReadOnly Property Balance() As Decimal
Get
Return AccountBalance
End Get
End Property
End Class
aplican a cada persona seran los mismos. Todas tienen nombre, edad, direccin,
nmero de telfono, etc.
Para empezar a ver mejor crear clases,y usarlas crearemos una clase que
represente a una persona;
Podemos guardar esta clase y utilizarla en otros programas que escribamos en el
futuro.
Las clases se pueden crear de tres maneras: como parte del cdigo en un mdulo
de formulario en un proyecto de aplicacin para Windows, como un mdulo de
clase separado agregado a un proyecto de aplicacin para Windows o como un
proyecto de bibliotecas de clase independiente.
Crear clases
Si habis seguido los tutos de Visual Basic de Cristalab, o sabis de ello, sabris
que al hacer doble clic en un formulario y abrir el Editor de cdigo se vea algo
parecido a lo siguiente:
Public Class Form1
Private Sub Form1_Load...
End Sub
End Class
Pues mirad, el formulario realmente es una clase, marcada por instrucciones
Class y End Class y cualquier cdigo que se haya escrito entre las dos
instrucciones es parte de la clase. Aunque de manera predeterminada un mdulo
de formulario contiene slo una clase nica, puede crear mdulos adicionales
agregando cdigo debajo de la instruccin End Class, tal como se ilustra a
continuacin:
Mdulos 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 reutilizar en otros
proyectos.
Los mdulos de clase se pueden crear de dos maneras:
Como campo.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
End Get
12.
13.
firstNameValue = value
14.
End Set
15.
End Property
16.
17.
18.
19.
20.
End Get
21.
22.
middleNameValue = value
23.
End Set
24.
End Property
25.
26.
27.
28.
29.
End Get
30.
31.
32.
lastNameValue = value
End Set
End Property
Quedar as:
33.
A veces una propiedad se establece una vez y no cambia nunca mas durante la
ejecucin del programa.
Por ejemplo, una propiedad que representa un nmero de empleado nunca debe
cambiar, de modo que otro programa si lo pueda leer, pero no se permitir que ese
programa cambie su valor.
La palabra clave ReadOnly se utiliza para especificar que un valor de propiedad
se pueda leer pero no modificar.
Nota: Si intentamos asignar un valor a una propiedad ReadOnly, aparecer un
error en el Editor de cdigo.
Para crear una propiedad de slo lectura, deberemos crear un procedimiento de
propiedad con un procedimiento Get, pero sin procedimiento Set, como se
muestra a continuacin.
Private IDValue As Integer
ReadOnly Property ID() As Integer
Get
ID = IDValue
End Get
End Property
De igual forma, la palabra clave WriteOnly permite establecer un valor de
propiedad pero no permite que se lea; por ejemplo, no permite que otros
programas lean una propiedad de contrasea. Podemos utilizar ese valor para
realizar acciones dentro de la clase, pero desear que sigan siendo privadas.
Para crear una propiedad de slo escritura, se crear una propiedad con un
procedimiento Set pero sin procedimiento Get, como a continuacin:
2.
3.
4.
5.
birthYearValue = value
6.
End Set
7.
End Property
8.
9.
10.
Get
11.
Age = My.Computer.Clock.LocalTime.Year birthYearValue
12.
End Get
End Property
13.
End Sub
Public Function CurrentBalance(ByVal AccountNumber As
Integer) As Double
'Codigo para volver a Balance
End Function
Si bien la mayora de los mtodos de clase son pblicos, tambin se pueden
agregar mtodos que slo la clase en s puede utilizar. Por ejemplo, la clase
Persons puede tener su propia funcin para calcular la edad de una persona. Si
declara la funcin como Private, no se puede ver o llamar desde fuera de la clase.
El cdigo para una funcin privada puede ser similar a ste otro:
Private Function CalcAge(ByVal year As Integer) As Integer
CalcAge = My.Computer.Clock.LocalTime.Year - year
End Function
& lastNameValue
Else
FullName = firstNameValue & " " & lastNameValue
End If
End Function
End Property
RaiseEvent AgeCalculated(Age)
End Function
With person1
.FirstName = Textbox1.Text
.MiddleName = Textbox2.Text
.LastName = Textbox3.Text
.BirthYear = Textbox4.Text
.Married = CheckBox1.Checked
End With
MsgBox(person1.FullName)
End If
Mtodos sobrecargados
MiddleInitial = Left$(middleNameValue, 1)
End Function
End Function
Hacemos doble clic en el primer botn (With) para abrir el Editor de cdigo
y escribimos el siguiente cdigo en el controlador de eventos Button3_Click.
Handles person1.AgeCalculated
Else
End If
End Sub
Supongamos que deseamos tener una clase que represente jugadores de bisbol:
los jugadores del bisbol tienen todos los atributos definidos en la clase Persons,
pero tambin tienen atributos nicos, como su nmero y posicin. En lugar de
agregar esas propiedades a la clase Persons, se crear una nueva clase derivada
que se hereda de Persons, a la que se agregaran las nuevas propiedades.
Para crear una clase derivada de la clase Persons:
Inherits Persons
Get
Number = numberValue
End Get
End Set
End Property
Get
Position = positionValue
End Get
positionValue = value
End Set
End Property
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
2.
3.
With player1
4.
.FirstName = "Wyrm"
5.
.LastName = "Garcia"
6.
.Number = 13
7.
.Position = "Shortstop"
8.
End With
9.
With player2
10.
.FirstName = "Joe"
11.
.LastName = "Black"
12.
.Number = 51
13.
.Position = "Catcher"
End With
14.
15.
16.
17.
18.
Hacemos doble clic en el primer botn (At Bat) para abrir el Editor de cdigo
y escribimos el siguiente cdigo en el controlador de eventos Button1_Click.
19.
& _
Observamos que estamos utilizando el mtodo FullName que se hered de la clase base
Persons.
20.
21.
& _
22.
23.