Newsgroup: it.comp.java
Titolo: Aiuto ! Barbara e le terribili interfacce

Ciao a tutti !
Da diversi giorni sto scervellandomi per capire quale sia la reale 
funzione delle
interfacce. Si dice solitamente che attraverso di esse si riesca ad 
implementare una sorta
di ereditarietà multipla ma qualcosa decisamente non mi torna ; per me 
ereditarietà multipla significa qualcosa di questo genere : la classe A 
implementa il metodo a (diciamo per calcolare il doppio di un intero) , 
la classe B implementa quello b (per calcolarne il triplo) , la classe C 
eredita da A e B i due metodi quindi instanziandola si ottiene un oggetto 
che sa calcolare sia il doppio che il triplo di un numero.
Cioè , secondo questo schema , C deriva informazione già (!) implementata 
altrove.
Invece il fatto che una classe che implementi una interfaccia debba 
definirne ex novo i metodi comporta che essa , molto diversamente , 
semplicemente si "assuma la responsabilità" di essere conforme allo 
standard dichiarato dall'interfaccia. E dove sta l'ereditarietà in questo 
?
Devo certamente aver frainteso qualcosa. Potete chiarirmela ? Grazie !
Barbara

 ha scritto nel messaggio
news:MPG.15de6060d...@news.iol.it...


chiarirmela ? Grazie !
Infatti, e' ereditarieta' di interfaccia e non di implementazione.
Dichiari di poter fornire i servizi dichiarati nelle interfacce, il
come li fornirai e' compito tuo (questa e' l'implementazione); questo
e' molto utile, pensa solo al modello dei listener : Una classe
dichira di essere listener di una serie di eventi, cioe' dichiara di
implementare i metodi adatti per poter rispondere a determinate
situazioni, per esempio, agli eventi del mouse, per fare questo
implementa l'interfaccia mouseListener. E' ovvio che non esiste a
priori un comportamento predefinito in risposta ad un evento del
mouse, e' per questo che mouseListener non e' una classe (dalla quale
tutte le classi derivate da mouseListener erediterebbero il
comportamento), ma e' una interfaccia, in quanto non esiste
comportamento predefinito, ma esiste solo un ruolo predefinito, una
responsabilita', che e' quella del mouseListener. Potrebbe essere una
classe astratta, che dichira solo i metodi, e non li implementa, ma
cosi' facendo priverebbe una classe della possibilita' di essere
contemporaneamente listener degli eventi del mouse e di quelli della
tastiera, il che non e' una limitazione da poco.
Per questa ed altre discussioni sul design della programmazione ad
oggetti, se vuoi partecipare, abbiamo messo in piedi un gruppo di
discussione sul sito 
www.redangel.it
 (nell'area design). Ovviamente
tutti sono invitati! 
[}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{]
SunGray aka Gabriele Lana  
www.redangel.it
www.sungray.com
contact me @ : 
www.redangel.it
contact me @ : 
sun...@tiscalinet.it
[}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{]

Devo certamente aver frainteso qualcosa. Potete chiarirmela?
Ci ho provato, ma non credo di essere molto qualificato a farlo:
magari altri saranno più chiari e precisi. ;-)
-- 
Ciao
	Fabrizio C.

di ereditarietą multipla ma [...] dove sta l'ereditarietą in questo?
L'ereditarieta' multipla e' tra le interfacce, non sulle implementazioni:
cioe' e' possible dichiarare due interfacce I1 e I2 e dichiarare che una
terza interfaccia I3 estende sia I1 che I2.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun