El Blog de Óscar Sotorrío Sánchez - MCP Application Development Foundation - C#

Todo lo que vaya aprendiendo de .NET, C#, ASP.NET, SQL Server, etc, lo compartiré con vosotros.

El autor:

Óscar Sotorrío Sánchez
Contacto Send mail

Encuéntralo

Álguien dijo...


El genio es un 1% inspiración y un 99% de transpiración.

Tomas Alba Edison

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

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#.


Posted by Oscar.SS on jueves, 30 de octubre de 2008 11:00
Permalink | Comentarios (2) | Post RSSRSS comment feed

Vulnerabilidad en los sistemas operativos de Microsoft.

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



Tags:
Categories: Información
Posted by Oscar S.S. on domingo, 26 de octubre de 2008 11:22
Permalink | Comentarios (0) | Post RSSRSS comment feed

Microsoft ALM WorkShops

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


Tags:
Categories: Formación
Posted by Oscar.SS on miércoles, 22 de octubre de 2008 8:37
Permalink | Comentarios (0) | Post RSSRSS comment feed

Acceder a los controles de otro formulario.

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



Categories: Desarrollo Windows
Posted by Oscar.SS on domingo, 19 de octubre de 2008 12:11
Permalink | Comentarios (5) | Post RSSRSS comment feed

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

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.


Posted by Oscar.SS on miércoles, 15 de octubre de 2008 1:17
Permalink | Comentarios (0) | Post RSSRSS comment feed

University Tour 2009. ¡Vive un día diferente en tu universidad!

MSDN estudiantes está de gira. Entre los días 7 de octubre y 27 de noviembre realizarán un tour por distintas universidades del territorio español.

Entre los temas que tratarán se encuentran los siguientes:

- Desarrollo web: más allá de HTML.

- XNA 2.0: Cómo hacer tus propios juegos.

- .NET fuera del PC: robótica, móviles y dispositivos.

Para más información, registrarse y ver el calendario de las diferentes ciudades, enlazar con la siguiente dirección.

http://www.microsoft.com/spanish/msdn/academico/universitytour.mspx


Tags:
Categories: Información
Posted by Oscar.SS on martes, 07 de octubre de 2008 13:39
Permalink | Comentarios (0) | Post RSSRSS comment feed