PDA

View Full Version : [Java]Polimorfismo e implementazione specifiche UML


kaballo
12-07-2007, 14:30
Linko direttamente un altro forum su cui ho fatto la stessa domanda:

http://www.universitor.it/phpBB2/viewtopic.php?p=51001#51001

ovviamente si tratta di un esempio di polimorfismo, solo che mi sembra poco elegante che si abbia un campo nella classe madre e uno nelle classi figlie inizializzate con un solo set, o no?

Ed_Bunker
12-07-2007, 15:25
La cosa corretta, secondo me, e' fare riferimento esclusivamente all'interfaccia MaterialeEsame in modo da astrarre dal fatto che l'oggetto sia istanza di Progetto o di Esercizio (Oltre tutto e' del tutto fuori luogo chiamare una classe esercizi... alle classi va "sempre" assegnato un nome singolare... la cosa corretta, imho, sarebbe stato chiamare quella classe Compito che appunto e' un concetto corretto per indicare una aggregazione di esercizi).
I metodi messi a disposizione da MaterialeEsame, poi, a runtime, andranno ad utilizzare i metodi "giusti" di Progetto o di Compito a seconda della situazione, il tutto in maniera trasparente.

kaballo
12-07-2007, 15:39
scusami ma sono un po' niubbo: Se definisco un oggetto come MaterialeEsame, essendo Java un linguaggio fortemente tipato, avrei a disposizione solo i metodi della classe MaterialeEsame, e non quelli di Progetto o Esercizi, o sbaglio?

Forse implementando dei metodi astratti nella classe MaterialeEsame?


Cmq credo che le intenzioni del disegnatore fossero queste: chi ha visibilità di studTriennale o Specialistica, può vedere il materiale d'esame come progetto o esercizi, mentre chi vede uno studente solo come tale ha accesso solo al materiale d'esame in generale.

Ed_Bunker
12-07-2007, 15:45
scusami ma sono un po' niubbo: Se definisco un oggetto come MaterialeEsame, essendo Java un linguaggio fortemente tipato, avrei a disposizione solo i metodi della classe MaterialeEsame, e non quelli di Progetto o Esercizi, o sbaglio?

Forse implementando dei metodi astratti nella classe MaterialeEsame?


Cmq credo che le intenzioni del disegnatore fossero queste: chi ha visibilità di studTriennale o Specialistica, può vedere il materiale d'esame come progetto o esercizi, mentre chi vede uno studente solo come tale ha accesso solo al materiale d'esame in generale.
Certo.
Se hai un oggetto di tipo apparente MaterialeEsame tu devi fare riferimento esclusivamente ai metodi in esso definiti (A meno di non fare un cast esplicito magari con try-catch, il che a me non sembra molto "chic"...)
Cio' non toglie che, come hai intuito, in MaterialeEsame vi possano essere dei metodi astratti che a runtime invocano i "corrispettivi" metodi concreti implementati in Progetto e in Esercizi.