Como se mencionó anteriormente, una clase es una plantilla para un objeto. En ese sentido, una clase es como un cortador de galletas que le permite dar una forma específica a los objetos galleta. En la versión 2102, Microsoft Visual Studio trae por defecto 4000 clases distintas, esto significa que disponemos aproximadamente de 4.000 cortadores de galletas ya colgados en la pared listo para su uso. Parte de nuestro trabajo como programador es aprender las clases que ya existen. Después de todo, no hay razón para reinventar la rueda.
Por normal general, tendremos que escribir algunas clases propias, además de las proporcionadas por por Visual Studio. Esto significa que, después de escribir nuestra primera clase, dispondremos de 4.001 cortadores de galletas, con cada uno de los cuales se puede crear un objeto de ese tipo de clase. Pero ojo!!!, el hecho de que se haya definido una clase (o un cortador de galletas) no necesariamente significa que tenga un objeto (o una galleta). El hecho de que el cortador de galletas que tu madre te dio esté en el cajón de la cocina o colgado en la pared, no determina que haya galletas en la mesa.
Como se dijo antes, una clase es simplemente una plantilla para el objeto. Así como un cortador de galletas realiza formas de masa específicas para galletas, una clase se utiliza para guardar espacios de memoria utilizados para mantener los objetos de esa clase. Hasta que no realicemos el proceso de crear un objeto real, ese objeto todavía no existirá.
Un objeto, por lo tanto, es algo que en realidad se puede utilizar en un programa. Así como no se puede comer un cortador de galletas, no podemos utilizar directamente una clase. Debemos utilizar la clase para instanciar un objeto de la clase en memoria, antes de que podamos utilizar este en nuestro programa.
Nombrando Objetos
Es conveniente que utilicemos un convenio para nombrar los objetos que utilicemos en nuestros programas. Se suele utilizar un prefijo para distinguir el nombre de ciertos objetos utilizando una combinación específica de letras. Por ejemplo, deberíamos usar el prefijo cls antes de los nombres de clase, txt antes de los nombres de los objetos de cuadro de texto, btn antes de los nombres de objetos de tipo botón, y así sucesivamente. Este convenio es una modificación de la llamada notación húngara, evitando la complejidad de esta.La razón principal de usar esta convención es que los prefijos refuerzan el tipo de objetos que se utilizan en el programa. Es decir, de un solo vistazo se puede ver que txtNombre es un objeto de tipo cuadro de texto y que es diferente de lblNombre, que es un objeto de tipo etiqueta.
Una segunda razón es la manera en la que Visual Studio maneja y nos muestra la ayuda contextual a medida que escribimos el código de nuestro programa. Por ejemplo, si tenemos tres objetos de tipo cuadro de texto que comienzan con el prefijo txt, nos será mucho más sencillo trabajar con nuestros objetos y recordar sus nombres con un simple vistazo, gracias a esta ayuda de Visual Studio. Si no establecieramos un prefijo para los objetos, todo sería mucho más complejo.
lnstanciar un objeto de una clase
Considere la siguiente declaración:clsPersona miAmigo;
Esta sentencia del programa dice: "Ve a la pared donde se encuentran los cortadores de galletas y busca un cortador de galletas llamado clsPersona. Cuando lo encuentres, cogelo de la pared, y guarda un trozo de memoria para este y nombra este trozo de memoria con el nombre miAmigo.
En este instante, no tenemos nada en esa dirección de memoria, por lo que su valor actual es null (nulo).
Lo que tienes en este momento es un cortador de galletas llamado miAmigo que ha tomado una dirección de memoria para hacer algo útil. Esto empieza a suceder con la siguiente declaración del programa:
miAmigo = new clsPersona();
La palabra reservada new en C#, viene a significar que estamos pidiendo suficiente espacio en memoria para almacenar un nuevo objeto de la clase clsPersona (. NET sabe la cantidad de bytes que necesita para un objeto, examinando el código de la clase.).
Si quisieramos verbalizar lo que sucede con esta declaración que acabamos de realizar, podríamos decir que ocurre lo siguiente:
- "Oye, Windows! Soy yo ... Visual Studio. Mi programador quiere crear un nuevo objeto clsPersona. ¿Tiene 2.000 bytes de memoria libre disponible para tal objeto?.
El administrador de memoria de Windows, entonces mira en la tabla de memoria disponible y probablemente encuentre 2.000 bytes de memoria libre en algún lugar del sistema.
Supongamos que hay 2.000 bytes disponibles - en un bloque de memoria que comienza en la dirección 900.000. El administrador de memoria de Windows envía un mensaje a Visual Studio y le dice,
-"Hey, Visual Studio! Soy yo ... el Administrador de memoria de Windows. He encontrado 2.000 bytes de memoria libre a partir de la dirección 900.000."
Visual Studio le da las gracias, y procede a reservar y ocupar ese espacio de memoria para utilizar el objeto llamado miAmigo de clsPersona, que ahora sí existe en la ubicación de memoria 900.000.
El valor asociado a la variable miAmigo en dirección de memoria habrá cambiado de null a la dirección de memoria donde los datos asociados donde el objeto recien creado miAmigo almacena los datos.
Ahora disponemos de un objeto clsPersona al que se puede acceder a través de la variable llamada miAmigo. El propósito que tiene la variable miAmigo es decir dónde encontrar los datos asociados al objeto miAmigo.
Una vez más, el término correcto en programación es que hemos instanciado un objeto de clsPersona referenciado por la variable miAmigo. Un objeto instanciado es un objeto que podemos utilizar en nuestro programa. También debe quedar claro que miAmigo es una referencia que permite "encontrar" los datos del objeto (es decir, los valores de sus propiedades).
Estas dos sentencias que acabamo de ver:
clsPersona miAmigo; // Coge un molde específico de la pared y nombra a este miAmigo miAmigo = new clsPersona(); // Utiliza el cortador de galletas para hacer una galleta clsPersona utlizando como referenciador miAmigo
pueden ser combinadas dentro de una sola sentencia, de la siguiente forma:
clsPersona miAmigo = new clsPersona();







0 comentarios:
Publicar un comentario