lunes, 5 de julio de 2010

Principios del Diseño OO

LA IMITACION ES LA FORMA MAS SINCERA DE NO SER ESTUPIDO

No hay nada más satisfactorio que aparecer con una solución completamente nueva y original al problema que te ha estado causando muchos dolores de cabeza por estos días. Hasta que te das cuenta que alguien más resolvió el mismo problema, mucho antes que tú, e incluso hizo un mejor trabajo que el tuyo. En esta y otras entregas vamos a revisar algunos de los principios del diseño orientado a objetos que las personas han traído con el paso de los años y como estos, pueden hacerte un mejor programador. Dejando a un lado tus pensamientos de “Hacerlo a mi manera”, esta entrega trata de hacerlo de la forma más inteligentey más rápida.


RESUMEN DEL PRINCIPIO DE DISEÑO

En el momento de sumergirnos en la realización de una aplicación software, lo primero que hacemos es conocer o tener claro que se va hacer, a través del levantamiento de requerimientos, luego hacemos el análisis respectivo, y dibujamos el funcionamiento de nuestro sistema mediante un diagrama de casos de uso, para tener una vista general. Claro, en algún punto tendrás que escribir código ¿no es así? Y aquí es donde los principios del diseño juegan un papel muy importante.


¿QUE ES UN PRINCIPIO DE DISEÑO?

Un principio de diseño es una herramienta básica o técnica que puede ser aplicada para diseñar o escribir código, con el fin de hacer ese código mantenible, flexible, o extensible.

“El uso de principios de diseño OO ya probados, traen como resultado un software + mantenible,+flexible, y + extensible.”

A continuación vamos a estudiar y observar el uso de nuestro primer principio de diseño:


Principio de Responsabilidad Única (PRU)

Este principio trata de las responsabilidades, es decir, que cosas tienen que hacer los objetos de tu aplicación. Tu intención es que cada objeto que diseñaste debe tener solo una responsabilidad en que enfocarse, y cuando algo cambie en esa responsabilidad, tú sabrás exactamente donde buscar en tu código para hacer los respectivos cambios.

“Cada objeto en tu sistema debería tener una sola responsabilidad, y todos los servicios de ese objeto deberían estar enfocados en llevar a cabo esa única responsabilidad”

Muchas veces, tú puedes descubrir clases que no están usando el PRU con una simple prueba:

1 – En una hoja de papel, escribe líneas de la siguiente forma:
El/La [espacio en blanco][espacio en blanco] el/ella mismo(a).
Para cada método que tenga la clase.

2- En el primer espacio en blanco de cada línea, escribirás el nombre de la clase, en el segundo espacio en blanco, escribe uno de los métodos de la clase. Has esto para cada método de la clase.

3- Lee cada línea en voz alta (podrías tener la necesidad de agregar una letra o palabra para que la lectura parezca más natural) .Lo que dices parece tener sentido?. Tu clase realmente tiene la responsabilidad que ese método indica que hace?

“Si lo que has dicho parece no tener sentido, entonces probablemente has violado el PRU con ese método. El método puede pertenecer a otra clase… piensa en moverlo de lugar”




Miremos ahora un ejemplo de aplicación. Hacer el análisis del PRU a la clase Automóvil mostrada en la parte inferior.


Al realizar el PRU los resultados obtenidos aparece en la grafica de abajo.


- Tiene sentido que el automóvil sea el responsable de arrancar y parar, esa es una de la funciones de este.

- Un automóvil no es responsable para cambiar sus propias llantas, lavarse él mismo o chequear su propio combustible.

- El método conducir puede parecer engañoso, porque al decir que un automóvil arranca y para él mismo no necesariamente este también tiene que manejarse solo, en realidad el que conduce el automóvil es el conductor del vehiculo ¿no? Y esa responsabilidad es de él.

- Tú deberías haber pensado cuidadosamente acerca del método obtenerCombustible() , porque la verdad puede tener cierta ambigüedad, no se sabe que significa, pero en este caso la función de este método es retornar la cantidad de combustible que tiene el automóvil, y eso es algo que cualquier vehiculo tiene que hacer. Casos como este son el porque el análisis del PRU es solo una guía. Aún así,tendrás que hacer juicio propio y el uso de tu sentido común y experiencia.

DE MULTIPLE RESPONSABILIDADES A UNA RESPONSABILIDAD UNICA


Una vez hayas hecho el análisis, puedes tomar aquellos métodos que no tengan sentido en una clase, y moverlos a otra que si guarde relación con la responsabilidad de la misma.


Espero que este principio sea de mucha ayuda para cuando tengas que otorgarle responsabilidades a tus objetos y no sepas como hacerlo.
En las posteriores entregas presentaré el resto de los principios orientados a objetos.

1 comentario: