Conceptos básicos y pilares de la Programación Orientada a Objetos (POO).

Publicado por el 26/05/2016. Categoría: Programación Orientada a Objetos

¡Hola programadores/as! en esta nueva entrega del blog veremos otros conceptos básicos de la POO, en la entrega anterior vimos clases, objetos, métodos y herencia, si quieres repasar un poco puedes ver el post de introducción a la programación orientada a objetos haciendo click aquí. Ahora sí volvamos a lo nuestro.

Una clase (que dijimos que lo podíamos comparar con un grupo de cosas en la vida real, en el ejemplo del post anterior lo representamos con “Animal”) se conforma por atributos y acciones (métodos en POO). Por ejemplo, retomando el ejemplo del post anterior, podemos decir que la clase Animal tiene como atributos el nombre y el tamaño (atributos que tienen en común todos los animales). Entre las acciones (métodos en POO) que tiene la misma podemos encontrar comer y dormir (que son acciones que tienen en común todos los animales). Entonces podemos representar a una clase utilizando la notación de UML (Lenguaje Unificado de Modelado o sus siglas en inglés Unified Language Model – en otro post hablaré de este tema) de la siguiente forma:

clase

Clase representada con la notación de UML

Ahora realizaremos un diagrama de clases representando a la clase padre Animal y sus clases hijas; perro, canario y gato.

herencia

Diagrama de Clases representado con la notación de UML

Se puede ver gráficamente en la imagen anterior que todos los atributos de la clase “Animal” pasan a las clases hijas “Perro”, “Gato” y “Canario” así entonces todas las clases hijas que heredan de la clase padre “Animal” tienen como atributos “nombre” y “tamaño” y todas las acciones (métodos en POO) se heredan de igual forma.

Muy bien sabiendo esto podemos “crear” (instanciar en POO) un objeto de la clase hija “Perro”, veamos:

objeto

Objeto representado con la notación de UML

Un objeto vendría siendo una “instancia” (o creación en palabras simples) de una clase, es decir, es cuando la clase toma valores, en el ejemplo del perro podemos ver que al instanciarlo los atributos nombre y tamaño toman los valores “camila” y “pequeño” respectivamente. Para los objetos gato y canario sería como el anterior solo que con los atributos y métodos correspondientes a cada animal.

Hasta ahora he explicado más detalladamente lo que vimos en el post anterior porque es fundamental tener claros estos conceptos para poder continuar. Bien ahora explicaré nuevos conceptos que no son menos importantes que los que vimos antes.

El paradigma de orientación a objetos está basado en 4 pilares fundamentales que hacen que este tenga las ventajas y propiedades que tiene. Los pilares son herencia (explicada anteriormente), abstracción, polimorfismo y encapsulamiento.

La abstracción la podemos pensar como algo general, algo que no se puede materializar ni tocar. ¿Qué quiero decir con esto? Por ejemplo la clase “Animal” que teníamos antes, podemos decir que es una clase abstracta, es decir, un “Animal” como tal no existe, existe un perro, un gato, un canario, entre otros, todos los animales son distintos pero tienen algunas cosas en común, como vimos antes, nombre, tamaño, comer y dormir.

Por lo mismo que un animal no existe como tal es que una CLASE ABSTRACTA NO SE PUEDE INSTANCIAR, si se puede instanciar un perro, un gato o un canario porque son animales que si podemos ver, tocar y existen como tal, pero un animal no se puede instanciar. Te lo repito porque esto es la característica fundamental de la abstracción, es muy importante dejarlo claro.

Te preguntarás a donde quiero llegar, lo que te quiero decir con esto es que a la hora de programar cuando definimos una clase abstracta como animal, nos ahorramos de programar en las clases hijas los atributos y métodos que tienen en común y eso a la hora de mantener el código es muy útil.

El polimorfismo explicado simplemente, es cuando dos o más objetos reaccionan de diferentes formas frente a un mismo mensaje. Para que podamos entender mejor esto les mostraré un ejemplo con figuras geométricas.

polimorfismo

Diagrama de clases representado con la notación de UML

La clase “Figura” tiene un solo método que es “calcularArea”, como todos sabemos el área de un cuadrado y de un círculo se calculan diferente por lo tanto las dos figuras (objetos en POO) responden diferente a un mismo método.
El encapsulamiento es el encargado de ocultar datos y comportamientos de las clases y objetos dándole a estos últimos mayor seguridad, estabilidad y protección. Existen 3 niveles de acceso para el encapsulamiento los cuales son:

  1. Protegido: el acceso a los datos está restringido a las funciones de clases heredadas, es decir, las funciones miembro de esa clase y todas las subclases.
  2. Privado: el acceso a los datos está restringido a los métodos de esa clase en particular. Este es nivel más alto de protección de datos.
  3. Público: funciones de toda la clase pueden acceder a los datos o métodos de una clase que se define con el nivel de acceso público. Este es el nivel de protección de datos más bajo.

Para entender mejor este concepto lo veremos gráficamente:

encapsulamiento

 

Pero, ¿qué pasa si se rompe el auto y tenemos que saber cómo funciona el motor? Para esto no se preocupen, ni se aterren que existen métodos especiales para tener un acceso controlado y seguro de los atributos de una clase u objeto, estos se llaman propiedades.
Las propiedades son otro tema extenso para tratar y las veremos en la próxima entrega sino se hará muy largo y no pretendo aburrirlos sino ¡ayudarlos! Espero que les haya servido esta info y cualquier duda, consulta o sugerencia son libres de dejarlos en la sección de comentarios. ¡Gracias por leerme y seguirme! 😉

cc
Los textos e imágenes de este sitio están disponibles bajo una licencia Creative Commons Atribución 2.5 Argentina.

Puedes compartir nuestro post en los siguientes medios:

Emi Garin es una programadora y diseñadora web apasionada por las nuevas tecnologías y el constante aprendizaje. Estudió analista y programador superior de sistemas y le encanta la cocina y la pastelería.

  1. Franco dice:

    Muy bueno siempre es bueno repasar y leer de forma didáctica la POO. Sigos tus posts.

  2. Horacio dice:

    Muy bueno Emilia! Me gustó la simpleza de la explicación, muy buena didáctica, espero mas aportes como este!

  3. Antonio dice:

    Muy buen trabajo Emilia… Claro, concreto y con mucha calidad.
    Saludos, y seguí avanzando.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *