2015-10-17 16 views
5

In base alle specifiche UML è possibile indicare una dipendenza tra due classi tramite gli stereotipi <<Create>> o <<Instantiate>>.Dipendenza "Crea" e "Instantiate" in UML

Sai quali sono le differenze tra questi stereotipi?

E 'scritto in UML spec 2.5 (cap 22.3 standard Stereotipi.):

  1. Per <<Create>>

    Una dipendenza utilizzo che denota che il classificatore client crea istanze del fornitore classificatore

  2. Per <<Instantiate>>

    Una dipendenza utilizzo tra i classificatori che indica che le operazioni sul client creano istanze del fornitore

+1

Non metterei tutte le definizioni UML su un bilancio in oro. Per me entrambe le definizioni sembrano molto simili. Dalla mia comprensione <> somiglia alla creazione (di Dio), quindi qualcosa di nuovo. <> al contrario è più simile a un'operazione di clonazione. YMMV –

risposta

1

ho notato che < < Crea >> stereotipo può essere applicato non solo a "Uso "dipendenza ma anche a " BehavioralFeature "(vedere la sezione 22.2 nelle specifiche UML).

In UML "BehavioralFeature" corrisponde a metodi particolari in una classe o interfaccia.

Quindi se vi segnalo particolare metodo in una classe con < < Creare >> o < < Destroy >> intendiamo che crea/distrugge un istanze di questa classe.

Possiamo fare un parallelo tra la marcatura di un metodo con < < Crea >> e segnando una dipendenza Usage con < < Creare >>.

Se si contrassegna una dipendenza di utilizzo con < < Crea >> quindi ciò significa che il metodo particolare in una classe client crea un'istanza di una classe fornitore. Quindi creiamo un'istanza di fornitore nel corpo della nostra classe cliente. Client e fornitore sono fortemente accoppiati qui.

D'altra parte se si contrassegna una dipendenza di utilizzo con < < Instantiate >> quindi la classe cliente delega la creazione del fornitore agli altri oggetti. Quindi crea indirettamente il Fornitore. In questo caso, Client e Fornitore sono accoppiati liberamente. Per esempio, questo accade se creiamo Fornitore tramite uno dei modelli Creazionali: Object Pool, Prototype, Factory Method ecc

Nota:

In linea di massima, non è molto chiaro le differenze con le specifiche . Speranza in versioni future di esso (più di 2.5 versione) abbiamo definizioni più chiare.

+0

Questa è la tua interpretazione di queste cose o hai una fonte che conferma questa visione? –

+0

Questa è la mia analisi sulla base della specifica UML – Vitaly

2

Michael Jesse Chonoles Sì, «create» viene utilizzato nei diagrammi di sequenza. È uno stereotipo su un messaggio. «Crea» è anche uno stereotipo su una caratteristica comportamentale in un classificatore che indica che è un costruttore di istanze di quel classificatore (o l'equivalente per gli elementi non orientati agli oggetti).

Quando "Crea" viene utilizzato su una dipendenza, non sembra molto diverso da "Istanziare". Personalmente, io uso la dipendenza "Instantiate". Quando intendo una vera istanza orientata agli oggetti è arrivata chiamando il costruttore (che è il modo in cui tradurrei il modello in codice). Vorrei usare «Crea» quando si tratta di un diverso tipo di creazione, o più indirette, concettuali o non orientate agli oggetti.

Ecco alcuni esempi. Vorrei usare «Crea» per dire MSWord -> «Crea» un documento, un modellatore «Crea» un modello. Anche se normalmente non modellerei questo in dettaglio, userei «Crea» per indicare un componente «Crea» un nuovo record del database, il gestore del database «Crea» un nuovo database, un programmatore «Crea» una nuova app. Oppure crea un nuovo elemento in una matrice (non-oo). Questi possono accadere senza chiamare direttamente un costruttore tradizionale orientato agli oggetti e non possono essere convertiti direttamente in codice.

D'altra parte, se avessi un'operazione di matrimonio su una persona, sarebbe probabilmente «Istanziare» l'oggetto della classe di associazione del matrimonio.

Poiché la maggior parte della mia modellazione è concettuale, in pratica, tendo a usare «crea». Però, anche allora non viene fuori così spesso.

+0

Vedi anche qui: https://www.linkedin.com/grp/post/143183-6061637312238927877 –