Diagramma di classe UML - relazione di dipendenza da istanze: chi dipende da chi? [duplicare]

0

Ho fatto qualche lettura sulla relazione <<instantiate>> nei diagrammi delle classi UML. È una relazione di dipendenza in cui una parte dipende dall'altra.

Tuttavia, non sono sicuro chi dipende da chi: la classe di creazione di istanze dipende dalla classe istanziata o viceversa? Ho trovato risposte contraddittorie a questo.

Chiamiamo la classe di istanziazione ClassA e la classe istanziata ClassB.

Da una parte, ClassA deve avere un'istruzione new ClassB() nel suo codice. Il che significa che deve "conoscere" ClassB - un classico esempio per spiegare che cos'è la dipendenza. Ciò significa che ClassA (la classe di creazione di istanze) dipende da ClassB.

Tuttavia logicamente l'esistenza di istanze di ClassB potrebbe dipendere da un'operazione eseguita da ClassA.

Che è corretto: si dice che la classe di istanziazione dipende dalla classe istanziata (che significa che la freccia tratteggiata punterà dalla classe di istanziazione alla classe istanziata), o la classe istanziata si dice che dipenda dalla classe di istanziazione (quindi la freccia punta nella direzione opposta)?

    
posta Aviv Cohn 27.04.2014 - 13:21
fonte

1 risposta

2

Credo che la tua confusione derivi dalla contraddizione tra l'esempio e il linguaggio di UML 2.4 .1 specifica , dove afferma quanto segue per "istanziare",

In the example below, the Car class has a dependency on the CarFactory class. In this case, the dependency is an instantiate dependency, where the Car class is an instance of the CarFactory class.

[ CarFactory ] -- <<instantiate>> ---> [ Car ]

Figure 7.38 - An example of an instantiate dependency

Questa è una vecchia stranezza nella specifica ma non è stata ancora risolta. Il testo contraddice ovviamente la figura e il buonsenso, l'auto può essere istanziata da sola ed è la classe factory CarFactory che dipende dall'esistenza della classe Car e non viceversa.

Which is correct: the instantiating class is said to depend on the instantiated class (meaning the dashed arrow will be pointing from the instantiating class to the instantiated class), ...

Notare la direzione della freccia,

A dependency is shown as a dashed arrow between two model elements. The model element at the tail of the arrow (the client) depends on the model element at the arrowhead (the supplier). [UML 2.4.1 7.3.12]

Quindi la risposta ("sì") alla tua domanda sopra citata è che la classe di istanziazione dipende dalla classe istanziata.

    
risposta data 27.04.2014 - 13:42
fonte

Leggi altre domande sui tag