Come migliorare questo diagramma delle classi UML?

4

Come posso migliorare questo diagramma delle classi UML?

Sono davvero confuso sulla relazione tra Expense e Category , perché Category e Expense possono esistere da soli: puoi registrare Expense e non assegnare un category , puoi aggiungere nuovo Categories all'elenco categories e così via ...

Ho davvero bisogno di classi di liste separate?

    
posta CrushJelly 21.03.2016 - 08:12
fonte

2 risposte

1

Il tuo diagramma UML è ambiguo sulla relazione tra Expense e Category :

  • utilizzi un'aggregazione, che suggerisce che potrebbero esserci diverse istanze di Category relative a un Expense . Ma la firma di GetCategory() suggerisce che c'è solo un possibile Category per un Expense
  • l'aggregazione suggerisce anche una parte / intera relazione che non è il caso qui. Quindi suggerirei di utilizzare una relazione con cardinalità 0 .. * su Expense lato e 1 .. * su Category lato
  • si mostra la relazione alla categoria due volte: una volta tramite la connessione grafica e una volta come una proprietà esplicita. Suggerirei di rimuoverlo dall'elenco delle proprietà e aggiungere un'etichetta category sul lato Category dell'associazione, per trasmettere la denominazione della relazione.

Il tuo diagramma è ambiguo sulla relazione tra Expense e ExpenseOperationHandler :

  • si utilizza una relazione di generalizzazione, che dice fondamentalmente "un Expense è un ExpenseOperationHandler ".
  • Ma semanticamente sembra che una spesa possa usare / avere un ExpenseOperationHandler, o che possa implementare / fornire un tale gestore. Quindi io suggerirei di utilizzare una linea tratteggiata che va al triangolo per mostrare che si tratta di sulla realizzazione, piuttosto che un patrimonio concettuale , almeno dal punto di vista del design.

Hai bisogno di ExpenseList e CategoryList ?

risposta data 17.08.2016 - 20:34
fonte
1
  • Sarebbe bello che l'interfaccia Search abbia metodi di filtro void che filtrano ExpenseList invece di restituire List<Expense> e ExpenseList dovrebbe essere iterabile. Che senso rende una classe chiamata ExpenseList che implementa metodi per restituire List<Expense> . Un'alternativa è che i metodi di filtro restituiscono un nuovo oggetto ExpenseList filtrato, se vogliamo mantenere le cose immutabili.

    
risposta data 17.08.2016 - 22:27
fonte

Leggi altre domande sui tag