Come si disegna questo diagramma di classe UML?

1

Attualmente sto cercando di imparare l'UML ma ho dei problemi con questo. Diciamo che hai un contenitore con le carte, un contenitore con i giocatori, e quel giocatore ha anche delle carte. Come si disegna questo in un diagramma di classe (modello di applicazione). Come imposteresti la composizione e la molteplicità? Grazie in anticipo.

Ci stavo pensando:

Ma il problema è che ora ho 2 elenchi di carte.

    
posta Roy 05.10.2014 - 13:37
fonte

1 risposta

1

In linea di principio, non c'è nulla di sbagliato nel tuo diagramma UML.
Tuttavia, mi suggerisce che le carte a cui fa riferimento la classe del giocatore sono istanze diverse da quelle presenti nel mazzo. Questo potrebbe essere un artefatto di come interpreto una relazione di aggregazione, per la quale non c'è consenso.

Per quanto riguarda i membri mostrati nelle classi, presumo che la semantica sia basata su linguaggi come Java e C #: gli oggetti vivono tutti sullo heap e sono accessibili solo tramite riferimenti.

A seconda di ciò che si desidera modellare, è possibile migliorare il diagramma in due modi:

  • Se una carta che viene distribuita viene rimossa dal mazzo e trasferita al giocatore che riceve la carta, farei il collegamento tra Deck e Card un'aggregazione invece di una composizione.
  • Se la classe Giocatore fa riferimento alle classi di carte che fanno parte del mazzo, allora farei il collegamento tra giocatore e tessera una semplice associazione, per significare che il giocatore non influisce sulla durata della carta.

Per quanto riguarda la molteplicità, puoi lasciarla sul lato diamante di una relazione di composizione, perché dovrebbe sempre essere 1.

Se confronti il tuo diagramma con altri, potresti scoprire che spesso i membri della classe che corrispondono a associazioni / aggregazioni / composizioni sono esclusi, perché non aggiungono alcuna informazione. Inoltre, le molteplicità sono spesso escluse dal diagramma, specialmente se possono essere dedotte dal contesto.

    
risposta data 05.10.2014 - 15:30
fonte

Leggi altre domande sui tag