Campos de las Clases
Mexicali, Baja California a 8 de Mayo de 2006.
(Continuación…)
Campos de las Clases
Los campos de una clase conforman sus datos, es lo que el compilador reservará en memoria cuando un objeto de esta clase es instanciada. Los campos son fundamentales en la clase: Definir los campos correctos es crucial. Esto normalmente se realiza como parte en la etapa del diseño de la vida del ciclo del desarrollo del software (Software Development Life Cycle SDLC).
• Public Significa que el campo puede ser accedido por cualquiera en el proyecto y en otros proyectos que utilicen la clase. Cualquiera puede tomar el valor del campo y cambiarlo (si no es un campo constante).
• Private Significa que el campo no es visible o accesible por cualquiera, pero si por si mismo. Los elementos son accesibles del mismo modulo, clase o estructura.
• Protected Es un modificador usado en la herencia jerárquica. Los elementos son accesibles desde la misma clase o de una clase derivada.
• Friend Se usa para definir campos que pueden ser accedido por cualquiera en la misma en el mismo ensamblaje, pero no podra ser visible por aquellos fuera del ensamblaje. En efecto significa publico para el propósito del ensamblaje que se esta realizando y privado para el resto del mundo. Quiere decir que puede ser usado dentro del mismo proyecto pero no desde otro proyecto por fuera.
Si quisieras prevenir que tuvieran acceso los usuarios externos de la clase horse al campo m_height, lo puedes hacer Friend. Eso te va a permitir seguir teniendo acceso a el desde el código en este ensamblador e importar la clase Horse.
Public Class Horse
Public m_name As String
Public m_color As String
Friend m_height As Single
End Class
Si cambias el campo height a Private (Privado), nadie, (excepto el código en la clase Horse) puede tener acceso a el. Esto va a causar que el ejemplo anterior marque error en la compilación.
Mencionamos que las clases son normalmente definidas en la etapa de diseño del SDLC (Software Development life cycle). Necesitaras representar clases y campos gráficamente, hacer diagramas con clases, y en general visualmente representar clases y sus miembros. Representaras las nociones fundamentales requeridas para entender la notación que usas –La cual es casi universalmente aceptada la notación simbólica conocida como Unified Modeling Language ó UML. (Lenguaje Modelado Unificado)
Las clases son representadas como rectángulos con dos o tres compartimentos. El nombre de la clase siempre se encuentra en la parte superior del recuadro; los atributos de la clase están siempre en el segundo nivel. El tercer nivel es usado para los métodos.
Horse
+m_name: String
+m_color: String
m_height: Single
Representación UML de la clase Horse
Los atributos UML corresponden a nuestros campos. La convencion para indicar que tipo de atributo tiene es.
NombreAtributo : TipodeNombre
Esto significa que el NombreAtributo es del tipo TipodeNombre.
• + es usado para indicar visibilidad Public
• # es usado para indicar visibilidad Protected
• - es usado para indicar visibilidad Private
La visibilidad Friend esta indicada en la no utilización de cualquiera de estas notaciones.
Los tipos de campos en una clase puede ser cualquier valor valido. Pueden ser tipos de datos fundamentales. Puede contener estructuras, enumeraciones, o arreglos. Puede contener objetos de otra clase, y hasta objetos de la misma clase.
Los campos de una clase pueden ser inicializados a un valor por default, como se muestra a continuación.
Public Class Horse
Public m_name As String
Public m_color As String
Friend m_height As Single = 1.5
End Class
Cada ves que un objeto es creado, todos los campos serán inicializados en sus valores por default especificados en la definición de la clase. Si no existe ningún valor por default, el valor será asignado al valor por default según el tipo. Cero para los valores numéricos, valor vació para los tipo String (Cadena), Falso para Bolean (Boleanos), Nothing para los objetos.
En este ejemplo cuando creas la instancia u objeto para la clase horse, m_name y m_color se le autoasignara una cadena vacia (“ “) y para el campo m_height tendrá un valor de 1.5.
Podemos verificar esto con el siguiente código:
Module Module1
Sub Main ()
Dim h As New Horse
With h
.m_color = "White"
.m_name = "Bucefalo"
End With
Console.WriteLine("El Valor {0}", h.m_height)
Console.ReadLine()
End Sub
End Module
Creamos una instancia para Horse, y sin hacer nada mas, nuestra salida fue el valor de 1.5.
Bibliografía: VB . NET by Example p. 243-246