|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
![]() |
#1 |
Newbie
Registrato: 21-07-2009
Messaggi: 14
![]() |
[JAVA] Interfacce e classi con metodi vuoti.
Alla fine la classe definisce comunque un tipo e questo ne permette quindi la derivazione da parte di altre classi ciascuna che implementa quei metodi vuoti a modo proprio facendone quindi un override. Questo permette quindi anche l'utilizzo del polimorfismo e del binding dinamico di java, visto che si può utilizzare come supertipo la nostra classe con i metodi vuoti e poi ci penserà la jvm ad invocare le diverse implementazioni di quei metodi vuoti in base alla reale istanza di sottoclasse assegnata ad una reference di quel supertipo. Capisco che utilizzando un'interfaccia si adotta la soluzione più corretta e più elegante, ma da un punto di vista pratico che differenza c'è oltre al fatto che ovviamente utilizzando una superclasse con metodi vuoti questa può essere direttamente istanziata poichè concreta, mentre lo stesso non si può fare con un tipo definito da una interfaccia che ha tra i suoi scopi principali anche quello di impedire la istanziazione di un tipo che non deve essere istanziato perchè ancora non implementato. Ovviamente escludendo il fatto che tramite le interfacce si supera il limite della ereditarietà singola di java. Tra l'altro il metodo della superclasse con metodi vuoti viene anche utilizzato in un paio di design pattern dei GOF, non mi ricordo se nel builder o nel decorator. ![]() Ultima modifica di Samaritan : 21-07-2009 alle ore 05.57.11 |
![]() |
![]() |
![]() |
#2 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
![]() |
Ciao,
La differenza tra interfacce e classi stub può sfuggire e generare a volte ambiguità in ragione del fatto che a volte non si considera lo scopo primo per cui esistono e possono esseere utilizzate. Le interfacce sono in primo luogo uno strumento di "uniformazione" ovvero permettono al programmatore di stabilire il formalismo con il quale un oggetto (un tipo) debba essere definito ed implementato e NON hanno scopo direttivo né implementativo; in pratica l'interfaccia è uno strumento con cui il programmatore dice (a se stesso o a chi implementerà l'interfaccia) che per interagire con certe parti del programma occorre uno o n oggetti con queste caratteristiche ma senza scendere nella natura implementativa di tali caratteristiche. Chi implementa l'interfaccia può essere anche un programmatore che non sa nulla né del programma e né del suo funzionamento intrinseco e se l'interfaccia in se è ben definita, non è tenuto a saperne oltre, sarà poi l'utilizzatore (chi ha scritto l'interfaccia) a dover fruire al meglio dell'oggetto implementato. L'uso delle interfacce inoltre risolve i problemi di ereditarietà multipla che hai giustamente evidenziato nel post, cosa non da poco e non bypassabile nel caso di classi stub. La classe stub è una classe vuota che implementa un supertipo solo formalmente ma non conosce le logiche di funzionamento del tipo ed è usata come base per ereditare in situazioni di polimorfismo, questo concetto è lontano dal concetto di interfaccia in quanto, che la classe sia vuota o meno, hai comunque creato una struttura di codice eseguibile ed effettuando l'override vai a creare una ridondanza concettuale nella stesura del programma implementando in modo ridondante le stesse identiche strutture oltre al fatto di doverle allocare 'n' volte quante sono le implementazioni dato che potresti riferirti al "supertipo" vuoto o al "supertipo" implementato in modo assolutamente dinamico. In questo caso quindi meglio utilizzare le classi astratte nel polimorfismo dove puoi implementare un supertipo e 'n' metodi astratti da scrivere e reimplementare facendo scegliere a run-time il binding in maniera polimorfica. Spero di essere stato esauriente |
![]() |
![]() |
![]() |
#3 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
![]() ![]() ![]() |
Porca miseria, chi si rilegge, ma dov'eri finito ?
Welcome back web. Adesso che il web is back possiamo far one step forward. |
![]() |
![]() |
![]() |
#4 |
Guest
Messaggi: n/a
|
Però il thread era di un mese fa!
![]() |
![]() |
![]() |
#5 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
![]() ![]() ![]() |
38 steps forward, allora
![]() |
![]() |
![]() |
![]() |
#6 | |
Guest
Messaggi: n/a
|
Quota:
![]() |
|
![]() |
![]() |
#7 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
![]() ![]() ![]() |
Eh gia...ma allora la domanda è: dov'è finito Giacobbo ?
|
![]() |
![]() |
![]() |
#8 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
![]() |
[OT]
Ciao ragazzi .. ![]() mi fa piacere tornare in questo forum e rivedere vecchi amici come Lory, ho latitato per un annetto buono ![]() ![]() [/OT] |
![]() |
![]() |
![]() |
#9 | |
Guest
Messaggi: n/a
|
Quota:
Ho letto che sei programmatore C# ... puoi attivare i pm per un giorno che te ne vorrei inviare uno a riguardo? ![]() [/OT] |
|
![]() |
![]() |
#10 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
![]() |
Scrivi qui, almeno possiamo confrontarci con altre persone altrettanto valide e poi così la discussione rimane anche per altri
|
![]() |
![]() |
![]() |
#11 | |
Guest
Messaggi: n/a
|
Quota:
![]() |
|
![]() |
![]() |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
![]() |
||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
[JAVA] Funzione delle interfacce | Downloader | Programmazione | 6 | 09-05-2007 13.29.31 |
[java] hashCode ed equals. | Dr_House | Programmazione | 0 | 27-11-2005 15.17.34 |
[Java] Caricare dinamicamente un jar e usare tutte le sue classi | Dav82 | Programmazione | 9 | 06-12-2004 20.14.17 |
[Java] Compilare classi stand-alone con JBuilder X | P8257 WebMaster | Programmazione | 6 | 24-11-2004 11.13.47 |
[Java] Classi esterne | Kjow | Programmazione | 15 | 23-06-2004 14.20.25 |