Mi dispiace, ma devo informarti che non c'è "corretto" o "sbagliato" nei progetti di classe. Puoi fare UML "errato" disegnando strani unicorni nel diagramma, ma se il tuo progetto è abbastanza buono dipende da una grande quantità di fattori diversi. Non è così facile come semplicemente dirci un requisito e aspettarci di essere in grado di ricavarne un progetto.
I due progetti che hai sono possibili candidati. Un altro ovvio è simile al tuo secondo, in quanto crei classi base per annuale e mensile (invece che generale e derivato).
Tuttavia, poiché i rapporti sembrano avere due dimensioni univoche (generali / di ramo e mensili / annuali), una progettazione ad albero potrebbe non essere adatta. Ad esempio, le tue Monthly_branch
e le tue Monthly_general
classi sono in qualche modo correlate, ma il design non è in grado di esprimerle meglio di dire che sono Report
s. Tuttavia, potrebbe trattarsi o meno di un problema nel tuo caso d'uso specifico.
In generale, fare buoni progetti (mentre "buono" è definito dalle implicazioni del progetto lungo la strada dello sviluppo del progetto) richiede molta esperienza. Come punto di partenza, prova a presentare almeno una mezza dozzina di varianti di design per il tuo problema. Esistono innumerevoli modi per progettare un modello di classe e trovare quello migliore per il lavoro richiederà sempre che tu sia in grado di avere un vasto gruppo di candidati tra cui scegliere.