Spiegazione delle frecce UML


244

Di recente ho studiato UML e disegnato diagrammi semplici con normali frecce tra le classi, ma so che non è abbastanza. Ci sono molte altre frecce: generalizzazione, realizzazione ecc. Che hanno un significato per il lettore di diagrammi.

C'è una bella risorsa che potrebbe spiegare ogni freccia (ordinaria, semplice, punteggiata, piena di diamanti, diamante)?

Sarebbe il migliore se avesse alcuni esempi di codice per loro.


4
Consiglio vivamente di considerare questo: dzone.com/refcardz/getting-started-uml
trinity

Risposte:


475

Ecco alcune spiegazioni dai documenti di Visual Studio 2015:

Diagrammi di classe UML: Riferimento : https://msdn.microsoft.com/library/dd409437%28VS.140%29.aspx

Diagramma di classe UML

5 : Associazione : una relazione tra i membri di due classificatori.

5a : Aggregazione : un'associazione che rappresenta una relazione di proprietà condivisa. La proprietà Aggregazione del ruolo proprietario è impostata su Condivisa .

5b : Composizione : un'associazione che rappresenta una relazione a parte intera. La proprietà Aggregazione del ruolo proprietario è impostata su Composito .

9 : Generalizzazione : il classificatore specifico eredita parte della sua definizione dal classificatore generale. Il classificatore generale si trova all'estremità della freccia del connettore. Attributi, associazioni e operazioni sono ereditati dal classificatore specifico. Utilizzare lo strumento Ereditarietà per creare una generalizzazione tra due classificatori.

Diagramma del pacchetto

13 : Import : una relazione tra i pacchetti, che indica che un pacchetto include tutte le definizioni di un altro.

14 : Dipendenza : la definizione o l'implementazione del classificatore dipendente potrebbe cambiare se il classificatore all'estremità della freccia viene modificato.

Relazione di realizzazione

15 : Realizzazione : la classe implementa le operazioni e gli attributi definiti dall'interfaccia. Utilizzare lo strumento Ereditarietà per creare una realizzazione tra una classe e un'interfaccia.

16 : Realizzazione : una presentazione alternativa della stessa relazione. L'etichetta sul simbolo lecca-lecca identifica l'interfaccia.

Diagrammi di classe UML: Linee guida : http://msdn.microsoft.com/library/dd409416%28VS.140%29.aspx

Proprietà di un'associazione

Aggregazione : appare come una forma di diamante a un'estremità del connettore. È possibile utilizzarlo per indicare che le istanze del ruolo di aggregazione possiedono o contengono istanze dell'altro.

È navigabile : se vero per un solo ruolo, appare una freccia nella direzione navigabile. È possibile utilizzare questo per indicare la navigabilità di collegamenti e relazioni di database nel software.


Generalizzazione : Generalizzazione significa che il tipo specializzato o derivato eredita attributi, operazioni e associazioni del tipo generale o di base. Il tipo generale appare all'estremità della freccia nella relazione.

Realizzazione : Realizzazione significa che una classe implementa gli attributi e le operazioni specificate dall'interfaccia. L'interfaccia si trova all'estremità della freccia del connettore.

Fammi sapere se hai altre domande.


1
Bello riferimento, ma per me un Menu -> MenuItem ha la stessa relazione di un Ordine -> OrderItem, quindi entrambi sono Composizioni.
Ignacio Soler Garcia,

4
Ciò significa che la voce dell'ordine appartiene a un ordine e non può essere spostata, mentre la voce di menu può essere regolabile: l'utente può modificare la posizione della voce di menu. È la soluzione scelta. Perchè no?
Gangnus,

@Gangnus, grazie. Questa spiegazione ha chiarito la differenza che mi ha eluso per molto tempo.
JMD,

1
@JMD, Anche gli articoli dell'ordine possono essere spostati. L'aggregazione composita è definita nelle specifiche UML come segue: L'aggregazione composita è una forma forte di aggregazione che richiede che un oggetto parte sia incluso al massimo in un oggetto composito alla volta. Se un oggetto composito viene eliminato, tutte le sue parti che sono oggetti vengono eliminate con esso. Un oggetto parte può (ove diversamente consentito) essere rimosso da un oggetto composito prima che l'oggetto composito venga eliminato, e quindi non può essere eliminato come parte dell'oggetto composito.
www.admiraalit.nl,

2
@aGer Grazie, ho aggiornato l'argomento e i collegamenti alle immagini.
Esther Fan - MSFT,

154

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Penso che queste immagini siano comprensibili.


Alcuni di questi concetti non si sovrappongono? A dipende B. A ha accesso a B. Un'associazione non è sempre una dipendenza e una dipendenza è sempre un'associazione?
EresDev

1
Nel diagramma, la realizzazione viene ripetuta due volte ma con una figura diversa. Per favore, puoi approfondire la differenza?
variabile dal


13

Il mio "cheat sheet" UML preferito è UML Distilled , di Martin Fowler. È l'unico dei suoi libri che ho letto che consiglio.


1
Interessante, mi è piaciuto molto Refactoring. È quello su cui hai opinioni.
djna,

Sì, l'ho trovato un po 'ovvio e non mi è piaciuta la concentrazione su Java. Inoltre, per favore, non dare la mia risposta dicendo che gli altri suoi libri sono spazzatura.

Il libro di Fowler ha anche un cheat sheet all'interno delle copertine dei libri. Davvero buono per iniziare, soprattutto perché la tua prossima domanda sarà in quale direzione vanno le frecce?
Ted Johnson,

12
185 pagine sembrano un po 'eccessive per un "cheat sheet"!
cdyson37,


9

Per un rapido riferimento insieme a chiari esempi concisi, il riferimento rapido UML di Allen Holub è eccellente:

http://www.holub.com/goodies/uml/

(Ci sono alcuni esempi specifici di frecce e puntatori nella prima colonna di una tabella, con descrizioni nella seconda colonna.)


Mi è piaciuto il suo primo esempio e speravo che potesse andare progressivamente sulle stesse linee con le basi, ma è una buona lettura
killjoy

6

Una descrizione molto semplice da comprendere è la documentazione di yuml , con esempi di diagrammi di classe, casi d'uso e attività.


Probabilmente il miglior UML-per-idioti mentre si scende in questo elenco; nota: questo sito consente anche di disegnare i propri UML gratuitamente (5).
killjoy,

6

Detta la risposta accettata, mancano alcune spiegazioni. Ad esempio, qual è la differenza tra un'associazione unidirezionale e una bidirezionale? Nell'esempio fornito, entrambi fanno esistere. (Entrambi i '5 sono nelle frecce)

Se cerchi una risposta più completa e hai più tempo, ecco una spiegazione approfondita.



0

Aggregazioni e composizioni sono un po 'confuse. Tuttavia, pensa che le composizioni siano una versione più forte dell'aggregazione. Cosa significa? Facciamo un esempio: (aggregazione) 1. Prendi un'aula e gli studenti: in questo caso, proviamo ad analizzare la relazione tra loro. Un'aula ha un relazione con gli studenti. Ciò significa che l'aula comprende uno o più studenti. Anche se rimuoviamo la classe Classroom, la classe Students non deve essere distrutta, il che significa che possiamo usare la classe Student in modo indipendente.

(Composizione) 2. Dai un'occhiata alle pagine e alla classe di libri. In questo caso, pagine è un libro, il che significa che le raccolte di pagine rendono il libro. Se rimuoviamo la classe del libro, l'intera classe della Pagina verrà distrutta. Ciò significa che non possiamo usare la classe della pagina in modo indipendente.

Se non sei ancora chiaro su questo argomento, guarda questo breve meraviglioso video, che ha spiegato l'aggregazione in modo più chiaro.

https://www.youtube.com/watch?v=d5ecYmyFZW0

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.