martes, 31 de diciembre de 2019

Capítulo 5: Programación orientada a objetos - Clean Architecture


La programación orientada a objetos tiene muchas definiciones aunque su propósito es modelar el mundo real a través de conceptos como la encapsulación, herencia y poliformismo.

Encapsulación

Es un mecanismo para agrupar datos de un mismo concepto y funciones que operan sobre estos datos. La encapsulación también brinda la oportunidad de ocultar la implementación de manera que sólo se puede interactuar con los datos a través de los método que son públicos. La agrupación de los datos y las funcionalidades sobre los mismo se definen en clases.

Herencia

Es otro mecanismo cuya finalidad es extender la funcionalidad de una clase. Una clase que hereda de otra adquiere los datos y funciones de la clase de la que extiende. Esto conlleva a la reutilización de código.

Poliformismo

El poliformismo es el tercer mecanismo y establece que, a través de una interfaz, es posible definir un comportamiento. Los comportamientos vienen definidos por las funciones que operan sobre los datos. Cualquier clase puede incorporar un comportamiento establecido, a través de una interfaz, y es responsabilidad de cada clase el implementar el mismo.

Gracias a este mecanismo, distintas clases que incorporan el mismo comportamiento y, a pesar de que tengan implementaciones distintas, se puedan intercambiar para un mismo propósito.

Esto lleva a que cualquier clase A que tenga una dependencia con otra clase B que incorpore un comportamiento Z pueda invertir esa dependencia. Eso significa que un objeto de la clase A ya no cree una instancia del objeto de la clase B en su interior si no que se utilice a través de alguno de sus método un objeto que tenga un comportamiento Z. De esta manera se “inyecta” la dependencia.

Gracias a la inyección de dependencias los programadores tienen el control absoluto sobre todas las dependencias del sistema. Con esto se puede conseguir que las reglas de negocio sean independientes, no tengan dependencias, de la base de datos o el framework con el que se trabaje.

Conclusión

La programación orientada a objetos es la habilidad de usar el poliformismo para ganar el control absoluto de todas las dependencias del sistema. Esto permite al arquitecto a crear una arquitectura de plugins en la cual los módulos que contienen las políticas de alto nivel son independientes de las reglas de bajo nivel.

Los detalles de bajo nivel son relegados a plugins que se pueden desarrollar y desplegar de manera independiente de los módulos de la política de alto nivel.


No hay comentarios:

Publicar un comentario