Newsgroup: it.comp.java
Titolo: Interfacce relative ai metodi: servono veramente?

Come da oggetto, servono veramente le interfacce quando contengono 
dichiarazioni di metodi? Se esse 
contengono definizioni di costanti allora ok, si risparmia molto codice... 
ma per le dicharazioni di 
metodi non servono! Ecco perché penso questo:
Ogni volta che serve un metodo dicharato in un interfaccia, si deve 
implementare nella classe che lo 
richiede quindi... tanto vale implementarlo e basta... a che scopo 
definirlo in un'interfaccia? Da questo
punto di vista non sostituiscono l'ereditarietà multipla, perché con o 
senza l'utilizzo delle interfacce,
la classe che estenderà la precedente che implementava il metodo, avra gli 
stessi diritti d'accesso al 
metodo e dovrà ugualmente ridefinirlo se quello già esistente fosse 
inadatto alle sue esigenze. Tutto 
questo nasce dal fatto che le interfacce mettono a disposizione metodi non 
definiti, quindi inutili. 
Nell'ereditarietà multipla del C++ ad es. la classe A *definisce* un 
metodo, la classe B ne *definisce* 
un'altro e la classe C le estende entrambi, ridefinendo solo i metodi che 
non le vanno bene, quindi anche
nessuno a volte, ma questo perché le classi hanno già "preparato" la 
*definizione* dei metodi. 
Le interfacce rendono disponibili a tutti le dichiarazioni senza corpo... 
che ce ne facciamo??
Grazie
-- 
Luigi
Web Site: 
http://web.tiscali.it/luigi_web
E-mail: 
byte...@hotmail.com
ICQ #46240443

 wrote in message
news:_Oj38.33021$tl3.1...@twister2.libero.it...


 definirlo in un'interfaccia?
Penso che hai scritto molte fesserie.
Per esempio tu come lo implementeresti un metodo dell'interfaccia se poi non
sai dove la userai?

 ha scritto nel messaggio
news:7mm38.30274$ly.9...@twister1.libero.it...


 che ce ne facciamo??
Tu fai dei confronti con il C++, e forse questo e' naturale visto
che la sintassi di Java e' molto simile, pero' direi che le affinita'
tra i due linguaggi finiscono qui.
Il punto e' questo: Java NON E' il C++.
E' vero, Java non supporta l'ereditarieta' multipla, ma e' anche
vero che con l'evolversi degli studi sul design dei sistemi OO e'
via via emerso che l'ereditarieta' e' si' importante, pero' deve
essere utilizzata con cautela in quanto tende ad introdurre rigidita'
nel design (va contro l'intuizione, lo so, ma e' proprio cosi'!)
Io progetto e sviluppo sistemi in Java da ormai parecchi anni e non
mi sono mai trovato a dover rimpiangere la mancanza dell'ereditarieta'
multipla: l'assegnazione di responsabilita' diverse ad una stessa classe
dovrebbe essere sempre valutata con molta cautela, ma nei casi in cui
fosse necessario farlo, un buon uso delle interfacce e di qualche 
Design Pattern permette di raggiungere lo scopo in modo elegante e 
alle volte piu' flessibile.
Saluti
Roberto
PS. Per favore non apriamo un flame della serie "C++ vs Java"! Vi
prego!!
-- 
+---------------------------+
| Roberto Bagnoli           |
| 
robe...@comune.modena.it
 |
+---------------------------+

 definirlo in un'interfaccia?
Da quanto dici e' evidente che non hai idee molto chiare sui fondamenti
concettuali di OOP/COP, a prescindere dal linguaggio. Discuterne qui e'
troppo ingombrante, imho - si dovrebber partire da troppo in la' e si
ripeterebbero solo cose stranote. 
Dai un'occhiata ai fondamenti, ad esempio Booch, Gamma&altri. Anche
Thinking in C++ o Thinking in Java dovrebbero dare una buona
illustrazione al riguardo. 
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

 non sai dove la userai?
Che centra? Io il metodo lo implemento nella classe quando mi serve e 
basta. Dai precedenti post, ho notato che le interfacce sono utili per 
scrivere un codice più modulare e organico, quindi magari può essere utile 
la dichiarazione per una futura implementazione, ma in concreto non è che 
sia così utile.
Ciao


 dubbi... eh non dategli così addosso al mio collega :pp
Non ti preoccupare, mi so difendere :DD 


 Lascia stare l'ereditarietà multipla .... e le interfaccie.
In che senso? Che non sono "sinonimi" ?
Ciao!


 illustrazione al riguardo.
Ma c'è un paragone diretto tra ereditarietà multipla e interfacce? 


 Ciao
La visione che hai delle cose è piuttosto limitata: se ad esempio devo
implementare un algoritmo che disegna del figure geometriche, lo baso su
una interfaccia, non su una classe. Se tu hai tre tipi di figure:
cerchio,triangolo, rettangolo dovresti usare tre metodi disegna. Se usi
l'interfaccia puoi implementare il tutto in modo che siano le singole
classi a disegnarsi.
Il discorso è lungo, leggiti Thinking in Java a questo proposito. 
Nota: se un linguaggio ha uno strumento questo è stato pensato da
persone che tipicamente ne sanno più di te e di me messi assieme.
Attenzione a sparare sentenze :).
Ciao,
Mauro
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Ma c'Š un paragone diretto tra ereditariet… multipla e interfacce? 
Le due cose sono in vaga relazione, nel senso che molte delle cose che
puoi modellare con ereditarieta' multipla, le puoi modellare in modo
equivalente con interfacce e composizione. 
Ma le interfacce nascono esattamente per favorire modellazione in
componenti rispetto a gerarchie monolitiche. 


 
ROTFL vent'anni di software engineering nella spazzatura. Amen. :-)


Ho dato un'occhiata al libro e cmq vedo che le interfacce sono utili per 
una programmazione 
"a contratto" (con "COP" intendi Contract Oriented Programming?) che 
senz'altro è utile.
Forse l'oggetto del post era un po fuorviante, ma io non dico che le 
interfacce sono inutili,
dico che non sostituiscono l'ereditarietà multipla.
Ciao


 Attenzione a sparare sentenze :).
Si, ma cmq se leggi l'altro post ho scritto che non credo che le interfacce 
siano inutili, penso solo che non sostituiscano l'ereditarietà multipla.


 ROTFL vent'anni di software engineering nella spazzatura. Amen. :-)
Aspetta! E' utilissimo per quanto riguarda il riutilizzo del codice, 
modularità etc... io intendevo che con l'ereditarietà multipla si hanno 
vantaggi che non sono quelli che risolvono un problema (tramite interfacce) 
come quello descritto da Gab000.  


 dico che non sostituiscono l'ereditariet… multipla.
Non in tutti i casi, no. In molti si'.
