domingo, 30 de octubre de 2011

Reflexión sobre relaciones de Agregación y Asociación en UML Continuación

Relación Maestro-Esclavo:

Esta semana leí un documento que formaliza la relación tiene un, realmente era una formalización científica y estaba escrito en OCL (Object Constraint Language).

Lo interesante es que si nos detenemos en la relación maestro-esclavo, es una relación tiene-un, es decir, el maestro, en este caso, debe tener un esclavo porque si no entonces no es maestro.

Pero esta relación se refiere a mando, uno indica y el otro obedece. Sin embargo, analicemos esta situación: Digamos que tenemos un vaso, ahora le agregamos un dado. ¿El vaso tiene un dado?. Pareciera que si en el momento que sí en el momento en que tenemos el dado, pero si le quitamos el dado el vaso sigue siendo un vaso completo. Por lo tanto, el vaso no tiene un dado porque una condición de la relación tiene un es que si le quitas la parte al todo, el todo se destruye por la simple razón que pasa de ser todo a ser algo parcial, lo que constituiría una contradicción.

Ahora bien, el vaso con el dado es una relación maestro-esclavo porque a donde mueves el vaso mueve el dado, pero a donde mueves el dado no mueves el vaso (lo puedes mover dentro del vaso). Por herencia entonces si decimos la relación vaso-dado es maestro-esclavo y maestro-esclavo es tiene-un por transitividad la relación vado-dado es tiene-un. Entonces ¿Colocamos una agregación entre el vaso y el dado?.

La respuesta es no, porque para que el vaso comande al dado primero debemos agregarle el dado, es decir, el vaso ya existía antes de poseer el dado A la vez, un diagrama de clase es un diagrama estructural, muestra como se componen los objetos de los que son familia las clase. Por ejemplo, tenemos este vaso con el dado y le colocamos un vaso aparte, si decimos que el vaso tiene un dado entonces el otro no es un vaso pero es un contradicción porque realmente es un vaso.

En conclusión, un Diagrama de Clases muestra definiciones y porque un objeto mande a otro, no quiere decir que el objeto que manda tenga una agregación con el que obedece.

Muchas Gracias por su lectura.

Referencia al documento indicado inicialmente:


The Whole-Part Relationship in the Unified Modeling Language: A
New Approach

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.72.43&rep=rep1&type=pdf


No hay comentarios:

Publicar un comentario