Fondamenti di informatica T-A
Esercitazione 6 : Eclipse, Ereditarietà
AA 2012/2013
Tutor : Domenico Di Carlo
<[email protected]>
Eclipse
• Avviate eclipse tramite il file eclipse.exe che potete trovare
(in laboratorio) all'indirizzo -> C:\Applicativi\Eclipse
Fondamenti di informatica A-K - Domenico Di Carlo
Primo avvio, scelta workspace
• Workspace: cartella che contiene i progetti
• In LAB3  la vostra home oppure un dispositivo di
archiviazione esterno
• A casa  cartella a scelta, Eclipse sceglie automaticamente
la home dell'utente (C:\Users\<nome utente>\Workspace)
Fondamenti di informatica A-K - Domenico Di Carlo
Basics
• Il primo progetto:
• Creazione di un
nuovo progetto
▫ FileNewJava
Project
• Poi, nel progetto,
aggiungere classi
tramite :
FileNewClass
Fondamenti di informatica A-K - Domenico Di Carlo
Javac e java
• Con eclipse non c'è bisogno di compilare, eclipse compila in
automatico. Quindi potete "dimenticare" il comando javac
da prompt dei comandi
• Il corrispettivo del comando "java MiaClasse" è il pulsante :
• L'output verrà stampato in basso nella finestra :
Fondamenti di informatica A-K - Domenico Di Carlo
Concetto base
• Meccanismo per definire una nuova classe (classe derivata)
come specializzazione di un’altra (classe base)
▫ La classe base modella un concetto generico
▫ La classe derivata modella un concetto più specifico
• La classe derivata (sottoclasse):
Classe base
▫ Dispone di tutte le funzionalità
(attributi e metodi) di quella base
▫ Può aggiungere funzionalità proprie
▫ Può ridefinirne il funzionamento di
metodi esistenti (polimorfismo)
Classi derivate
Fondamenti di informatica A-K - Domenico Di Carlo
Un po' di teoria
• Processo di astrazione
▫ Si introduce la superclasse che "astrae" il concetto comune
condiviso dalle diverse sottoclassi
▫ Le sottoclassi vengono "spogliate" delle funzionalità comuni che
migrano nella superclasse
• Ogni classe definisce un tipo:
▫ Un oggetto, istanza di una sottoclasse, è formalmente
compatibile con il tipo della classe base
▫ Il contrario non è vero!
• Ad esempio
▫ Un impiegato è una persona ma una persona non è
(necessariamente) un impiegato
▫ Un’automobile è un veicolo ma un veicolo non è
(necessariamente) un’automobile
Fondamenti di informatica A-K - Domenico Di Carlo
Ereditarietà tra classi
Fondamenti di informatica A-K - Domenico Di Carlo
Terminologia
Parola chiave "extends" :
Specifica da quale classe eredita.
Nell'esempio, Studente eredita da Persona
Parola chiave "super" :
Consente di invocare un metodo,
un costruttore o un attributo della
classe base purché non privati
Annotazione "@Override" :
Permette di ridefinire un metodo
della superclasse a condizione
che abbia stesso nome,
parametri e tipo di ritorno
(magari stessa semantica)
Fondamenti di informatica A-K - Domenico Di Carlo
Polimorfismo
• Il polimorfismo può essere definito (in maniera molto
spicciola) come la capacità di Java di invocare il metodo della
sottoclasse più specifica
• Esempio OK :
▫ Persona p = new Studente("Mario", 123456);
▫ System.out.print(p.toString());
• Output (notare il polimorfismo) :
▫ Mi chiamo Mario, numero di
matricola 123546
• Esempio KO :
▫ Studente s = new Persona("Mario");
• Esempio KO :
▫ Studente s = new Impiegato("Mario", 1400);
Fondamenti di informatica A-K - Domenico Di Carlo
Classi Astratte
• Abbiamo detto che le classi rappresentano entità del mondo
reale, ma non tutte le entità sono reali :
▫ Ad esempio : non esiste concretamente il generico animale ma
esistono gli specifici animali !
• Una classe astratta si definisce in questi termini :
▫ public abstract class Animale {
private String nome;
protected String verso;
public abstract String verso();
public abstract String si_muove();
public abstract String vive();
}
• Il concetto così espresso è che :
▫ ogni animale "reale" può fare un verso, può muoversi, e può dire in
che ambiente vive
▫ ma non si può, in generale, precisare come perché questo
ovviamente dipende dallo specifico animale
Fondamenti di informatica A-K - Domenico Di Carlo
Classi astratte, precisazione
• Una classe avente anche solo un metodo abstract è
astratta, e deve essere dichiarata abstract essa stessa.
• Una classe astratta può però anche non avere metodi
dichiarati abstract (ma resta comunque astratta, quindi è
impossibile istanziarla)
• Una sottoclasse di una classe astratta è anch’essa astratta ,
se non ridefinisce tutti i metodi che erano astratti nella
classe base.
• La differenza sostanziale tra l’ereditarietà pura tra classi e
l’ereditarietà con classi astratte è che :
▫ Una classe che eredita da un'altra classe aggiunge o modifica
funzionalità della classe base (già "completa")
▫ Una classe che eredita da una classe astratta fornisce
funzionalità al posto della classe base. Cioè la classe base dice
cosa "promette" di fare, la classe concreta lo fa
Fondamenti di informatica A-K - Domenico Di Carlo
Interfacce
• Una interfaccia è ananaloga ad una classe, ma, a differenza
di questa, costituisce una pura specifica di comportamenti.
• Come tale :
▫ Si limita a dichiarare i metodi, senza implementarli (tutti i
metodi di un’interfaccia sono implicitamente abstract)
▫ Non può definire variabili (può definire costanti, cioè static
final)
• Un’interfaccia può essere pensata come un contratto tra
ogni classe che la implementa ed il mondo esterno:
l’interfaccia vincola le classi che la implementano a
supportare le funzioni in essa dichiarate senza vincolare in
alcun modo l’implementazione delle classi
Fondamenti di informatica A-K - Domenico Di Carlo
Un’interfaccia importante, Comparable
• Quest’interfaccia :
▫ ci è utile per definire dei criteri di ordinamento tra un oggetto
ed un altro.
▫ Contiene al suo interno un solo metodo da ridefinire
 -> compareTo (T object)
• Proviamo ad implementarla ! (Esercitazione 61)
Fondamenti di informatica A-K - Domenico Di Carlo
Interfacce vs Classi astratte
• Interfacce :
▫ Non può essere
istanziata
▫ Non contiene alcuna
implementazione (le
classi derivate dovranno
realizzare tutte le
funzionalità)
▫ Non può contenere stato
▫ Non può contenere
attributi e metodi (e
proprietà ed eventi)
statici (a parte eventuali
costanti comuni)
• Classi Astratte :
▫ Non può essere istanziata
▫ Può essere implementata
completamente,
parzialmente o per niente
▫ Le classi derivate devono
realizzare le funzionalità
non implementate e
possono fornire una
realizzazione alternativa a
quelle implementate.
(polimorfismo)
▫ Può contenere stato
(comune a tutte le
sottoclassi)
▫ Può contenere attributi e
metodi statici
Fondamenti di informatica A-K - Domenico Di Carlo
Esercitazione 6.2
• Realizzare la seguente tassonomia :
▫ Creare un'interfaccia IImpiegato che abbia la signature dei
metodi:




public String getNome();
public String getIndirizzo();
public String getTelefono();
public double getPaga();
▫ Creare una classe astratta Impiegato che implementi
l'interfaccia ridefinendo :
 Tutti i metodi sopraelencati all'infuori di getPaga()
 Inserendo gli attributi nome, indirizzo e telefono (3 stringhe)
▫ Creare tre classi concrete che estendano la classe astratta che :
 Specializzino il metodo astratto getPaga() della superclasse
 Aggiungano gli eventuali metodi e attributi come da diagramma
Fondamenti di informatica A-K - Domenico Di Carlo
Esercitazione 6.2
• Le tre classi concrete sono i tre tipi di impiegato che
l'azienda può avere (di cui si memorizzano nome, indirizzo
e numero di telefono):
▫ I lavoratori dipendenti percepiscono uno stipendio mensile.
▫ I lavoratori giornalieri percepiscono uno stipendio dato dal
prodotto di una base di retribuzione giornaliera moltiplicata per
il numero di giorni lavorativi.
▫ I lavoratori volontari non percepiscono retribuzione.
• Il programma (classe Esercitazione 62) deve creare i dati di
alcuni impiegati di vostra invenzione e calcolare (e
stampare a video) la retribuzione dovuta ad ogni
impiegato.
Fondamenti di informatica A-K - Domenico Di Carlo
Esercitazione 6.2 - A lezione di UML
Interfaccia
Classe astratta
Metodo astratto
Classi concrete
Fondamenti di informatica A-K - Domenico Di Carlo
Esercizio 6.3
• Uno studio fotografico possiede una serie di macchine
fotografiche diverse.
• Le macchine fotografiche (classe astratta) sono caratterizzate
da una marca, un modello, una data di acquisto e il prezzo
pagato, e si dividono in altre due classi astratte :
▫ digitali, caratterizzate dalla risoluzione, dalla sensibilità ISO e dalla
possibilità di estendere la garanzia. Tutte le macchine digitali hanno
una garanzia di due anni (estendibile ad un prezzo di 200euro).
▫ analogiche, con una garanzia di 4 anni.
• Tra le macchine digitali, ci sono le reflex (caratterizzate dal
modello dello specchio) e le mirrorless (che possono o meno
avere un mirino elettronico).
• Tra le macchine analogiche, le istantanee (caratterizzate dal
modello di pellicola) e quelle a rullino (caratterizzate dalla
sensibilità ASA).
Fondamenti di informatica A-K - Domenico Di Carlo
Esercizio 6.3
• Le classi devono fornire metodi per:
▫ controllare se la macchina in questione è ancora in garanzia in
una certa data
▫ stampare, mediante il metodo toString, le caratteristiche della
macchina fotografica.
• Il centro fotografico possiede quattro macchine
fotografiche:
▫ Una reflex Canon, modello 5DMark3, acquistata il 13/05/2012
per € 2985, 22.3 megapixel con sensibilità ISO 128000, con
specchio a pentaprisma;
▫ Una macchina a rullino Holga 120N, acquistata il 22/07/1999
per € 66, sensibilità ASA 1600.
▫ Una mirrorless Nikon 1 V1, acquistata il 01/9/2012 per € 499,
10.1 megapixel, sensibilità ISO 3200, dotata di mirino
elettronico;
▫ Una istantanea Polaroid Supercolor 600, acquistata il
10/12/1993 del valore di €94, modello pellicole Serie 600.
Fondamenti di informatica A-K - Domenico Di Carlo
Tassonomia
Classe astratta
Interfaccia
Prezzo protected
Metodo astratto
Variabili statiche
Classi concrete
Fondamenti di informatica A-K - Domenico Di Carlo
Scarica

Fondamenti di informatica T-A Introduzione