La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Programmazione in Java (8)

Presentazioni simili


Presentazione sul tema: "Programmazione in Java (8)"— Transcript della presentazione:

1 Programmazione in Java (8)
Mauro Lorenzutti

2 Corso Java - Mauro Lorenzutti
Scaletta Ripasso ereditarietà Esercitazioni Solidi Persone I/O Serializzazione 30/09/2005 Corso Java - Mauro Lorenzutti

3 Corso Java - Mauro Lorenzutti
Ripasso ereditarietà Concetti base Modificatori di visibilità Overriding La classe Object Classi astratte Polimorfismo 30/09/2005 Corso Java - Mauro Lorenzutti

4 Corso Java - Mauro Lorenzutti
Concetti base L’ereditarietà è l’atto di derivare una nuova classe da una già esistente (esempio progetto casa) Lo scopo è il riutilizzo del software Le variabili e i metodi ereditati possono essere usati nella classe derivata come se fossero locali Gerarchie di classi OK Ereditarietà multipla NO!!!! 30/09/2005 Corso Java - Mauro Lorenzutti

5 Corso Java - Mauro Lorenzutti
Un esempio Mammiferi, cavalli e cani 30/09/2005 Corso Java - Mauro Lorenzutti

6 Corso Java - Mauro Lorenzutti
Nomi La classe Mammifero è definita: Classe base Superclasse Classe padre Le classi Cavallo e Cane sono dette: Classe figlio Sottoclasse 30/09/2005 Corso Java - Mauro Lorenzutti

7 Modificatori di visibilità
public a() protected b() c() private d() 30/09/2005 Corso Java - Mauro Lorenzutti

8 Corso Java - Mauro Lorenzutti
public e private I metodi e le variabili public sono ereditati da tutte le sottoclassi e accessibili ovunque I metodi e le variabili private NON vengono mai ereditate e sono visibili solamente all’interno della classe in cui vengono dichiarati 30/09/2005 Corso Java - Mauro Lorenzutti

9 Corso Java - Mauro Lorenzutti
protected I metodi e le variabili protected sono ereditati da tutte le sottoclassi, indipendentemente dal package di appartenenza. Ogni classe nello stesso package può accedere ai membri protected di una classe. 30/09/2005 Corso Java - Mauro Lorenzutti

10 Corso Java - Mauro Lorenzutti
Default Nessun modificatore specificato Sono ereditati solamente dalle sottoclassi che appartengono allo stesso package della superclasse. Sono visibili da tutte le classi all’interno dello stesso package. 30/09/2005 Corso Java - Mauro Lorenzutti

11 Corso Java - Mauro Lorenzutti
P x = new P() C1 y = new C1() C2 z = new C2() Esempio class P public a() protected b() c() private d() class C2 class AltraClasse2 class C1 class AltraClasse1 30/09/2005 Corso Java - Mauro Lorenzutti

12 Corso Java - Mauro Lorenzutti
Esempio 2 Il metodo c() ha visibilità di default, quindi: C1 eredita c() C2 NON eredita c() AltraClasse1 può invocare il metodo x.c() AltraClasse2 NO! 30/09/2005 Corso Java - Mauro Lorenzutti

13 Corso Java - Mauro Lorenzutti
Overriding Si parla di overriding quando una classe figlio definisce un metodo con lo stesso nome e lo stesso prototipo della classe padre. Mascherare le variabili non è consigliabile 30/09/2005 Corso Java - Mauro Lorenzutti

14 Corso Java - Mauro Lorenzutti
La classe Object È la classe base in Java Se una classe non estende direttamente un’altra classe (extends) in automatico estende la classe Object Due metodi particolari: equals() toString() 30/09/2005 Corso Java - Mauro Lorenzutti

15 Corso Java - Mauro Lorenzutti
Classi astratte Una classe astratta rappresenta un concetto generico partendo dal quale le sottoclassi possono definire una propria implementazione Una classe astratta NON può essere istanziata Una classe derivata da una astratta deve ridefinire tutti i metodi astratti della classe padre, altrimenti sarà essa stessa una classe astratta. 30/09/2005 Corso Java - Mauro Lorenzutti

16 Corso Java - Mauro Lorenzutti
Esempio abstract public class Poligono { int numLati; String tipo = "Poligono"; public Poligono(int nl){ numLati = nl; } public int numeroDiLati(){return numLati;} public String tipo(){ return tipo;} abstract public double area(); abstract double perimetro(); } 30/09/2005 Corso Java - Mauro Lorenzutti

17 Corso Java - Mauro Lorenzutti
Polimorfismo Polimorfismo: avere più forme Un riferimento polimorfico è un riferimento che può puntare a oggetti di tipi differenti in momenti differenti Interfacce Ereditarietà 30/09/2005 Corso Java - Mauro Lorenzutti

18 Corso Java - Mauro Lorenzutti
Un esempio Poligono elenco[] = new Poligono[4]; elenco[0] = new Rettangolo(3.2, 4.5); elenco[1] = new Quadrato(5); elenco[2] = new Triangolo(3,4,5); elenco[3] = new TriangoloEquilatero(3); for (int i = 0; i<elenco.length; i++) System.out.println("Il perimetro del " + elenco[i].tipo() + " è " + elenco[i].perimetro()); 30/09/2005 Corso Java - Mauro Lorenzutti

19 Corso Java - Mauro Lorenzutti
Dynamic binding Nell’esempio precedente i metodi tipo() e perimetro() vengono collegati solamente durante l’esecuzione Si parla di Late binding (collegamento ritardato) Dynamic binding (collegamento dinamico) 30/09/2005 Corso Java - Mauro Lorenzutti

20 Corso Java - Mauro Lorenzutti
Esercizi Solidi Estendere il package “geometria” della lezione scorsa Persone Esempio in sospeso della lezione scorsa I/O Vedi slide seguente 30/09/2005 Corso Java - Mauro Lorenzutti

21 Corso Java - Mauro Lorenzutti
I/O Progettare e implementare una gerarchia di classi per astrarre il device di I/O per la classe Persona Input da: Tastiera File Output su Video 30/09/2005 Corso Java - Mauro Lorenzutti

22 Corso Java - Mauro Lorenzutti
Serializzazione Perché Concetti base Un po’ di codice Esercizio 30/09/2005 Corso Java - Mauro Lorenzutti

23 Persistenza degli oggetti
Quando un programma termina tutti gli oggetti muoiono con lui Serve un meccanismo per salvare gli oggetti per farli “vivere” indipendentemente dal programma che li ha generati Questo fenomeno è detto persistenza degli oggetti 30/09/2005 Corso Java - Mauro Lorenzutti

24 Corso Java - Mauro Lorenzutti
Serializzazione Per ottenere la persistenza degli oggetti si può codificarli in un file e poi leggerli  molto scomodo Si può serializzarli e scriverli in un file o inviarli attraverso la rete Serializzare un oggetto vuol dire rappresentarlo come una sequenza di byte Questa rappresentazione in byte può essere usata per ricostruire l’oggetto 30/09/2005 Corso Java - Mauro Lorenzutti

25 Corso Java - Mauro Lorenzutti
Serializzare su file FileOutputStream fos = new FileOutputStream(nomefile); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(oggetto); 30/09/2005 Corso Java - Mauro Lorenzutti

26 De-serializzare da file
Il processo inverso: da un flusso di byte ricostruire l’oggetto originale FileInputStream fis = new FileInputStream(nomefile); ObjectInputStream ois = new ObjectInputStream(fis); TipoOggetto oggetto = (TipoOggetto)ois.readObject(); 30/09/2005 Corso Java - Mauro Lorenzutti

27 Corso Java - Mauro Lorenzutti
Attenzione! L’oggetto da serializzare e tutti i suoi attributi devono essere predisposti alla serializzazione public class Persona implements Serializable{ private static final long serialVersionUID = 1L; 30/09/2005 Corso Java - Mauro Lorenzutti

28 Corso Java - Mauro Lorenzutti
Escludere dal flusso È possibile in certi casi avere la necessità di escludere una variabile dal flusso di byte private transient String password; 30/09/2005 Corso Java - Mauro Lorenzutti

29 Corso Java - Mauro Lorenzutti
Esercizio Estendere la gerarchia di I/O per includere una classe che permetta il salvataggio su file di dati serializzati e la successiva lettura e ricostruzione di questi 30/09/2005 Corso Java - Mauro Lorenzutti


Scaricare ppt "Programmazione in Java (8)"

Presentazioni simili


Annunci Google