Torna in homepage www.vincenzomanzoni.com
Homepage personale e blog di Vincenzo Manzoni
 
 FAQFAQ   CercaCerca   Cerca con GoogleCerca con Google   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati   Feed AtomFeed
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

Domandina per gli esperti di java

 
Questo forum è chiuso: Non puoi inserire, rispondere o modificare gli argomenti.   Quest'argomento è chiuso: Non puoi inserire, rispondere o modificare i messaggi.    Indice del forum -> Men at work
Precedente :: Successivo  
Autore Messaggio
Mau
Utente maturo
Utente maturo


Registrato: 13/01/05 14:07
Messaggi: 933

MessaggioInviato: Mar Lug 04, 2006 10:36 am    Oggetto: Domandina per gli esperti di java Rispondi citando

Se vi chiedessi:
"che differenza c'è tra ereditarietà e sottotipazione in Java"?
Voi cosa rispondereste?
Ho cercato sul web e ho trovato risposte moolto differenti..
Top
Profilo Invia messaggio privato
maurizio
Utente maturo
Utente maturo


Registrato: 07/01/05 12:26
Messaggi: 1523
Residenza: Vidalengo

MessaggioInviato: Mar Lug 04, 2006 10:51 am    Oggetto: Re: Domandina per gli esperti di java Rispondi citando

Mau ha scritto:
Se vi chiedessi:
"che differenza c'è tra ereditarietà e sottotipazione in Java"?
Voi cosa rispondereste?
Ho cercato sul web e ho trovato risposte moolto differenti..

L'ereditarietà riguarda l'implementazione, la sottotipazione invece le interfacce!

Questo è quello che gli ho risposto io alla domanda che ci ha messo nel primo compitino e mi ha dato il massimo dei punti! Cool

Poi magari te aggiungigli un esempietto Wink
Top
Profilo Invia messaggio privato
Tomaux
Utente adulto
Utente adulto


Registrato: 12/08/04 17:56
Messaggi: 2494
Residenza: bergamo

MessaggioInviato: Mar Lug 04, 2006 10:55 am    Oggetto: Rispondi citando

Se B è un sottotipo di A, allora dove c'è un termine di tipo A posso mettere un oggetto di tipo B. In ereditarietà, invece, i nuovi oggetti possono essere definiti riusando (anche parzialmente) implementazioni d’altri oggetti. Il codice della superclasse in questo caso viene riusato, ma può essere riusato solo il codice marcato public.
In generale, sottotipazione è riferito alle interfacce, mentre l'ereditarietà si riferisce alle implementazioni.
_________________
A volte mi fermo e penso:
"THE EARTHQUAKE!!! OH MY FUCKING GOD, THE EARTHQUAKE!!!"
Top
Profilo Invia messaggio privato Invia e-mail HomePage MSN
Mau
Utente maturo
Utente maturo


Registrato: 13/01/05 14:07
Messaggi: 933

MessaggioInviato: Mar Lug 04, 2006 11:39 am    Oggetto: Rispondi citando

Site stati chiarissimi! Grazie 1000
In pratica, nel progetto di info 3, dove ho definito classi che ereditano da altre classi (anche astratte) parlerò di ereditarietà.
Dove invece ho defininito delle interfacce e ho creato delle classi che ne implementano i metodi, parlerò di sottotipazione, giusto?
Top
Profilo Invia messaggio privato
Andrea
Moderatore
Moderatore


Registrato: 23/12/03 13:10
Messaggi: 5200

MessaggioInviato: Mar Lug 04, 2006 11:43 am    Oggetto: Rispondi citando

Mau ha scritto:
Site stati chiarissimi! Grazie 1000
In pratica, nel progetto di info 3, dove ho definito classi che ereditano da altre classi (anche astratte) parlerò di ereditarietà.
Dove invece ho defininito delle interfacce e ho creato delle classi che ne implementano i metodi, parlerò di sottotipazione, giusto?

Più o meno, in java ereditarietà e sottotipazione per quanto riguarda le classi coincidono. L'unico modo di usare solo sottotipazione è l'interfaccia.

Se estendi una classe (anche abstract) hai utilizzato sia la sottotipazione sia l'ereditarietà.

Se implementi un'interfaccia hai semplicemente utilizzato la sottotipazione in quanto non c'è codice da ereditare.
Top
Profilo Invia messaggio privato MSN
Mau
Utente maturo
Utente maturo


Registrato: 13/01/05 14:07
Messaggi: 933

MessaggioInviato: Mar Lug 04, 2006 3:52 pm    Oggetto: Rispondi citando

Grazie anche a te Andrea!
Ne approfitto per fare un'ultima domanda.. poi bannatemi pure se persevero Laughing Laughing !

Sort e comparable?
Ho usato qualcosa nel progetto, ma sui sort in particolare ho parecchi dubbi!
Help me pliz!
Top
Profilo Invia messaggio privato
Andrea
Moderatore
Moderatore


Registrato: 23/12/03 13:10
Messaggi: 5200

MessaggioInviato: Mar Lug 04, 2006 4:44 pm    Oggetto: Rispondi citando

Mau ha scritto:
Grazie anche a te Andrea!
Ne approfitto per fare un'ultima domanda.. poi bannatemi pure se persevero Laughing Laughing !

Sort e comparable?
Ho usato qualcosa nel progetto, ma sui sort in particolare ho parecchi dubbi!
Help me pliz!

Poi scatta il ban Very Happy

Allora Comparable<T> è un'interfaccia che definisce l'ordinamento naturale per l'oggetto: essa ha un metodo int compareTo(T o) che devi implementare per definire come avviene il confronto fra due oggetti di tipo T.

Ci sono alcune regole base per scrivere questo metodo, che sono le stesse alla base del concetto di ordinamento naturale, guarda sulla JavaDoc.

In parole povere se implementi Comparable, vuoi dire che l'oggetto può essere confrontato con altri dello stesso tipo T.


Sort(Collection<T implements Comparable<T> c) invece è un metodo statico della classe java.util.Collections (occhio alla s finale Wink) che permette di ordinare la collezione c.

L'ordinamento avviene per confronti successivi, quindi è necessario, come puoi vedere dalla signatura, che gli oggetti che compongono la collezione siano Comparable.

Diciamo quindi che il sort è una delle tante applicazione dell'implementazione di Comparable.

Esempio: un elenco di nomi e matricola, che deve essere ordinato.

Codice:

public class Tessera implements Comparable<Tessera>{
 private int matricola;
 private String nome;
 
 public Tessera(int m, String n){
  matricola = m;
  nome = n;
 }

 public int getMatricola{
  return matricola;
 }

 public String getNome{
  return nome;
 }

 @override
 public int compareTo(Tessera t){
  return this.getMatricola()-t.getMatricola();
 }

}

Ho definito un confronto molto semplice ma corretto. Nel main scriverò questo
Codice:

List anagrafica = new ArrayList<Tessera>();

anagrafica.add(new Tessera(123, "Mauro"));
anagrafica.add(new Tessera(111, "Andrea"));

java.util.Collections.sort(anagrafica)

Top
Profilo Invia messaggio privato MSN
Mostra prima i messaggi di:   
Questo forum è chiuso: Non puoi inserire, rispondere o modificare gli argomenti.   Quest'argomento è chiuso: Non puoi inserire, rispondere o modificare i messaggi.    Indice del forum -> Men at work Tutti i fusi orari sono GMT 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi


Powered by phpBB © 2001, 2005 phpBB Group
phpbb.it