Come rappresentare la composizione bidirezionale tra due classi nel diagramma delle classi UML

1

Se la classe A ha molti di classe B e la classe B ha molti di classe A, dovremmo posizionare un diamante su entrambi i lati della linea tra loro?

Come nella foto qui sotto, o va bene solo indicare la quantità in entrambe le direzioni e avere il diamante solo su un lato?

    
posta shinzou 21.08.2016 - 11:11
fonte

1 risposta

2

La risposta semplice è: no. Non puoi avere diamanti su entrambi i lati della stessa linea.

L'aggregazione è una relazione intero / parziale (con diamante su un lato intero). Una singola associazione rappresenta una particolare relazione tra istanze di una classe e quindi lo stesso oggetto non può essere contemporaneamente una parte di un altro oggetto e un intero che contiene lo stesso oggetto. Mentre è difficile immaginare e portare altri problemi sul tavolo si potrebbe provare a costruire tale costrutto, dove l'oggetto di tipo A è la build di oggetti B e l'oggetto di tipo B è la build di oggetti di tipo A (gli unici esempi che mi vengono in mente a al momento ci sono alcune strutture matematiche) ma questo sarebbe comunque due relazioni diverse (quindi due linee diverse che collegano le stesse classi A e B ma ognuna delle linee che hanno il diamante su una classe diversa).

Nel tuo esempio, il pneumatico è una parte (al massimo una) dell'auto, quindi il diamante sarà sul lato della vettura. Se vuoi mostrare la navigabilità da un pneumatico ad una macchina (ad esempio, "conosce" a quale auto è collegato) usa la freccia nella direzione dell'auto poco prima del diamante. Inoltre usa la molteplicità ovviamente (la molteplicità a tutta la parte può essere zero.

    
risposta data 26.09.2016 - 13:56
fonte

Leggi altre domande sui tag