En conjunto de trabajo en nuestra asignatura de patrones y metodologías para la construcción de software, ha llegado el momento de entrar en la conceptualización y aplicación de los principios SOLID para el diseño y construcción de software de calidad.
¿Qué son los principios SOLID?
Podemos entenderlos como principios básicos de trabajo de desarrollo y diseño de código de calidad y de fácil mantenimiento, haciendo su implementación específicamente en el paradigma de la programación orientada a objetos. Con SOLID se busca principalmente que nuestra implementación de código sea mas legible, mejor estructura en dependencias y cohesión, además de obtener beneficios de crear sistemas extensibles y adaptables a diversos entornos de aplicación.
Acrónimos de los principios:
-Srp : se refiere al principio de responsabilidad única, en donde se define que cada clase debería tener solo una razón para cambiar, es decir, que cada una de estas debe poseer una sola responsabilidad, permitiendo así la contención de la propagación del cambio.
-
Ocp: se refiere al principio abierto/cerrado, en el cual se define que las clases deben estar abiertas a extensiones pero cerradas a modificaciones. Esto busca que el software se vuelva específicamente mas extensible mediante la implementación de sus mismas clases, de igual manera brindando un mayor grado de seguridad en la estructura del software.
-
Lsp: (principio de sustitución de Liskov) aquí se define que las herencias e implementaciones que realicen las clases hijas con respecto a una super clase deben ser completamente funcionales en cuanto a la definición de la abstracción.
-Isp: (principio de segregación de interfaces) en este principio se busca que los clientes no deben ser forzosamente dependientes de las interfaces que no utilizan. Las interfaces que se implementen deben tener una caracterización de estructura liviana, otorgando así mayores niveles de cohesión en la estructura general del sistema.
-
Dip: (principio de inversión de dependencias) principio que establece que las clases de alto nivel no deben depender de las clases de bajo nivel, ambas deben depender de abstracciones. De igual manera, las abstracciones no deben depender de los detalles.
A continuación, te invito a descargar el siguiente archivo donde he implementado la funcionalidad y definición de cada uno de estos principios con un conjunto determinado de entidades que se relacionan entre si.
Link de descarga:
SOLID
Descripción del Archivo
En el archivo anterior, están contenidos específicamente dos ejecutables, uno correspondiente a la aplicación del principio LSP y otro a SRP.
Para LSP, se tomo como ejemplo el modelamiento y la definición de un conjunto de animales (Alacrán, tarántula, perro y gato) mediante una abstracción y su respectiva herencia. Sin embargo para poder cumplir este principio, es necesario tomar en cuenta que no todos los animales se rigen bajo los mismos comportamientos.
En el caso de SRP, es importante definir estrictamente las responsabilidades y funciones reales de una entidad en un sistema determinado. En este ejemplo se tomó el modelamiento de un taller para autos. En el interactúan entidades como los carros, técnicos, lavanderos y personas dedicadas a la lubricación. ¿Qué función crees que cumplen realmente cada uno?
Te invito a conocer mas de los principios SOLID y a entender mejor los ejemplos mencionados anteriormente mediante la descarga del otro archivo referente a la representación grafica en diagramas UML de cada uno de los ejemplos trabajados.
Diagramas:
Diagramas
Elaborado por:
Rodrigo Esteban Linares Torres
Universidad Manuela Beltrán
Patrones y metodologías para la construcción de software