2011-09-15 58 views
12

Estoy diseñando un diagrama de clases y tengo una duda:¿se recomienda hacer asociaciones a las clases enum en el diagrama de la clase uml?

Tengo una clase que tiene varios atributos que se refieren a enums Java y otras clases que se mapearán como catálogos db.

Por ejemplo, hay una clase llamada BankAccount que tiene un atributo llamado tipo: BankAccountType (enum) y otro que es bank: Bank (catalog class).

¿Es recomendable marcar la asociación entre clases o puede obviarse? En caso afirmativo, ¿deberían agregarse (una cuenta bancaria TIENE un tipo de cuenta bancaria) o simplemente asociarse?

Gracias de antemano.

Respuesta

22

Independientemente de si el tipo de atributo es una enumeración, hay dos maneras de representar atributos en UML: como atributos propios, y como asociaciones dirigidas.

The two ways of representing attributes in UML

Los dos estilos de declaraciones de atributos son semánticamente equivalentes: que significan exactamente lo mismo. En otras palabras, cuál eliges se reduce a una cuestión de estilo.

El uso de atributos permite un diagrama más simple, y en algunas herramientas es necesario para que el atributo sea visible en la vista en árbol del modelo.

El uso de asociaciones dirigidas significa que debe incluir el tipo de destino (la enumeración) en el diagrama, lo que significa que puede ver los literales. Por supuesto, también puede incluirlo en el otro caso, como ya hice con An_Enum arriba.

Normalmente no uso agregaciones o composiciones para el modelado a nivel de código; Siento que son más adecuados para describir relaciones más abstractas entre clases (como en un modelo de información) y conceptualmente no coinciden en nada con el código fuente. Los atributos sí, posiblemente complementados por relaciones de "dependencia" o "uso" con clases que se usan como tipos de variables locales o cuyos métodos se llaman.

+0

¿Cómo funcionan las multiplicidades en este caso? – FateNuller

1

Una simple asociación haría el truco. La agregación muestra que el ciclo de vida de la clase contenida está vinculado a la clase contenedora.

De wikipedia: La agregación puede ocurrir cuando una clase es una colección o contenedor de otras clases, pero donde las clases contenidas no tienen una fuerte dependencia del ciclo de vida del contenedor; esencialmente, si el contenedor se destruye, su contenido no son. http://en.wikipedia.org/wiki/Class_diagram#Aggregation

Además, encontraron esto para usted: UML class diagram enum

Cuestiones relacionadas