Programación

Solo disponible en BuenasTareas
  • Páginas : 12 (2879 palabras )
  • Descarga(s) : 27
  • Publicado : 16 de junio de 2010
Leer documento completo
Vista previa del texto
Mapeo de relaciones entre clases en un diagrama UML y Java
Nora Blet

En UML se define la “relación” como una “conexión semántica entre elementos del modelo”. Este concepto engloba diversos tipos de relaciones, tales como asociación, generalización y distintas formas de dependencia. La expresión “conexión semántica” suele ser particularmente oscura para quien se adentra en el mundo delmodelado. “Semántica” es la parte de la lingüística que estudia el significado de las palabras, de modo que esta expresión podría traducirse como “conexión significativa”, aunque esto no acaba de aclarar la vaguedad de la misma. El concepto de relación no se entiende hasta que no se profundiza en el significado de cada uno de los distintos tipos de relaciones, es decir, qué propiedades tienen y cómo seusan para construir los modelos. En la figura siguiente pueden observarse las tres relaciones básicas entre clases en un diagrama UML.
[pic]

Asociación binaria

Una asociación se define como una “relación semántica entre dos o más clases (aquí se consideran sólo entre dos clases) que especifica conexiones entre las instancias de estas clases”. En orientación a objetos, el comportamiento de unsistema se define en términos de interacciones entre objetos, es decir, intercambios de mensajes. “Enviar un mensaje” habitualmente resulta en la invocación de una operación en el receptor. Las asociaciones son necesarias para la comunicación, ya que los mensajes son enviados a través de las asociaciones; sin asociaciones, los objetos quedarían aislados, incapaces de interactuar.
Los lenguajesque soportan programación orientada a objetos permiten expresar muy bien las relaciones de generalización e implementación pero, no tienen ninguna sintaxis o semántica para hacerlo con las asociaciones contextuales, en forma directa. Por tanto, éstas deben implementarse mediante una adecuada combinación de clases, atributos y métodos.
La idea más simple es proveer un atributo para almacenar losenlaces de la asociación, métodos de acceso-modificación para manipularlos y aquéllos necesarios para controlar las restricciones impuestas por la asociación. Sería conveniente agrupar estos métodos y atributos de alguna forma para identificar más fácilmente, dentro de la clase, qué pertenece al control de la asociación y qué a los atributos y métodos propios de la clase.
Esta idea, sin embargo,proporciona una implementación muy incompleta ya que no garantiza automáticamente el cumplimiento de las propiedades de la asociación. El número de las consideraciones que el programador debe tener en cuenta al escribir el código ligado a las asociaciones, es tan grande que continuamente corre el riesgo de olvidar algún detalle esencial, especialmente cuando se trata de asociaciones conmultiplicidad mayor a 1 o asociaciones bidireccionales. En la siguiente figura se ilustran ejemplos de asociación unidireccional (a) y bidireccional (b). La asociación Llave-Puerta es unidireccional: una llave puede acceder a la puerta que abre pero una instancia de Puerta no conoce el conjunto de instancias de Llave que la abren.

[pic]
En la figura que sigue, para el caso (a), en el extremo B, si x es0 o 1, (si la multiplicidad es 0 se dice que la asociación es opcional y si es 1, se dice que es obligatoria), se añade una variable de instancia de tipo B (en el caso de asociación obligatoria hay que asegurarse que sea distinta de null) en el código de la clase A y si la multiplicidad del lado B es de tipo “0…*” se añade una variable de instancia de tipo CollectionOfB en el código de la clase A.La clase contenedora o colección CollectionOfB implementan java.uti.List o java.util.Set.

[pic]

En el caso general (multiplicidad: *) no se puede utilizar arrays de objetos, debido a que tienen un tamaño fijo desde el momento de su creación. Se debe añadir, entre otros, dos clases de métodos modificadores: uno para añadir y otro para eliminar objetos, ambos con parámetros que sean...
tracking img