Orientación a Objetos – Parte III
Pido disculpas por la tardanza en la salida de la tercera parte de este post, la semana agitada que concluye hoy no me dejó escribir algo extenso, pero ahora libero lo que es la tercera y última versión de Orientación a Objetos.
En esta parte tercera y final de los fundamentos de la Orientación a Objetos, se tratarán los conceptos planteados al final de la segunda parte, en el punto que trata los propósitos de este paradigma.
Jerarquía
Cuando de jerarquía hablamos, generalmente se viene a la mente del lector el tema del orden y del mando, en la orientación a objetos la definición de este concepto no dista mucho de la convención social aceptada, pero aplicada a las clases.
Tenemos por ejemplo que las entidades se pueden organizar jerárquicamente tal que una clase principal pueda diversificarse en otros tipos de clases derivadas, en donde cada derivación de dicha clase, posee los atributos y métodos tanto de la clase principal, como los suyos propios, esto es lo que se conoce como comúnmente como herencia.
Un ejemplo claro de ello son los animales, tenemos que los animales tienen propiedades en común, pero se dividen en clases, partiendo por los invertebrados y los vertebrados, luego, los vertebrados pueden subdividirse en mamíferos,aves, peces, anfibios y reptiles, mientras que los invertebrados pueden subdividirse en otras clases, como los moluscos, artrópodos, medusas, etc, y a su misma vez, por ejemplo, los artrópodos también pueden clasificarse en insectos,arácnidos, entre otros.
Para ello entonces, tendríamos una clase principal, que sería la clase Animal, con ciertos atributos y métodos. Luego extenderíamos esta clase agregándole propiedades, en éste caso le agregaremos el atributo de poseer o no esqueleto interno articulado, y así sucesivamente se irán extendiendo clases, hasta que no existan mas sucesiones jerárquicas.
Ésta sucesión jerárquica es posible representarla mediante árboles de herencia, en el caso del ejemplo expuesto, el árbol sería el de la imagen que viene a continuación.

Encapsulamiento
Cuando se habla de principio de encapsulamiento, a veces se generan confusiones al intentar entender la idea de este principio, ya que en sí es un poco enredado tal vez entender como se hace presente tal concepto en la cotidianeidad.
El encapsulamiento se refiere a que muchos objetos poseen métodos y atributos que no son visibles a los otros objetos de su entorno, mientras que otros atributos son compartidos abiertamente con estos, dividiendo tales métodos y atributos, en interfaces públicas y privadas.
Un ejemplo claro es una persona, la persona posee atributos como lo son el color de pelo, color de piel, contextura, etc, y métodos tales como hablar, pensar, reir, correr, etc.
Es posible apreciar que la gran mayoría de los atributos y métodos que he mencionado como ejemplo son públicos, porque todo el entorno es capaz de apreciar el color del pelo, el color de piel, la contextura, o bien porque el entorno también puede interactuar con los métodos hablar, reir y correr,es decir, son visibles al entorno.
El único caso que no cumple con la interfaz pública, es el método pensar, ¿porqué? simple, porque al pensar, solo la persona sabe lo que piensa, y la única manera de dar a conocer su pensamiento, es através de un método que permita acceder a tal pensamiento y expresarlo, por ejemplo hablar, uno expone sus pensamientos a través del habla, pero no accede a ellos directamente, a ésta tipo de métodos se le conoce como método de acceso.
Abstracción
Éste es un tema ya conocido, se habló bastante sobre la abstracción en la parte 2 de éste tutorial, pero para refrescar un poco la memoria al lector, cuando nos referimos al principio de abstracción estamos hablando de generar un modelo conceptual de objeto através de una representación real de dicho objeto.
Para re-entender mejor el concepto de abstracción, invitamos al lector a echar un vistazo a éste enlace.
Modularidad
Éste principio se basa en el paradigma de solución llamado dividir y conquistar – divide and conquer - usado frecuentemente para solucionar problemas que en su totalidad son complejos, pero que fragmentandolos es posible obtener una solución efectiva.
Éste principio apunta principalmente a la programación orientada a objetos, ya que al fragmentar el programa en módulos, se permite comprender cabalmente el funcionamiento del sistema completo, a partir del entendimiento de cada una de las partes por separado.
También existen otros principios que complementan aún mas la orientación a objetos, que son fenómenos inherentes que se intentan representar y modelar conceptualmente, estos son el polimorfismo y el paso de mensajes.
Polimorfismo
Éste principio se basa en que un objeto, a veces presenta diferentes comportamientos según el entorno, el contexto en el que se encuentre, esto será bien entendido por el lector durante el tutorial de POO - por ahora no hay apuro en entenderlo, ya que ejemplificandolo mediante código quedará totalmente entendido - por lo que no se profundizará más en éste tema.
Paso de mensajes
Generalmente cuando se trabaja con un sistema compuesto por objetos en un entorno, en algún momento se debe efectuar un cambio de estado por parte de un objeto, sobre otro, para ello se recurre al paso de mensajes.
La implementación del paso de mensajes en la POO simplemente consiste en que un objeto llame a un método del objeto al que se le realizará el cambio de estado, mientras que en la programación estructurada básicamente es llamar a una función.
Un ejemplo claro del paso de mensajes, teóricamente hablando , es el caso del ataque a antígenos por parte de los anticuerpos que cada persona genera.
Para atacar antígenos - bacterias, virus, cualquier cuerpo extraño que ingrese al organismo - primero éstos deben ser reconocidos por una anticuerpo, quien deja una marca que indica que éste cuerpo extraño debe ser atacado por el sistema inmune - que a su vez está compuesto por otros objetos .
Bueno, aquí finaliza el tutorial, ojalá sea del agrado del lector y sea entendible. Ésto solo es la parte básica de la teoría de la OO, hay más temas a tratar pero prefiero dejarlo para el tutorial de POO ya que los temas que siguen – como relaciones inter objetos, polimorfismo a cabalidad, etc - es mejor explicarlos mediante código y también porque algunos se escapan de la parte teórica para pasar a la parte de runtime.
Saludos!





[...] Orientación a Objetos p3. [...]