Introducción a la Programación Orientada a Objetos

2020-04-18 POO

La programación orientada a objetos como paradigma de programación intenta modelar los objetos del mundo real para resolver problemas que puedan ser representados en un programa informático.

Cada objeto del mundo real posee propiedades inherentes a sí mismo (estado), por ejemplo, una pelota de baloncesto tiene propiedades como radio, peso y color. También es sencillo ver en cada objeto un grupo de acciones que puede realizar (comportamiento); siguiendo el mismo ejemplo de nuestra pelota, ella puede rebotar, rodar y girar; nótese que las acciones que realiza un objeto son verbos. A las propiedades mencionadas anteriormente se les suele llamar atributos, a las acciones métodos, y a este conjunto características.

caracteristicas_objetos.png
Características de un objeto

Además de poder representar las características de cada objeto, podemos definir un modelo general para representar objetos del mismo tipo, a este modelo lo llamaremos clase. Así mismo como una pelota de baloncesto pertenece a la clase "pelotas de baloncesto" podemos identificar cualquier objeto con una clase. Las clases observadas desde este punto de vista son fábricas de objetos, que nos ayudan a abstraer el concepto del objeto para poder tener una representación informática del mundo real. Con las clases podemos crear objetos eficazmente seleccionando los atributos deseados. 

fabrica_objetos.png
Clase como fábrica de objetos

Dentro del paradigma de programación orientado a objetos encontramos conceptos fundamentales como abstracción, herencia, polimorfismo, modularidad y encapsulamiento. Enseguida veremos qué significa cada uno de ellos.

Abstracción

La abstracción es tomar de un objeto las características más importantes para formar un modelo. Este concepto de la programación orientada a objetos está muy ligado con el concepto de clase, pues son precisamente las clases las que permiten representar los objetos con aquellas características que hemos definido y que nos interesan. Podemos por ejemplo abstraer el concepto de laptop, como el de un objeto que posee propiedades como marca, modelo, memoria, y S.O, y acciones como encender, ejecutar programas y apagar.

diagrama_de_clase_laptop.png
Notación UML para la clase Laptop

Por ahora, basta saber que existe una notación estándar para el modelado orientado a objetos y se llama UML (Lenguaje unificado de modelado). La anterior imagen representa el diagrama de clase para la clase Laptop.

Herencia

Un objeto obtiene por defecto los atributos y métodos de la clase que lo ha creado. Sin embargo, una clase puede puede tomar estas mismas características de otra clase ya definida, a esto esto es lo que llamaremos herencia. Por ejemplo, imaginémonos la clase Electrodomésticos que engloba a otra clase llamada Lavadoras. La clase Electrodomésticos la llamaremos superclase ya que posee atributos mucho más generales que la clase Lavadoras, a su vez se dice que Lavadoras es subclase de Electrodomésticos. Un objeto de la clase Lavadoras heredará todas características de su clase y las de su clase padre, en este caso Electrodomésticos. Nótese que una o más clases pueden heredar de la clase Electrodomésticos, por ejemplo una clase Televisores.

diagrama de clase herencia
Representación de herencia en UML

Polimorfismo

Varios objetos pueden ejecutar acciones similares de distinta forma. Imaginémonos varias pelotas de distinto deporte que realizan la acción rebotar. Es evidente, que una pelota de baloncesto rebotará de distinta forma que una pelota de fútbol, o una pelota de tenis. Esto nos muestra que distintos objetos pueden tener los mismos métodos pero implementados de manera distinta, esto es lo que se conoce como polimorfismo.

Encapsulamiento

Pensemos en algunos objetos del mundo real como un televisor o un teléfono celular. Estos dos dispositivos electrónicos implementan su funcionalidad internamente en complejos circuitos electrónicos, ¿pero realmente es necesario para el usuario entender cómo funcionar todo esto?, la respuesta es NO!. Tanto un dispositivo móvil como un televisor utilizan principios electrónicos para crear interfaces amigables con el usuario y mostrar rápidamente la información, el cómo se realiza esto dentro del dispositivo no interesa más que para el desarrollador, se dice entonces que estos objetos poseen características ocultas y a esto se le conoce como encapsulamiento (ocultar la información). Sin embargo, muchas otras características deben estar presentes para el usuario, como por ejemplo, la que nos dice ¿cómo encender el dispositivo?, para esto el usuario debe disponer de interruptores, controles de volumen, entre otros, a esto lo llamaremos interfaces.

Modularidad

La modularidad hace referencia a subdividir una aplicación en partes más pequeñas denominadas módulos. Cada módulo puede entenderse como una parte del programa que realiza una función perfectamente diferenciada de las demás; por ejemplo, en un software que controle las finanzas de un pequeña empresa, seguramente habrá un módulo de facturación, uno de clientes, inventario, entre otros.

Si te ha gustado este artículo puedes invitarme a tomar una taza de café

Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.