Los pilares de la orientación a objetos
Los pilares de la orientación a objetos son cuatro conceptos fundamentales que guían la programación orientada a objetos. Son conceptos esenciales para crear un código modular, flexible, reutilizable y de fácil mantenimiento. Estos son: Abstracción, Encapsulamiento, Herencia y Polimorfismo.
En este artículo, vamos a detallar cada uno y proporcionar ejemplos.
1. Abstracción
El paradigma de la abstracción sostiene que debemos diseñar un sistema en varias partes, separadas y bien definidas, de modo que nos concentremos en los aspectos esenciales, desconsiderando las características menos importantes. De esta forma, se abstrae la complejidad del sistema y se enfoca en una parte determinada, que es el tema central en ese momento.
La abstracción consiste en la representación simple de objetos del mundo real. Una clase es un tipo de abstracción que define un conjunto de propiedades y métodos que representan un concepto particular. La abstracción permite que los objetos tengan características comunes y funcionen de manera consistente.
Vamos a aplicar este concepto en un ejemplo. Supongamos que queremos crear diferentes formas geométricas (círculo, cuadrado, triángulo) y calcular su respectiva área.
En este ejemplo, creamos una clase abstracta FormaGeometrica que define un método abstracto calcularArea(). A continuación, creamos clases concretas para representar las formas geométricas específicas (círculo, cuadrado y triángulo), y cada una de ellas implementa el método calcularArea() de acuerdo con su fórmula apropiada.
Esta abstracción permite que el código que utiliza estas clases interactúe con las formas geométricas de manera independiente de las implementaciones específicas de cada forma.
2. Encapsulamiento
El encapsulamiento es la idea de ocultar los detalles internos y el funcionamiento de los objetos, exponiendo solo una interfaz controlada para interactuar con ellos. Esto se logra usando modificadores de acceso en los atributos y métodos, como "private", "protected" y "public", para controlar quién puede acceder y modificar los datos y comportamientos de los objetos.
3. Herencia
Cuando pensamos en herencia, imaginamos la relación familiar entre padres, hijos y abuelos y en las características que se transmiten de generación en generación. En la orientación a objetos, la herencia se trata de un compartimiento de atributos y comportamientos entre clases de una misma jerarquía, de la clase madre a las clases hijas. Veamos un ejemplo en la siguiente imagen.
La clase Empleado es la clase madre, de la cual aprovechamos sus propiedades (nombre, fechaNacimiento, cpf, sector y salario) y métodos (registraPunto) para crear las clases hijas Profesor y Director. Las clases hijas, además de heredar los puntos anteriormente mencionados, tendrán algunas características únicas. Para la clase Profesor, se agregó la inicialización de las propiedades disciplina y grupo, y para Director, se incluyó la propiedad unidad. En el caso de los métodos, la clase Profesor puede registrar la calificación de un alumno, y la clase Director puede registrar un nuevo empleado en la unidad escolar donde trabaja.
La herencia tiene una gran aplicabilidad, ya que en lugar de crear nuevas estructuras, se pueden aprovechar estructuras ya existentes.
4. Polimorfismo
El polimorfismo en orientación a objetos es el principio que permite que dos o más clases derivadas de una misma superclase tengan métodos iguales (con el mismo nombre y parámetros), pero con comportamientos distintos, redefinidos en cada una de las clases hijas. A continuación, tenemos un ejemplo utilizando el juego de ajedrez.
El juego de ajedrez tiene diferentes piezas, y cada pieza realiza su movimiento: el peón se mueve hacia adelante, el caballo se mueve en L, la torre se mueve en línea recta y el alfil en diagonal. Aplicando esto al principio del polimorfismo, todos son derivados de la clase Peca y tienen el método mover, pero cada uno se mueve de una manera diferente, teniendo el método redefinido en la clase hija (clase Torre, Caballo, Alfil y Peon).
Conclusión
La orientación a objetos permite que el código refleje los conceptos del mundo real, facilitando su comprensión. De este modo, es esencial tener un buen entendimiento de sus paradigmas (Abstracción, Encapsulamiento, Herencia y Polimorfismo), para poder desarrollar software más eficiente, organizado y de mejor mantenimiento.
Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.