diagrammi delle classi UML: come mostrare la dipendenza

2

Considerare un programma con quattro classi: Classe A, B, C e D.

Le classi A e B sono sottoclassi di super-classe C astratta.

La classe D dipende da C. Significato: contiene un campo C objectOfTypeC .

Come sappiamo, polimorficamente il riferimento objectOfTypeC può contenere oggetti di classe ד A e B. Il valore di questo riferimento può cambiare dinamicamente durante il runtime.

Questo tipo di situtation è molto comune in OOP.

Un esempio comune è il modello di strategia, in cui diverse classi ereditano o implementano la classe astratta o l'interfaccia SuperType . Un'altra classe SomeClass contiene un riferimento di tipo SuperType , ed è in grado di contenere dinamicamente diverse istanze di SuperType sottoclassi in quel riferimento.

La mia domanda è questa: ho due idee su come questo può essere mostrato in un diagramma di classe UML, ma non sono sicuro quale sia corretto.

(Nota: in questi esempi, il super-tipo è un'interfaccia, ma potrebbe anche essere una classe astratta, o anche una normale super classe).

Quale opzione è più corretta?

    
posta Aviv Cohn 08.04.2014 - 15:58
fonte

1 risposta

6

Se guardi UML del modello di strategia che hai menzionato, noterai che l'opzione 1 è corretta. Per spiegarlo correttamente. In UML, la relazione di associazione (ad esempio la freccia) di solito significa che l'entità ha un attributo che è di tipo a cui punta la freccia. Qual è esattamente il tuo caso di associazione tra SomeClass e SuperType . L'opzione 2 significherebbe SomeClass ha 3 attributi uno per ciascuno di Class1 , Class2 e Class3 , che non è quello che vuoi.

    
risposta data 08.04.2014 - 16:03
fonte

Leggi altre domande sui tag