Come disegnare un diagramma di classi in cui una classe contiene 6 altre classi o mupltie differenti

3

Conosco le basi ma non so come modellarlo (è un esercizio senza soluzione fornita):

An order can contain 1 or more cartons of beer. Each carton contains 6 beers of the same kind but there are some consisting of 3 different beer types (still 6 in total)

Avendo anche una classe "Cartone", come posso farla come 6 birre (stesse) O 6 birre di 3 tipi diversi?

    
posta John V 27.10.2013 - 11:39
fonte

1 risposta

1

Puoi usare xor contstraint per modellare esclusivi o. Se conosci davvero le basi, dovresti averlo già visto.

Il resto è semplice. Hai una classe d'ordine che ha uno o più cartoni (1 .. *). È possibile modellare questa associazione con un'aggregazione ma non è specificata esattamente. Tuttavia, non è una composizione, in quanto i cartoni possono sicuramente esistere da soli.

Esistono diverse soluzioni su come modellare il cartone. La prima cosa che mi viene in mente è quella di dividere i cartoni in due tipi. Uno per tipo di birra singola, uno per più tipi di birra. Entrambi derivano da una classe astratta che usa la generalizzazione. L'ordine è associato solo alla classe di cartone astratta.

La cosa con la birra è che potresti dividerlo in una classe astratta e i suoi tipi di birra derivati, ma qui non è davvero necessario. Quindi potresti semplicemente creare tre diverse classi di birra. Il primo cartone (tipo di birra singola) è associato a tutte e tre le classi di birra con la molteplicità 6 e vincolato da vincoli xor tra le tre associazioni. L'altro cartone (tre tipi di birra) è anche associato a tutti e tre i tipi di birra. Tuttavia, non è necessario il vincolo xor e la molteplicità è 2 per ciascuna associazione.

Esistono modi decisamente più eleganti per modellarlo, ma almeno questo dovrebbe essere considerato corretto.

    
risposta data 01.11.2013 - 11:42
fonte

Leggi altre domande sui tag