4. Classe base Animale public class Animale { private String nome ; public Animale(String nomeProprio) { nome = nomeProprio; } public String getNome() { return nome ; } public void muoviti() { ……………………………… } public void mangia() { ……………………………… } public String parla() { return "???” //come parla un animale generico????; }} Come si muove, come mangia e come parla un animale generico? Costruttore : inizializza lo stato di un oggetto assegnando dei valori alle proprietà Metodo d’accesso : restituisce il nome dell’animale
5. Fido e Cocorito - 1 Animale Animale fido = new Animale(“Fido”); fido.muoviti(); fido.parla(); fido.mangia() fido.muoviti(); Animale coco = new Animale(“cocorito”); coco.muoviti(); coco.parla(); coco.mangia(); coco.muoviti(); Tra gli animali possiamo avere cani, pappagalli e altri con diverso comportamento Fido e Cocorito sono entrambi animali, e quindi possono mangiare, muoversi e parlare, ma non nello stesso modo. Come risolvere il problema?? dovrebbe fare baubau dovrebbe dire “ mi chiamo cooocorrito”
6. Fido e Cocorito - 2 Pappagallo Cane fido = new Cane(“Fido”); fido.muoviti(); fido.parla(); // baubau fido.mangia() fido.muoviti(); Animale coco = new Animale(“cocorito”); coco.muoviti(); coco.parla(); // mi chiamo cooocorrito coco.mangia(); coco.muoviti(); Posso creare due classi, una classe Cane e una classe Pappagallo Cane Per entrambe le classi definisco gli stessi attributi e gli stessi metodi
7.
8. Ereditarietà /3 Questo diagramma indica che Cane e Pappagallo derivano dalla classe Animale dalla quale ereditano attributi e metodi; in Java si dice che “estendono” la classe Animale Superclasse Classi derivate Cane Pappagallo Animale -nome +getNome() +muoviti() +mangia() +parla()
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38. Interfacce/2 public class Cane extends Animale implements OggettiNatanti { ... ... public boolean nuota() { return true ; } } public class Pappagallo extends Animale implements OggettiVolanti{ ... ... public boolean vola() { return true ; } }