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?