Fondamenti di Informatica T-1. Classi e metodi astratti

Documenti analoghi
Fondamenti di Informatica T-1

Fondamenti di Informatica T-1. Ereditarietà & Polimorfismo

Fondamenti di Informatica T-1. Costruttori Ereditarietà

La classe java.lang.object

CLASSI ASTRATTE CLASSI ASTRATTE CLASSI ASTRATTE: PERCHÉ? CLASSI ASTRATTE: ESEMPIO. è una classe astratta

CLASSI ASTRATTE CLASSI ASTRATTE

CLASSI ASTRATTE CLASSI ASTRATTE: ESEMPIO CLASSI ASTRATTE CLASSI ASTRATTE: PERCHÉ? L ereditarietà porta riflettere sul

Ereditarietà e Polimorfismo. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Fondamenti di Informatica T-1

Fondamenti di informatica T-1 (A K) Esercitazione 6: Eclipse, Ereditarietà e Polimorfismo

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Gerarchia di classi Java 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Programmazione II Compitino (Vers. B)

CLASSI ASTRATTE - ESERCIZIO

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

Ereditarietà e Polimorfismo

18 - Classi parzialmente definite: Classi Astratte e Interfacce

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125

Obiettivi. Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione.

Esempio 2: Subtyping

Uso di metodi statici. Walter Didimo

Esercitazione 2. Corso di Tecniche di Programmazione

Introduzione al C++ (continua)

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Quadrato Magico. Fondamenti di Programmazione

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Gestore di Stringhe 1

IL CONCETTO DI CLASSE

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

Lezione 13 Classi interne

L ereditarieta` Riuso del software: Ereditarieta`, Composizione, Polimorfismo e Binding Dinamico Ereditarietà Ereditarietà

TIPI PRIMITIVI: LIMITI

Introduzione. Java. Esempio. Esempio

Eccezioni Precisazioni e approfondimenti

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Oggetti e classi. Cos è un oggetto

Programmazione a Oggetti Lezione 10. Ereditarieta

Programmazione II Compitino (Vers. A)

Programmazione è gestione di eventi

Proprietà delle Classi e degli Oggetti in Java

Uguaglianza e copia di oggetti

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione orientata agli oggetti Classi astratte e interfacce

Fondamenti di Informatica T-1. Classi & vettori

Definizione di metodi in Java

Programmazione a Oggetti. Ereditarieta

Funzioni costruttore e istanza di un'oggetto

Esempio: Costruttori ed ereditarietà

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

FONDAMENTI DI INFORMATICA C Linguaggio Java: Classi Astratte e Interfacce

Prova d Esame Compito A

Programmazione ad oggetti

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Esercitazione. Docente Ing. Mariateresa Celardo

Esempio: Interfacce. Gioco Interfacce

Ereditarietà (ultima)

Programmazione II Compitino (Vers. B)

Esempio su strutture dati dinamiche: ArrayList

Classi Astratte. Corso di Tecniche di Programmazione

Definizione di classi. Walter Didimo

Thread in Java. Thread = flusso di esecuzione indipendente nel codice del programma

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Elena Baralis, Claudio Demartini

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

14 - Metodi e Costruttori

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

Compito di Programmazione, 22 marzo 2007 INFORMATICI E MULTIMEDIALI

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Programmazione orientata agli oggetti Ereditarietà

Installazioni preliminari

OOP: Object Oriented Programming

Esempio su strutture dati dinamiche: ArrayList

Object-Oriented Programming

Titoli azionari. Fondamenti di Programmazione

Esercitazione n 3. Capacità di analisi e di estensione di progetti esistenti Linguaggio Java:

Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi:

Esempio Principio di sostituibilità

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Esercizi sul modello Runtime di Java e sulla ricorsione (Fondamenti di Informatica 2 Walter Didimo) (Soluzioni)

Il modello Entità/Relazioni (ER)

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

Unità 2 I file binari

Fondamenti di Informatica T1 Mappe

Luigi Piroddi

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

GESTIONE DEGLI ERRORI

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.)

Introduzione. Java RTTI RTTI. Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime

Programmazione Java Variabili membro, Metodi La parola chiave final

Programmazione ad oggetti Prova scritta 15 Gennaio 2013

Prova di Laboratorio di Programmazione

16 - Ereditarietà, tipi e gerarchie

Esercitazione n 4. Obiettivi

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

Transcript:

Classi e metodi astratti

2 Classi astratte L'ereditarietà è utile per rappresentare tassonomie e gerarchie di entità reali. Non sempre però tutti i livelli della gerarchia rappresentano entità concrete. Ad esempio: non esiste concretamente il generico animale, esistono solo animali specifici! Una classe astratta permette di rappresentare un'entità astratta (cioè di cui non esistono istanze) per raggruppare informazioni e comportamenti senza definire l'implementazione Esempio: 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é dipende dallo specifico animale

Classi astratte 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.

4 Esempio: Giorno di paga Scrivere un programma java che consenta di gestire il pagamento degli stipendi dei dipendenti di un'azienda. Di ogni dipendente, si memorizza il nome, l'indirizzo e il telefono. L'azienda ha tre categorie di dipendenti: Impiegati, con stipendio mensile Giornalieri, con stipendio mensile calcolato in base al numero di giorni di lavoro (numero di giorni * base di retribuzione giornaliera) Stagisti, il cui lavoro non è retribuito. Si crei un metodo giornodipaga() che mostri a video le informazioni dei dipendenti e le loro retribuzioni. Nel main si istanzi un'azienda con un certo numero di dipendenti e si invochi il metodo giornodipaga().

5 Esercizio: Turismo Si scriva un programma Java che definisca opportuni classi, costruttori e metodi per la gestione di eventi turistici. I dati gestiti dal programma sono relativi a: Eventi, caratterizzate da codice univoco generato automaticamente, località, descrizione e vettore di feedback (booleani che rappresentano se un utente consiglia o meno la meta). Località, caratterizzate da nome e provincia. Gli eventi si dividono in: mostre (caratterizzate da mese di inizio e mese di fine, codice: «M»+progressivo), tour guidati (con orario e numero di posti disponibili, codice: «T»+progressivo) e spettacoli (con indicazione se lo spettacolo è all aperto, codice: «S»+progressivo). Si supponga che tali informazioni siano contenute in una classe Turismo in un vettore eventi, di massimo 1000 elementi. Si definiscano i seguenti metodi: 1. Metodo consigliato, che indica se un evento è consigliato o meno (il numero di feedback positivi supera il numero di feedback negativi). 2. Metodo controlladisponibilità, che dati un mese, il numero di posti richiesti e una previsione meteo controlla se un evento è disponibile: in particolare, per le mostre si controlli che il mese richiesto sia compreso nell intervallo di apertura della mostra; per i tour guidati, che il numero di posti richiesti inferiore al numero di posti disponibili; per gli spettacoli, che lo spettacolo sia al chiuso oppure che la previsione meteo indichi bel tempo. 3. Metodo trovaeventi, che, data una provincia, stampi a video le informazioni sugli eventi (presenti e passati) nella provincia, includendo l informazione se l evento sia consigliato o meno (si ridefinisca a tal fine il metodo tostring() della classe Evento e delle sottoclassi). 4. Metodo piùconsigliato, che restituisce l evento con il maggior numero di feedback positivi. Il programma principale deve, infine, svolgere i seguenti punti: a) Creare un istanza di Turismo e popolare il vettore con varie istanze. b) Invocare il metodo del punto 3. c) Invocare il metodo del punto 4, mostrando a video l evento restituito e l informazione sulla disponibilità di tale evento nel mese corrente, per un gruppo di 7 persone e con previsione di tempo nuvoloso.