2011-03-14 8 views
7

¿se suele poner asociaciones de agregación entre interfaces?Agregación de interfaz en diagramas de clase UML

Ejemplo:

Example Diagram

Aquí, siento que una agregación es redundante. El que está entre las interfaces es más importante, porque eso es lo que usarán los clientes de las clases. BMW y LuxuryWheel siempre se usarán a través de ICar y IWheel. Sin embargo, ICar realmente no agrega IWheel, ya que es una interfaz y no contiene una lógica real. BMW agrega claramente LuxuryWheel, pero eso es casi un detalle de implementación.

¿Cómo modelizarías esto? ¿Hay alguna forma en UML de marcar una agregación (o asociación) como abstracta o por implementar?

Respuesta

9

Si nos fijamos en la UML spec, usted encontrará que en 7.3.24:

En particular, una asociación entre las interfaces implica que debe existir una asociación conforme entre implementaciones de las interfaces.

Así que, sí, puede dibujar agregaciones entre las interfaces, pero su diagrama puede no significar exactamente lo que espera.

+0

7.3.24 parece relevante. Si leo esa sección (y miro el ejemplo), me parece que uno no modela explícitamente la asociación entre las clases concretas. Están implícitos a través de la asociación entre las interfaces. Eso significa que la asociación entre BMW y LuxuryWheel es superflua. – TheFogger

+0

@TheFogger: bueno, esa es la pregunta ... si el "debe existir" en la especificación significa que DEBERÍA estar en el modelo, entonces PORQUE tiene la asociación entre las interfaces, DEBE tener la asociación entre la instancia de ICar (BMW) y IWheel (LuxuryWheel). Por otro lado, a veces no estoy muy seguro con las descripciones de lenguaje natural de la especificación UML, y diría que te has aventurado en una de esas áreas grises. Tal vez deberías usar una clase abstracta ACar que tiene una agregación de AWheels en lugar de interfaces. Eso es con lo que la mayoría de la gente se sentiría cómoda. – ShiDoiSi

Cuestiones relacionadas