Está en la página 1de 5

2009 - Fundacin Proydesa

Mapeo del Modelo de Dominio a Cdigo Java


Aqu se ver como implementar el modelado del diagrama de Clases UML: Informacin de Tipo Atributos Asociaciones Informacin de Tipo Existen tres tipos de clases importantes: clases concretas, clases abstractas, e interfaces.

Un elemento adicional a la informacin de tipo es la superclase de una clase dada. La palabra clave extends se utiliza en Java para definir este tipo de relacin (herencia).

En Java las interfaces se implementan por clases. La palabra clave implements define este tipo de relaciones.

2009 - Fundacin Proydesa

Atributos La sintaxis UML para la declaracin de los atributos es: [visibilidad] nombre [multiplicidad] [: tipo] [= valor-inicial] [{cadena de propiedades}] La sintaxis de Java para la declaracin de un atributo es: [modificadores] tipo nombre [= valor-inicial];

Los modificadores de declaracin de atributo se determinan a partir de las siguientes reglas de mapeo UML: Visibilidad: Mapea a la accesibilidad de los atributos.

La restriccin {frozen} mapea al modificador final. Si la multiplicidad del atributo es mayor a uno, el tipo de atributo es un vector (array) o a una coleccin. Se puede declarar el alcance de la clase. Se puede declarar un atributo para que tenga el alcance de la clase. En UML los miembros (atributos y mtodos) que tienen alcance de la clase se representan marcando su declaracin subrayada. Esto mapea al modificador static.

2009 - Fundacin Proydesa

Asociaciones Se implementan normalmente como un atributo

Existen caractersticas importantes de las asociaciones: Navegacin. Multiplicidad Asociaciones calificadas Navegacin La flecha de navegacin especifica que clase debe implementar la asociacin y el mtodo de acceso. Unidireccional: Indica que la asociacin navega en una nica direccin. En el ejemplo la clase Room navega a la clase Property; por eso la clase Room debe incluir un atributo que mantenga la asociacin de un objeto de la clase Property. Es ms, no existe atributo en la clase Property para navegar al objeto Room.

Bidireccional: Indica que la asociacin puede navegar en ambas direcciones. La clase Room navega a la clase Property y vice versa. Por eso la clase Room debe incluir un atributo que mantenga la asociacin de un objeto de la clase Property. Es ms, la clase Property debe incluir un atributo para navegar a la clase Room.

Mtodos de Asociacin Una correcta encapsulacin recomienda mantener la asociacin como variable de instancia privada y brindar mtodos de acceso y modificacin pblicos. En el caso de una asociacin unoa-uno es suficiente proveer mtodos simples de acceso (set y get).

2009 - Fundacin Proydesa

Multiplicidad de Asociacin Cuando la multiplicidad de la asociacin es uno-a-muchos o muchos-a-muchos, esta agrega complejidad al cdigo que se debe utilizar para implementar la asociacin. Existen muchas tcnicas para codificar dichas asociaciones, como el utilizar arrays. Sin embargo, el mecanismo ms genrico es utilizar la API de Collecciones Java. Por ejemplo, la clase Property tiene una asociacin uno-a-muchos con la clase Room. Puede representarse con un atributo llamado rooms del tipo Collection. En este ejemplo, la implementacin de la coleccin es HashSet, se podra haber utilizado una clase que implemente list si el orden fuese importante.

Para acceder a la coleccin rooms en una propiedad, se necesitara codificar un mtodo para devolver un Iterator que permita iterar a travs de cada item de la coleccin. Dicha implementacin se hace a travs del mtodo getRooms. Para agregar o quitar rooms de la coleccin se deben crear dos mtodos: addRoom y removeRoom. Estos mtodos controlan el acceso a dicha coleccin.

2009 - Fundacin Proydesa

Asociaciones identificadas Dividen una asociacin uno-a-muchos (o muchos-a-muchos) en grupos ms pequeos. Tipicamente, identifican un nico elemento en la coleccin. Una asociacin muchos-a-muchos puede ser identificada por un ndice entero. En el ejemplo, las rooms del objeto Property estan ordenadas por un ndice. Una implementacin tpica es utilizar un atributo List.

Los mtodos de acceso y modificacin deben permitir que el cliente de dicha clase acceda y manipule la coleccin por un ndice. Por eso el mtodo getRoom tiene como parmetro idx para saber que room se solicita. De la misma manera, los mtodos addRoom y removeRoom deberan utilizar el ndice para saber que room agregar o eliminar. Una asociacin identificada tambin puede utilizar una clave no entera para realizar las bsquedas. Se lo llama identificador simblico. Normalmente es un valor del tipo string. En el ejemplo las rooms son identificadas por su nombre. Una estructura Map se utiliza usualmente para implementar una asociacin de identificacin simblica.

Los mtodos de acceso y modificacin deben permitir que el cliente de dicha clase acceda y manipule la coleccin por el identificador simblico. Por eso el mtodo getRoom tiene como parmetro name para saber que room se solicita. De la misma manera, los mtodos addRoom y removeRoom deberan utilizar el nombre para saber que room agregar o eliminar.

También podría gustarte