Programación Orientada a Objetos

Por Jesús Alberto Zamarripa, Project Manager

 

La Programación Orientada a Objetos (POO) es el paradigma de programación más utilizado en la actualidad.

Descarga el PDF

Su consistente base teórica y la amplia gama de herramientas que permiten crear código a través de diseños orientados a objetos la convierten en la alternativa más adecuada para el desarrollo de aplicaciones. Se expondrán los conceptos de este paradigma y las características de este tipo de programación aplicadas al lenguaje C#.

La POO se refiere a transformar el mundo real en código.

En las imágenes a continuación vemos hay 2 objetos: un automóvil y un león. Como objetos ambos tienen rasgos que los caracterizan (Propiedades) y pueden realizar acciones (métodos). Una vez identificados, debemos proceder a transportar este concepto a nuestro código. Generando primeramente nuestras Clases, que nos servirán para la creación de nuestros objetos.

POO1


¿Qué es una Clase?

Al igual que un diseñador crea prototipos de dispositivos que podrían utilizarse en repetidas ocasiones para construir los dispositivos reales, una clase es un prototipo de software que puede utilizarse para instanciar (es decir crear) muchos objetos iguales.

También lo podemos visualizar como un molde, sí, por ejemplo uno para hacer gelatinas, con ese molde podemos hacer muchas gelatinas con la misma forma y tamaño. Pues ese molde sería nuestra clase y la instancia de una clase sería nuestro objeto.

Sintaxis para generar una clase

Ejemplo a la derecha.

<modificador>class<nombre_clase>
{
<declaración_atributo>
<declaración_constructor>
<declaración_método>
}

POO2

 

POO3


¿Qué contiene una clase?

Los miembros de una clase son un conjunto de elementos que definen a los objetos (atributos ó propiedades), así como los comportamientos o funciones (métodos) que maneja el objeto.

Entonces tenemos que una clase es la estructura de un objeto, es decir, la definición de todos los elementos de que está hecho un objeto.

Los atributos se declaran de la siguiente forma:

<modificador><tipo><nombre> [ = <valor_inicial>];

Los métodos de una clase se declaran de la siguiente forma:

<modificador><tipo_retorno><nombre> (<argumentos>) { <sentencia> }

     Ej. Declaración de atributos (sup.) y declaración de métodos (inf.)

POO4

 

febrero-2-6


¿Qué es el constructor de una clase?

El constructor es un miembro que implementa las acciones requeridas para inicializar la instancia de una clase. El constructor es invocado cuando se usa el operador new.

El constructor es parecido a los métodos, pero no tiene un tipo de retorno y su nombre es el mismo que el de la clase y también puede o no recibir parámetro como los métodos. Sin embargo hay que tener mucho cuidado al nombrar los parámetros tanto del constructor como de los métodos para no confundirlos con las variables propias de la clase. Por ejemplo (derecha):

Analogía de una clase y un objeto

En esta analogía quise que gráficamente vieran a la clase como el molde, y una vez que hacemos una instancia de una clase, se crea el objeto, en este caso el barrote.

febrero-2-8
POO6

Tipos de variables que puede tener una clase

De instancia
Son aquellas que se declaran dentro de una clase y que no existen hasta que se hace una instancia de esa clase (se crea un objeto)<modificador><tipo> nombre [ = <valor_inicial>];febrero-2-9
De referencia
Son aquellas que hace referencia a otra clase. Esto se puede definir mejor diciendo que es una variable del tipo de otra clase, y cuando se haga la instancia tendremos: un objeto dentro de otro objeto.<modificador><Clase> nombre [ = <instancia> ];febrero-2-10
De clase
Estas variables se declaran antemoniendo la palabra static a su declaración, y a diferencia de las variables de instancia, éstas no necesitan que se haga una instancia (que se cree un objeto), existen desde que se crea la clase.<modificador>static<tipo> nombre [ = <valor_inicial>];febrero-2-11
Una vez que tenemos definidos todos los miembros de una clase, ¿Cómo accedemos a ellos?Para acceder a los miembros de un objeto, se utiliza la notación de pinto. El operador punto (.) permite acceder a los atributos y métodos que componen los miembros no privados de una clase.Dentro de la definición de los métodos no es necesario usar la notación de punto para acceder a un atributo de la propia clase.

Modificadores de Acceso

Es la forma en cómo clasificamos nuestras propiedades o métodos para hacerlos visibles o invisibles a quienes usen un objeto de una clase que creamos.

Los modificadores de acceso son: PublicPrivateProtected.

En seguida muestro en una tabla la visibilidad de los miembros de una clase dependiendo del modificador de acceso que tengan.

POO8

Encapsulación

Es un mecanismo que permite a los diseñadores de tipos de datos determinar qué miembros de los tipos pueden ser utilizados por otros programadores y cuáles no. Las principales ventajas que ello aporta son:

  • Se facilita a los programadores que vaya a usar el tipo de dato (programadores clientes) el aprendizaje de cómo trabajar con él, pues se le pueden ocultar todos los detalles relativos a su implementación interna y sólo dejarle visibles aquellos que puedan usar con seguridad. Además, así se les evita que cometan errores por manipular inadecuadamente miembros que no deberían tocar.
  • Se facilita al creador del tipo la posterior modificación del mismo, pues si los programadores clientes no pueden acceder a los miembros no visibles, sus aplicaciones no se verán afectadas si éstos cambian o se eliminan. Gracias a esto es posible crear inicialmente tipos de datos con un diseño sencillo aunque poco eficiente, y si posteriormente es necesario modificarlos para aumentar su eficiencia, ello puede hacerse sin afectar al código escrito.
  • La encapsulación se consigue añadiendo modificadores de acceso en las definiciones de miembros y tipos de datos. Estos modificadores son partículas que se les colocan delante para indicar desde qué códigos puede accederse a ellos, entendiéndose por acceder el hecho de usar su nombre para cualquier cosa que no sea definirlo, como llamarlo si es una función, leer o escribir su valor si es un campo, crear objetos o heredar de él si es una clase, etc.

Ejemplo:

POO9


¿Qué es la Herencia?

La herencia se da cuando una clase hereda sus propiedades y métodos a otra clase, ésta segunda se convierte en la subclase y la primera en clase superior o clase padre. Es decir, una clase base o clase padre le hereda sus propiedades a la clase hija o subclase.

Ejemplo:

POO10

Después de instanciar un objeto de tipo Empleado, como Empleado hereda de Persona, ya podemos hacer uso de las propiedades de la clase Persona. Nombre completo es una propiedad de la clase persona que ya la podemos usar en nuestro objeto empleado gracias a la herencia.febrero-2-14

Método Override

Este método proporciona una nueva implementación de un miembro heredado de una clase base. El método reemplazado por una declaración override se conoce como método base reemplazado. El método base reemplazado debe tener la misma firma que el método override.

Una declaración de propiedad de reemplazo debe especificar el mismo modificador de acceso, tipo y nombre que la propiedad heredada.

Ejemplo sin (izquierda) y con Override (derecha):

POO11

Después de instanciar un objeto de tipo Empleado, como Empleado hereda de Persona, ya podemos hacer uso de las propiedades de la clase Persona. Nombre completo es una propiedad de la clase persona que ya la podemos usar en nuestro objeto empleado gracias a la herencia.febrero-2-14

 

¿Qué es el Polimorfismo?

En este ultimo ejemplo pudimos observar este concepto. A través de la herencia, una clase puede utilizarse como más de un tipo; puede utilizarse como su propio tipo, o como el tipo de su clase base.

En el ejemplo mencionado, tanto la clase Perro como la clase Gato, heredaban de la calase animal y gracias a la herencia podemos hacer que Perro y Gato se comporten como tal ó como animales (clase base). Es por eso que necesitamos indicar qué comportamiento tomarán en un caso u otro.

Si se dieron cuenta, el arreglo que declaramos fue un arreglo de Animales, en el cual agregamos un objeto Animal, uno objeto Perro y un objeto Gato, a pesar de ser objetos de clases diferentes, pues al final, las 3 clases son Animales.


Estoy seguro que siguiendo estas líneas, tendrás un mejor resultado al final de tu proyecto de desarrollo.

Si prefieres recibir ayuda profesional y evitar errores en la planeación financiera y de calidad en tu proyecto de desarrollo, te invito a que nos contactes.

Somos una empresa especialista en desarrollo de aplicaciones, base de datos y aplicaciones para dispositivos móviles. Desarrollamos software basado en Microsoft .net, java, iOS, Android y Windows Phone; y para aquellas empresas que sólo requieren la contratación directa de especialistas, proveemos consultores por proyecto, temporales o fijos con experiencia en las tecnologías más avanzadas para apoyar tú estrategia en sistemas de información y desarrollo de software.