PDA

View Full Version : [UML] Class Diagram, aggregazione con mutua esclusione


Sirbako
02-02-2012, 16:13
Salve
ho un probelma, non so come modellare l'aggregazione di classi dicendo che, per ogni istanza, solo una di esse puo' essere specificata. :stordita: cioe'

ho la classe TV che aggrega Plasma, Piatto, LED .
ora, vorrei che TV possa aggregare:
- o nessuna delle tre
- o solo una di quelle. cioe' le caratteristiche di un Plasma o di uno schermo Piatto o di uno a LED.

come si specifica la mutua esclusione?

Mettiu_
02-02-2012, 18:00
Salve
ho un probelma, non so come modellare l'aggregazione di classi dicendo che, per ogni istanza, solo una di esse puo' essere specificata. :stordita: cioe'

ho la classe TV che aggrega Plasma, Piatto, LED .
ora, vorrei che TV possa aggregare:
- o nessuna delle tre
- o solo una di quelle. cioe' le caratteristiche di un Plasma o di uno schermo Piatto o di uno a LED.

come si specifica la mutua esclusione?

Non puoi fare una classe astratta 'TV' da cui ereditano le tre sottoclassi (PLASMA, Led, ecc...)?? Mi sembra una soluzione pulita.. :)

Sirbako
02-02-2012, 18:40
Non puoi fare una classe astratta 'TV' da cui ereditano le tre sottoclassi (PLASMA, Led, ecc...)?? Mi sembra una soluzione pulita.. :)

mmm non ho ben capito. dici di fare 3 oggetti principali che ereditano da TV?
ma questo nn dice che TV e' composta da uno di quei 3 schermi..

Mettiu_
02-02-2012, 19:01
mmm non ho ben capito. dici di fare 3 oggetti principali che ereditano da TV?
ma questo nn dice che TV e' composta da uno di quei 3 schermi..

Si scusa, adesso forse ho capito meglio la situazione:
http://s8.postimage.org/xio9j3cc5/Main.jpg

Mancano le molteplicità, puoi aggiungerle tu... TV e Schermo sono in relazione 1:1...
Così schermo sarà solo una delle possibili classi figlie che ereditano da essa (di fatto l'una esclude l'altra)...

Sirbako
03-02-2012, 08:23
se la classe non la definisco astratta funziona ugualmente?

Mettiu_
03-02-2012, 09:20
se la classe non la definisco astratta funziona ugualmente?

Da un punto di vista logico no perchè una TV deve avere uno schermo concreto (cioè un PLASMA, LCD o altro) e non uno schermo astratto. Dichiarando schermo astratto impediamo che si possa istanziare uno 'schermo generico' e obblighiamo la classe ad avere soltanto una delle 'incarnazioni' di schermo...
Per inciso, quella classe astratta potrebbe anche essere convertita in un'interfaccia che tutte quelle classi implementano! Il concetto è sempre lo stesso: TV ha il riferimento ad un handle generico che uniforma le varie implementazioni. Non so se sono chiaro :)