220 likes | 460 Views
F ondamenti di informatica T-A Esercitazione 6 : Eclipse, Ereditarietà. AA 2012/2013 Tutor : Domenico Di Carlo <domenico.dicarlo@studio.unibo.it>. Eclipse. Avviate eclipse tramite il file eclipse.exe che potete trovare (in laboratorio) all'indirizzo -> C:ApplicativiEclipse.
E N D
Fondamenti di informatica T-AEsercitazione 6 : Eclipse, Ereditarietà AA 2012/2013 Tutor : Domenico Di Carlo <domenico.dicarlo@studio.unibo.it>
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 • FileNewJava Project • Poi, nel progetto, aggiungere classi tramite : FileNewClass 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): • Dispone di tutte le funzionalità (attributi e metodi) di quella base • Può aggiungere funzionalità proprie • Può ridefinirne il funzionamento di metodi esistenti (polimorfismo) Classe base 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 • manon si può, in generale, precisare comeperché 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 classeaggiunge o modifica funzionalità della classe base (già "completa") • Una classe che eredita da una classe astrattafornisce 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 • 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 • 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) 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 reflexCanon, modello 5DMark3, acquistatail 13/05/2012 per € 2985, 22.3 megapixel con sensibilità ISO 128000, con specchio a pentaprisma; • Unamacchina a rullinoHolga 120N, acquistatail 22/07/1999 per € 66, sensibilità ASA 1600. • Unamirrorless Nikon 1 V1, acquistatail 01/9/2012 per € 499, 10.1 megapixel, sensibilità ISO 3200, dotata di mirinoelettronico; • Unaistantanea Polaroid Supercolor 600, acquistatail 10/12/1993 del valore di €94, modellopellicoleSerie 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