Programación Orientada a Objetos en .NET con C# (3º parte)

30. October 2008 11:00 by Oscar.SS in Desarrollo .NET, Formación  //  Tags: ,   //   Comments (2)

2. Encapsulamiento

b- Clases y objetos


Las clases debemos verlas como moldes o plantillas para crear (instanciar) diferentes objetos a partir de ellas.


Un ejemplo. Supongamos que en una fábrica disponen de un molde para diseñar piezas de diferentes materiales. Este molde puede ser llenado con materia plástica, metal fundido o vidrio líquido, solo es un ejemplo…que ningún Ing.Industrial proteste ;-).


Al enfriarse el molde y su interior, tendremos 3 objetos con medidas idénticas pero cada uno tendrá sus características propias en función del material que se ha utilizado para su construcción.


De la misma forma una clase permite crear (instanciar) diferentes objetos que tendrán los mismos métodos y atributos pero cada uno guardará en la memoria unos datos diferentes.


Nota: He utilizado 2 veces el termino 'instanciar' en similitud con 'crear'. Instanciar un objeto es cargarlo en la memoria.


Otro ejemplo. Para administrar las necesidades de una empresa en relación con sus empleados podemos necesitar una clase llamada 'empleados'. Los atributos de esta clase pueden ser el nombre y la dirección de los empleados. De esta forma necesitaremos métodos para manipular estos atributos, es decir, un método para establecer el nombre y otro para obtenerlo. Y lo mismo para el dato de la dirección. Necesitaremos un método que nos permita cambiar la dirección de un empleado en el caso de que este cambie de domicilio.


Una vez tenemos nuestra clase definida, podemos cargar en memoria (instanciar) distintos objetos de esta clase. Dado que una imagen vale más que mil palabras, veamos el siguiente diagrama.

Diagrama de Clase y Objetos


Como podemos ver en la figura, la clase funciona como un contenedor (encapsulación) permitiendo agrupar tanto los datos (atributos) como los métodos.


También observamos que hemos creado dos objetos diferentes de la misma clase. Cada uno con sus datos particulares de nombre y dirección. Pero en los objetos no hemos incluido los métodos de la clase.


¿Porque?. Muy sencillo, porque cada objeto carga en memoria una copia de los datos propios (atributos) pero los métodos solo existen en la clase y son compartidos por todos los objetos creados a partir de la clase.


Esto quiere decir que cuando Pedro cambie de dirección, hará una llamada al método de la clase 'EstablecerDirección' y guardará los nuevos datos en la memoria del objeto Empleado1. Y exactamente lo mismo para el Empleado2, compartiendo de esta forma los métodos de la clase.


En la primera parte de este estudio dijimos que nuestra filosofía es que ¡todos son objetos!. ¿Pero qué pasa con las clases?, ¿son o no son objetos también?, ¿nos hemos contra decido?.


Las clases también son objetos (el molde de la fábrica es un objeto), de hecho en los lenguajes de .NET todo son objetos. Objetos que heredan de la clase base Object. Pero esto de la herencia lo veremos más adelante. De momento es suficiente con el concepto de que las clases son un tipo de objeto que nos permiten crear otros objetos con características similares.


En el siguiente artículo veremos cómo implementar clases e instanciar objetos por medio del lenguaje C#.

Vulnerabilidad en los sistemas operativos de Microsoft.

26. October 2008 11:22 by Oscar S.S. in Información  //  Tags:   //   Comments (0)

El pasado jueves (23-10-08) Microsoft publicó una posible vulnerabilidad en el kernel de Windows que podría permitir en las máquinas afectadas la ejecución remota de código por medio de una solicitud RPC.

Los sistemas más afectados son Windows 2000, Windows XP y Windows Server 2003. No obstante, también hay actualizaciones de seguridad para Windows Vista y Windows Server 2008.

Para más información sobre esta noticia, así como todas las actualizaciones de seguridad y la manera de solucionar este problema podeís visitar el siguiente enlace:

http://www.microsoft.com/spain/technet/security/Bulletin/MS08-067.mspx


Microsoft ALM WorkShops

22. October 2008 08:37 by Oscar.SS in Formación  //  Tags:   //   Comments (0)

Entre los meses de octubre, noviembre y diciembre se realizarán una serie de 'workshop' sobre tecnologías microsoft por el módico precio de 30 euros por persona.

La mala noticia es que solo interesará a los que vivan cerca de Madrid y Barcelona Frown.

De todas formas aquí os dejo el enlace donde podeís obtener toda la información de calendarios, registro, etc.

http://www.microsoft.com/spanish/msdn/spain/eventos/alm/workshops.mspx

Acceder a los controles de otro formulario.

19. October 2008 12:11 by Oscar.SS in Desarrollo Windows  //  Tags:   //   Comments (22)

En ocasiones es necesario acceder a los controles de un formulario desde otro formulario distinto. Por ejemplo, puede darse el caso de dos formularios, "padre e hijo", y que necesitemos escribir un mensaje en un TexBox del formulario "padre" cuando se realiza una determinada acción (evento) desde el formulario "hijo".

En primer lugar debemos crear una instancia del formulario al que queremos acceder. Esta instancia será creada en el lugar que queremos tener el acceso.

Form1 formularioPadre = new Form1();

Luego debes acceder al control deseado por medio de la colección Controls del objeto creado, por ejemplo:

((TextBox)formularioPadre.Controls["nombreDelControl"]).Text = “Texto en un TextBox de otro formulario”;

Como se puede obserbar, es necesaria una conversión (catch) del valor devuelto por la colección Controls al tipo de control adecuado.

La colección Controls esta “indexada”, esto quiere decir que sí lo prefieres puedes acceder a sus elementos por medio de un índice de tipo int (Int32), en lugar de utilizar el nombre del control. Esto es muy apropiado cuando quieres acceder a todos los elementos (controles) en un bucle for() o en una colección propia que guarde objetos de tipo Control.

Es un "truco" muy sencillo pero espero os sirva a más de uno.

 

Nota: Para ayudar a un compañero de los foros MSDN he decidido dejar para descarga un pequeño ejemplo de esta técnica. Se trata tan solo de un ejemplo, de como acceder a las propiedades y métodos de los controles que están situados en otro formulario. Digo esto porque se ha simplificado al máximo, dejando de lado algunas comprobaciones, y resaltando lo que de verdad importa en este caso. 

AccesoControlesForm.zip (44,22 kb)

Solo espero que ahora quede más claro este asunto. Para cualquier problema...aquí estamos Wink


Programación Orientada a Objetos en .NET con C# (2ª parte)

15. October 2008 01:17 by Oscar.SS in Desarrollo .NET, Formación  //  Tags: ,   //   Comments (0)

2. Encapsulamiento

a- Definición


Cuando hablamos de encapsulación en un lenguaje orientado a objetos (y algunos que no lo son totalmente) hablamos necesaria y evidentemente de las clases.
Como mencionamos anteriormente los objetos tienen dos características que los definen.


- Los atributos: que es donde se almacenan los datos del objeto.


- Los métodos: que nos permiten manipular y acceder a estos datos.


Por lo tanto, la encapsulación nos facilita el poder agrupar en una sola entidad de código, tanto los datos (atributos) como la forma de manipularlos (métodos).
Esta funcionalidad la conseguimos con las clases, en las que "introduciremos" los atributos y métodos de los objetos.


Una de las ventajas de la encapsulación es la facilidad de cambiar y reutilizar el código. Si en algún momento de la vida de un proyecto, necesita cambiar un atributo de la clase, solo tendrá que hacerlo en la definición de la clase y el cambio de propagará por todos los objetos creados a partir de esta clase.


En el siguiente apartado hablaremos de la relación de las clases y los objetos.

Recent Comments

Comment RSS

Month List