Telefonino.net network
 
| 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 » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 21-07-2009, 01.56.44   #1
Samaritan
Newbie
 
Registrato: 21-07-2009
Messaggi: 14
Samaritan promette bene
[JAVA] Interfacce e classi con metodi vuoti.

Salve a tutti, vorrei chiedervi qual'è la sostanziale differenza tra l'implementazione di una interfaccia che dichiara N metodi e la derivazione di una classe concreta che definisce gli stessi N metodi con la stessa firma, ma con il corpo vuoto.
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 06.57.11
Samaritan non è collegato   Rispondi citando
Vecchio 27-08-2009, 16.22.50   #2
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
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
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 27-08-2009, 22.02.07   #3
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Porca miseria, chi si rilegge, ma dov'eri finito ?
Welcome back web.
Adesso che il web is back possiamo far one step forward.
LoryOne non è collegato   Rispondi citando
Vecchio 27-08-2009, 22.04.08   #4
Semi.genius
Guest
 
Messaggi: n/a
Però il thread era di un mese fa!
  Rispondi citando
Vecchio 27-08-2009, 22.08.11   #5
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
38 steps forward, allora
LoryOne non è collegato   Rispondi citando
Vecchio 27-08-2009, 22.08.59   #6
Semi.genius
Guest
 
Messaggi: n/a
Quota:
Inviato da LoryOne
38 steps forward, allora
è John Titor!!!
  Rispondi citando
Vecchio 27-08-2009, 22.12.17   #7
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Eh gia...ma allora la domanda è: dov'è finito Giacobbo ?
LoryOne non è collegato   Rispondi citando
Vecchio 28-08-2009, 10.05.00   #8
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
[OT]
Ciao ragazzi ..
mi fa piacere tornare in questo forum e rivedere vecchi amici come Lory, ho latitato per un annetto buono ma non ho mai perso di vista la scia di byte
[/OT]
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 28-08-2009, 13.39.18   #9
Semi.genius
Guest
 
Messaggi: n/a
Quota:
Inviato da P8257 WebMaster
[OT]
Ciao ragazzi ..
mi fa piacere tornare in questo forum e rivedere vecchi amici come Lory, ho latitato per un annetto buono ma non ho mai perso di vista la scia di byte
[/OT]
[OT^2]
Ho letto che sei programmatore C# ... puoi attivare i pm per un giorno che te ne vorrei inviare uno a riguardo?
[/OT]
  Rispondi citando
Vecchio 28-08-2009, 14.36.47   #10
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Scrivi qui, almeno possiamo confrontarci con altre persone altrettanto valide e poi così la discussione rimane anche per altri
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 28-08-2009, 14.55.34   #11
Semi.genius
Guest
 
Messaggi: n/a
Quota:
Inviato da P8257 WebMaster
Scrivi qui, almeno possiamo confrontarci con altre persone altrettanto valide e poi così la discussione rimane anche per altri
Ehm, veramente era "propaganda" del progetto Cosmos, non un dubbio e vado contro regolamento se scrivo qui...
  Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[JAVA] Funzione delle interfacce Downloader Programmazione 6 09-05-2007 14.29.31
[java] hashCode ed equals. Dr_House Programmazione 0 27-11-2005 16.17.34
[Java] Caricare dinamicamente un jar e usare tutte le sue classi Dav82 Programmazione 9 06-12-2004 21.14.17
[Java] Compilare classi stand-alone con JBuilder X P8257 WebMaster Programmazione 6 24-11-2004 12.13.47
[Java] Classi esterne Kjow Programmazione 15 23-06-2004 15.20.25

Orario GMT +2. Ora sono le: 03.32.50.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.