2013-07-18 23 views
18

Vorrei sapere una volta per tutte come scrivere cardinalità UML, dal momento che molto spesso dovuto discutere su di loro (in modo da prove e le fonti sono i benvenuti :)Come * davvero * scrivere cardinalità UML?

Se voglio spiegare che un Mother può avere diversi Child i ma un Child ha una e una sola Mother, dovrei scrivere:

Mother * ---------- 1 Child 

O

Mother 1 ---------- * Child 

?

+0

Se hai già familiarità con la notazione ** Merise **, beh, UML fa esattamente il contrario per le cardinalità. Quindi il tuo primo esempio sarebbe corretto in un diagramma Merise. – Attila

risposta

19

la seconda Madre 1 ----------------- 1 .. * Bambino

Si potrebbe trovare molti esempio nel UML specification per tutti dato relativo al Sintassi astratta ...

1

Molte persone hanno questa domanda quando iniziano a utilizzare UML, specialmente quando provengono da un'altra notazione in cui i nomi vengono sempre letti in senso orario, indipendentemente da quale estremità della linea si trovano. Quello è veramente che confonde!

Red Beard è corretto, sebbene la specifica UML non dichiari esplicitamente dove sono scritte le informazioni di fine di associazione (cioè, nome e molteplicità), lo implica in diversi punti. Ad esempio, le Figure 7.11 (che mostrano gli attributi) e 7.12 (che mostrano associazioni unidirezionali con l'associazione termina vicino alle punte di freccia) sono equivalenti di proprietà delle proprietà; quindi, la molteplicità si avvicina di fatto al tipo della proprietà.

Un modo in cui ho imparato a ricordare quale fine ha quale molteplicità è immaginare un grafo unidirezionale di istanze e scrivere il numero accanto alle punte di freccia che puntano al bersaglio.

BTW, è necessario utilizzare nomi di associazione descrittivi. Spesso si trasformano in nomi di attributi in Java, nomi di elementi in XSD e così via. Ad esempio, in Java, la classe Madre potrebbe avere un attributo "bambini" di tipo "Set <Child>". Se non li chiami, riceverai spesso nomi di default indesiderati.

11

Ovviamente Red Bear ha ragione, la risposta corretta è la seconda.

Per quanto riguarda un suggerimento per ricordare questo, vi consiglio di pensare in inglese: Tu dici "Un bambino ha ONE madre", e in questa frase come in UML, ONE è scritto accanto alla madre. Abbastanza semplice.