Programación orientada a objetos (Programación orientada a objetos) es un paradigma de programación que es la piedra angular del desarrollo de software program moderno. Si bien OOP no es el único paradigma de programación que existe, diría que es el más importante para tener una base sólida y, cuando se usa correctamente, puede conducir a un software program más fuerte y robusto. Pero, ¿qué es OOP y cómo puedes asegurarte de entenderlo bien? Vamos a explorar.
En un nivel alto, en OOP hay 3 pilares principales que se deben comprender para lograr que OOP funcione:
- Encapsulación con clases
- Herencia
- Polimorfismo (el más importante con diferencia)
La encapsulación es la capacidad de encerrar datos que describen el objeto y las funciones utilizadas para manipular esos datos en un contenedor de módulo.
En programación orientada a objetos, normalmente se denominan clases y se encuentran en el centro del paradigma. La variable resultante cuando se declara la variable se denomina objeto. Una parte importante es la abstracción para que solo se expongan las características necesarias.
- Privado/Interno: Los métodos y propiedades son accesibles desde otros métodos de la misma clase. Cualquier cosa fuera de la clase no debería poder acceder a estos miembros/métodos. Esto normalmente se denota como Privado o Protegido.
- Público/Externo: Los métodos y las propiedades son accesibles desde fuera de la clase.
Un ejemplo sería si estuvieras programando un juego de cartas. En su clase de dec de cartas, ¿le gustaría que alguien más modificara el número de cartas en la baraja? Probablemente no.
La herencia es la capacidad de tomar una clase existente y extender su funcionalidad para formar otra clase.
¿Porque es esto importante? Porque admite la reutilización con la reutilización de código. Esto se debe a que la nueva clase tiene acceso a toda la funcionalidad principal. La clase secundaria solo necesita agregar nuevos atributos y métodos que sean específicos para sus necesidades.
- La generalización es la relación tal que la subclase es una variación del padre. Es decir, una camioneta “es-un” automóvil.
- La especialización es la relación tal que la clase “tiene-una” subclase. Es decir, un automóvil “tiene un” motor.
El polimorfismo es la capacidad de objetos similares para responder de manera diferente al mismo mensaje.
El último pilar de la programación orientada a objetos está estrechamente relacionado con la herencia y, sin embargo, podría decirse que es mucho más importante. El prefijo poli significa muchos; morph significa forma. El polimorfismo se refiere entonces a la capacidad de un solo tipo o clase para tomar muchas formas.
¿Cómo se hace esto? Con anulación de método:
En el ejemplo anterior, puede ver que tanto el automóvil eléctrico como la camioneta heredan de Automóvil y ambos anulan el comportamiento de Inicio, ya que ambos tienen necesidades muy diferentes. Un automóvil eléctrico no necesita encender un motor mientras que una camioneta lo haría (suponiendo que sea de la variedad de gasolina).
Conclusiones clave
- Los objetos bien diseñados manipulan los datos o el estado de un objeto pasando mensajes a través de la interfaz del objeto.
- Controlar un objeto a través de su interfaz garantiza que se comporte de forma segura y que el estado interno siga siendo válido.
- La capacidad de modelar el mundo actual es una ventaja importante de OOP.
- Los objetos deben ser autónomos para que puedan valerse por sí mismos.