Tengo una clase MyServer que contiene un mapa cuyas claves son objetos MyClientType y cuyos valores son objetos MyClient. Me gustaría describir esta relación en un diagrama de clases, pero no puedo encontrar una manera limpia de hacerlo.¿Cómo describir un mapa contenido en el diagrama de clases UML?
Respuesta
MyServer
|
|
|
Map
|
| |
| |
MyClientTypeKey MyClientType
¿No debería ser tan simple como el anterior?
- MiServidor tiene una una a una Assoication con el Mapa
- el mapa tiene 1 a muchas asociaciones con las claves y valores.
Simplemente mostraría una asociación de MyServer a MyClient con una multiplicidad de 0 .. * en MyClient. Todo lo demás es detalles de implementación y se puede dejar al programador.
Esta es una de las dos respuestas correctas. El otro es @Kru. –
MyServer
|
|*
T1toT2
/ \
1/ \1
Key Value
La diferencia con la solución de Mark es que el servidor tiene muchas relaciones con los contenedores. Así es también como el Eclipse Modeling Framework (EMF) proposes to implement maps.
También puede agregar algunas cosas más específicas de UML, como especificar que las claves tienen que ser únicas (mediante estereotipos).
En primer lugar, y algunos otros piensan, UML debe contener algunos tipos de colecciones básicas, como lo hizo en algunas versiones anteriores. Podrían tomarse por ejemplo del OCL ...
El "camino EMF" parece correcto, sin embargo, en mi humilde opinión le da demasiada importancia al tipo de , que es muy poco importante en mi humilde opinión, por lo que se acaba de modelarlo como una clase de asociación. Esto le permitirá capturar todas las restricciones específicas del mapa (como, por ejemplo, la multiplicidad) que se pueden capturar utilizando clases regulares, pero no hará que esa clase sea tan importante como las otras.
Puede utilizar una asociación cualificada:
┌──────────┐ 1 ┌───────┐
│ MyServer │Key│───────────│ Value │
└──────────┘ └───────┘
Ver: http://etutorials.org/Programming/UML/Chapter+6.+Class+Diagrams+Advanced+Concepts/Qualified+Associations/(causa es difícil dibujar usando ASCII)
Tenga en cuenta también que una asociación cualificado cambia la multiplicidad:
┌──────────┐ 0..* ┌───────┐
│ MyServer │───────────────│ Value │
└──────────┘ └───────┘
┌──────────┐ 1 ┌───────┐
│ MyServer │Key│───────────│ Value │
└──────────┘ └───────┘
La parte superior muestra una asociación de un servidor a valores 0-n. Por el contrario, la asociación calificada dice que cualquier clave dada se asociará con un solo valor, y que no puede tener una clave como valor ausente.
Esta es una de las dos respuestas correctas. El otro es @ chimp's. –
Si MyServer se "expandió" para mostrar operaciones y atributos, ¿qué iría dentro del compartimiento de atributos de MyServer para modelar la relación del mapa? –
La respuesta de Kru es la mejor, pero todavía solo insinúa un Mapa.
Yo diría que depende del nivel de abstracción en el que se encuentre el diagrama. Si es relativamente alto, me gustaría ir con la respuesta del chimpancé. Si es relativamente baja y realmente se necesita para mostrar un mapa, mostrando intencionadamente detalle relativas a la aplicación, me gustaría ir con lo siguiente:
MyServer
|
|
Map
|
|*
T1toT2
/ \
1/ \1
Key Value
¿Cómo se lleva a cabo a continuación, el mapa en código es totalmente irrelevante (Run-T1toT2
los objetos de tiempo pueden no serlo en realidad).
Como se ha mencionado por Gabreil, esto podría ser también ser modelado utilizando una clase de asociación
MyServer
|
|
Map
|
|*
T1toT2
|
|
1--------1
Key Value
Por supuesto, es sólo importa si realmente realmente necesita para mostrar o especificar un mapa.
- 1. Diagrama de secuencia UML
- 2. ¿Cómo puedo crear un diagrama de clases con el módulo UML 6.8 de NetBeans?
- 3. UML composición diagrama de clases con la clase jerarquías
- 4. ¿Cuál es el significado de la flecha discontinua en el diagrama de clases UML?
- 5. ¿Existe un plugin de Eclipse gratuito que crea un diagrama UML de clases/paquetes de Java?
- 6. ¿se recomienda hacer asociaciones a las clases enum en el diagrama de la clase uml?
- 7. ¿Con qué diagrama UML debería comenzar?
- 8. ¿Pongo 'const' en mi diagrama UML?
- 9. ¿Es correcto el diagrama de clase UML de Zend_Log?
- 10. UML: Clase interna en un diagrama de clase
- 11. ¿Cuál es la diferencia entre el diagrama de colaboración y el diagrama de comunicación en UML?
- 12. ¿Puedo escribir comentarios en el diagrama de la clase UML?
- 13. Clases privadas y uml
- 14. Diagrama de clases en Eclipse
- 15. ¿Código Python generado automáticamente a partir de un diagrama UML?
- 16. diagrama de clases comprensión
- 17. ¿Cómo obtener un buen diagrama de clases para clases incorporadas de .net?
- 18. Diagrama de clase UML Asociación vs (Agregación | Composición) -Diamantes
- 19. Diagrama UML para llamadas a funciones
- 20. Cómo generar un diagrama de clase a partir de las clases existentes en Netbeans IDE
- 21. Defina el concepto de "puerto" en un diagrama de estructura compuesta UML
- 22. Diagrama de clase UML para inicio de sesión de usuario
- 23. UML - ¿Cómo administrar diagramas de clase grande?
- 24. Representando una Genérico Método C# en una clase UML Diagrama
- 25. Cuándo usar clases de asociación UML?
- 26. R - cómo usar el contenido de un vector como el símbolo en un diagrama?
- 27. ¿Cómo se muestra la creación de instancias en un diagrama de secuencia UML?
- 28. Código de ingeniería inversa en un diagrama de clase UML en VS 2010
- 29. ¿Cómo ajustar la escala de impresión de un diagrama UML en Enterprise Architect?
- 30. ¿Cómo descargo el contenido de un mapa hash?
Eso es lo primero que se me vino a la cabeza, pero parece que el mapa no merece ser una clase. Es solo un método de contención. No lo sé, simplemente no me siento bien. – gooli
Pero solo digamos que tener las clases de clave y tipo directamente asociadas con MyServer no muestra cómo están relacionadas. El mapa es un contenedor pero también muestra la relación entre la clave y el tipo. – Mark