Oppure

Loading
06/12/10 14:46
killer
salve..vorrei capire delle cose.....

Quale differenza c'è tra:

Dipendenza

Aggregazione

Ereditarietà ?

mi fate anche degli esempi pratici per capirlo ?
grazie :)
aaa
06/12/10 16:22
pierotofy
Dipendenza: classe A utilizza la classe Math per fare alcuni calcoli. Quindi A dipende da Math.

Aggregazione: classe Auto ha un array di 4 oggetti Ruota. Quindi Auto aggrega Ruota.

class Auto{
  Ruota ruote[4];
  /* ... */
}


Ereditarieta': classe Cerchio e' una Figura. Quindi Cerchio eredita da Figura.

class Figura{

}

class Cerchio extends Figura{

} 
Il mio blog: piero.dev
06/12/10 18:28
killer
quindi è scorretto dire che
Cuore extends Corpo? ( ereditarieta ) ? :) mmm..difficile sta cosa..come le rappresento strutturalmente ? alcuni mi dicono Aggregazione....bo..non ci sto capendo nulla..xD..mi faresti capire per bene :) ? anche praticamente come logica :) ..grazie
Ultima modifica effettuata da killer 06/12/10 18:29
aaa
06/12/10 18:57
nihal
Bè in questo caso è aggregazione... Il cuore non è una specializzazione del corpo umano, bensì è una parte di esso che si aggrega... Al massimo, la classe Cuore può implementare un'interfaccia generica ParteDelCorpo, ma questo non c'entra... Come criterio generale potresti vederla così: quando una classe è una versione più specifica di un'altra più generica (Animale-Mammifero-Cane ecc.), allora è sicuramente ereditarietà; al contrario, se in una classe utilizzo oggetti esterni e istanziati da altre classi (quindi non metodi statici come per Math), si parla di aggregazione.
aaa
06/12/10 19:33
killer
quindi se non erro dovrei aver capito adesso...
in pratica cercando di fare qualche esempio..

1-public class Mammifero extends Animale

2-public class Fegato extends Organo

3-public class Pistone extends Motore

4-public class Lamborghini extends Auto

per le prime e 4 si parla di ereditarieta..sono giuste? il concetto e questo?

poi a seguire

5-public class Tastiera extends ComputerFisso

Tipo t=new Tipo("....";)......etc....

qui si parla di aggregazione ?

e
la
6- public class Numeri extends Generatore{

Math........ utilizzandolo in maniera statica , la classe Numeri 'dipenderebbe' da Math ?
anche dovendo derivare da Generatore ?
}

Ultima modifica effettuata da killer 06/12/10 19:35
aaa
06/12/10 20:25
nihal
Le prime 4 vanno bene tranne quella del pistone: il pistone non è un particolare tipo di motore, è una parte del motore, quindi è aggregazione... La stessa cosa nel computer: la tastiera va aggregata al pc, quindi non si usa la extends.
aaa
06/12/10 20:33
killer
e cosa si utilizza al posto di extends ?
aaa
06/12/10 20:46
nihal
Banalmente come diceva Piero basta fare una cosa del genere:
public class ComputerFisso{
    private Tastiera tastiera;
    /* ... */
}


Cioè il computer ha un membro che rappresenta la sua tastiera.
aaa