Definisce un interfaccia per creare oggetti, ma lascia alle sottoclassi la decisione del tipo di classe a istanziare.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Definisce un interfaccia per creare oggetti, ma lascia alle sottoclassi la decisione del tipo di classe a istanziare."

Transcript

1 Factory Method Factory Method (GoF pag. 107) 3.1. Descrizione Definisce un interfaccia per creare oggetti, ma lascia alle sottoclassi la decisione del tipo di classe a istanziare Esempio Si pensi ad un framework per la manipolazione di elementi cartografici. Due classi astratte sono fondamentali per il progetto di questo framework: la classe Elemento che rappresenta qualunque tipo di oggetto da posizionare in una mappa (es. luoghi e collegamenti), e la classe Strumento, che fornisce le operazioni comuni di manipolazione degli Elementi. Dato che entrambi classi sono astratte, l implementazione di un applicativo che sia in grado di gestire un particolare tipo di mappa (che utilizza un insieme definito di Elementi), richiede l estensione di esse. Tools: New Place New Conn. Place: Evian (France) Connector: Lac Léman Place: Lausanne (Switzerland) Si fa notare che lo strumento, è in grado di stabilire quando un particolare tipo di elemento deve essere creato (ad esempio, dopo di aver richiesto un identificativo per un nuovo elemento), ma non il tipo particolare di Elemento a creare. In altre parole, il framework deve creare istanze di classi, ma soltanto è in grado di avere conoscenza delle classi astratte, che non possono essere istanziate Soluzione Il pattern Factory Method suggerisce il portare via dal framework la creazione di ogni particolare tipo di Elemento. Per fare ciò, verrà delegato alle sottoclassi dello Strumento, che specializzano le funzioni di gestione di ogni tipo di Elemento, il compito di creare le particolari istanze di classi che siano necessarie.

2 Factory Method Struttura del pattern Product Creator #factorymethod(): Product +anoperation() anoperation{ product = factorymethod(); ConcreteProduct creates <<instantiates>> ConcreteCreator #factorymethod(): Product 3.5. Applicazione del pattern Schema del modello ElementHandler <<interface>> MapElement +setlabel() +getpaintingdata(): String #newelement(): MapElement +createelement(): MapElement +paintelement() PlaceHandler ConnectorHandler #newelement(): MapElement #newelement(): MapElement +connect( conn: Connector, origin: Place, destination: Place ) Place Connector creates creates +setlabel() +getpaintingdata(): String +setlabel() +getpaintingdata():string Partecipanti Product: classe astratta MapElement. - Definisce l interfaccia di tutti gli elementi da utilizzare nell applicazione. ConcreteProduct: classi Place e Connector - Implementano i concreti prodotti. Creator: classe ElementHandler.

3 Factory Method 24 - Dichiara il factory method (metodo newelement) che restituisce un oggetto della classe Product. - Richiama il factory method per creare i Product. ConcreteCreator: classi PlaceHandler e ConnectorHandler - Redefine il factory method per restituire una istanza di ConcreteProduct. Descrizione del codice L interfaccia MapElement fornisce la definizione dei servizi comuni a tutti i Product da gestire nell applicazione, che nel caso di questo diventano due: Place (luoghi) e Connector (collegamenti fra luoghi). A livello di framework, insieme al MapElement esiste l ElementHandler, che fornisce la procedura di creazione e gestione di questi oggetti. L ElementHandler si specializza in un PlaceHandler e in un ConnectorHandler, che hanno il compito di istanziare il particolare tipo di MapElement, quando sia necessario. Si presenta adesso il codice delle classi appartenenti al framework, vale dire, l interfaccia MapElement: e la classe astratta ElementHandler: public interface MapElement { public abstract void setlabel( String id ); public abstract String getpaintingdata(); import java.io.*; public abstract class ElementHandler { public MapElement createelement( ) throws IOException { BufferedReader reader = new BufferedReader( new InputStreamReader( System.in) ); System.out.println( "Enter a label for the element: "); String label = reader.readline(); MapElement element = newelement( ); element.setlabel( label ); return element; public abstract MapElement newelement(); public void paintelement(mapelement element) { System.out.println( element.getpaintingdata() ); Si noti che il metodo createelement fornisce il codice necessario per creare qualunque tipo di Product (MapElement). L istanziazione del particolare elemento è delegata al metodo newelement, il quale è dichiarato astratto. Quando viene sviluppata l applicazione cartografica a partire di questo framework, si implementano le classi concrete per la rappresentazione degli elementi della mappa e per la loro gestione, vale dire i ConcreteProduct e i ConcreteCreator.

4 Factory Method 25 Nel caso dell esempio gli elementi della mappa (ConcreteProduct) corrispondono alle classi Place (per i luoghi) e Connector (per i collegamenti): class Place implements MapElement { private String placelabel; public void setlabel( String label ) { placelabel = label; public String getpaintingdata() { return "city: "+ placelabel; class Connector implements MapElement { private String connectorlabel; Place place1, place2; public void setlabel( String label ) { connectorlabel = label; public void setplacesconnected( Place origin, Place destination ) { place1 = origin; place2 = destination; public String getpaintingdata() { return connectorlabel + " [from " + place1.getpaintingdata() + " to " + place2.getpaintingdata() + "]"; Uno dei ConcreteCreator corrisponde alla classe PlaceHandler, che implementa la creazione di un oggetto Place nella chiamata al metodo newelement. public class PlaceHandler extends ElementHandler { public MapElement newelement() { return new Place(); Allo stesso modo, l altro ConcreteCreator, progettato per la gestione dei Connector, corrisponde alla classe ConnectorHandler, che anche estende l ElementHandler, e implementa il metodo newelement, per creare oggetti della classe Connector. public class ConnectorHandler extends ElementHandler { public MapElement newelement() { return new Connector(); public void connect(connector conn, Place origin, Place destination) { conn.setplacesconnected( origin, destination );

5 Factory Method 26 Si è inclusa una funzionalità aggiuntiva nella classe ConnectorHandler, che serve a connettere due luoghi (metodo connect. Finalmente si presenta il codice dell applicazione che dimostra il funzionamento di questo pattern: import java.io.*; public class FactoryMethodExample { public static void main (String[] arg) throws IOException { // Creates the tools for handling elements ConnectorHandler ctool = new ConnectorHandler(); PlaceHandler ptool = new PlaceHandler(); // Vars Place startpoint, endpoint; Connector route; // Creates two places and one connector System.out.println( "1st. place creation" ); startpoint = (Place) ptool.createelement(); System.out.println( "2nd. place creation" ); endpoint = (Place) ptool.createelement(); System.out.println( "Connector creation" ); route = (Connector) ctool.createelement(); // Links places with the connection ctool.connect( route, startpoint, endpoint ); // Paints the entire map ptool.paintelement( startpoint ); ptool.paintelement( endpoint ); ctool.paintelement( route ); Osservazioni sull esempio In questo esempio la gerarchia di creatori (ElementHandler PlaceHandler ConnectorHandler) rispecchia la gerarchia di prodotti (MapElement Place - Connector), ma questo non è un requisito strutturale imposto dal pattern: è perfettamente possibile trovarsi davanti a prodotti condivisi tra due o più ConcreteCreator. Esecuzione dell esempio C:\Design Patterns\Creational\Factory Method>java FactoryMethodExample 1st. place creation Enter a label for the element: Evian 2nd. place creation Enter a label for the element: Lausanne Connector creation Enter a label for the element: Lac Léman city: Evian city: Lausanne Lac Léman [from city: Evian to city: Lausanne]

6 Factory Method Osservazioni sull implementazione in Java Si vuole rendere noto che il factory method (newelement) dichiara come tipo da restituire al punto di chiamata, sia nel Creator (ElementHandler), sia in ogni ConcreteCreator (PlaceHandler e ConnectorHandler), un oggetto di tipo Product (MapElement), invece dei particolari tipi da produrre (Place e Connector). Questo è dovuto al fatto che le sottoclassi che redefiniscono un metodo devono esplicitare lo stesso tipo di ritorno che quello indicato nella dichiarazione del metodo nella superclasse.

Fornisce una interfaccia unificata per un insieme di interfacce di un sottosistema, rendendo più facile l uso di quest ultimo.

Fornisce una interfaccia unificata per un insieme di interfacce di un sottosistema, rendendo più facile l uso di quest ultimo. Facade 73 10. Facade (GoF pag. 185) 10.1. Descrizione Fornisce una interfaccia unificata per un insieme di interfacce di un sottosistema, rendendo più facile l uso di quest ultimo. 10.2. Esempio Un applicativo

Dettagli

Il pattern FACTORY è un pattern di tipo Creazionale secondo la classificazione della GoF I pattern di tipo creazionali si occupano della costruzione

Il pattern FACTORY è un pattern di tipo Creazionale secondo la classificazione della GoF I pattern di tipo creazionali si occupano della costruzione Il pattern Factory Il pattern FACTORY è un pattern di tipo Creazionale secondo la classificazione della GoF I pattern di tipo creazionali si occupano della costruzione degli oggetti e delle problematiche

Dettagli

GoF s Design Patterns in Java

GoF s Design Patterns in Java Politecnico di Torino GoF s Design Patterns in Java Franco GUIDI POLANCO fguidi@ucv.cl http://eii.pucv.cl/pers/guidi/designpatterns.htm Giugno 2002 2 Contenuto INTRODUZIONE 3 1. ABSTRACT FACTORY 6 2. BUILDER

Dettagli

GoF s Design Patterns in Java

GoF s Design Patterns in Java Politecnico di Torino GoF s Design Patterns in Java Franco GUIDI POLANCO franco.guidi@polito.it http://www.cim.polito.it Giugno 2002 2 Contenuto INTRODUZIONE 3 1. ABSTRACT FACTORY 6 2. BUILDER 13 3. FACTORY

Dettagli

1. Abstract Factory. (GoF pag. 87) 1.1. Descrizione Esempio Descrizione della soluzione offerta dal pattern

1. Abstract Factory. (GoF pag. 87) 1.1. Descrizione Esempio Descrizione della soluzione offerta dal pattern Abstract Factory 6 1. Abstract Factory (GoF pag. 87) 1.1. Descrizione Presenta un interfaccia per la creazione di famiglie di prodotti, in modo tale che il cliente che gli utilizza non abbia conoscenza

Dettagli

FileHandler. +getcontent():string +getline(number:int):string

FileHandler. +getcontent():string +getline(number:int):string Proxy 85 12. Proxy (GoF pag. 207) 12.1. Descrizione Fornisce una rappresentazione di un oggetto di accesso difficile o che richiede un tempo importante per l accesso o creazione. Il Proxy consente di posticipare

Dettagli

La classe java.lang.object

La classe java.lang.object La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita

Dettagli

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I { Interfacce Una interfaccia è un astrazione per un insieme di funzioni pubbliche delle quali si definisce solo la segnatura, e non le istruzioni. Un interfaccia viene poi implementata da una o più classi

Dettagli

Il pattern ABSTRACT FACTORY

Il pattern ABSTRACT FACTORY Il pattern ABSTRACT FACTORY Abstract Factory L intento è quello di fornire una interfaccia per creare famiglie di oggetti in relazione o dipendenti tra loro, senza dovere specificare le loro classi concrete.

Dettagli

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Una sottoclasse eredita metodi, variabili, etc. dalla superclasse... Per

Dettagli

Un approccio possibile sarebbe creare un oggetto con un metodo adeguato per scandire collezioni o stampare i dati dell oggetto:

Un approccio possibile sarebbe creare un oggetto con un metodo adeguato per scandire collezioni o stampare i dati dell oggetto: Visitor 152 23. Visitor (GoF pag. 331) 23.1. Descrizione Rappresenta una operazione da essere eseguita in una collezione di elementi di una struttura. L operazione può essere modificata senza alterare

Dettagli

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java. Di solito se abbiamo la struttura di una classe con gli attributi e i metodi possiamo istanziare

Dettagli

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

RETI DI CALCOLATORI Linguaggio Java: Eccezioni Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione

Dettagli

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

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1. OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,

Dettagli

Classi astratte Interfacce

Classi astratte Interfacce Classi astratte Interfacce Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni 1 Ereditarietà Abbiamo visto come L ereditarietà permette di costruire nuove classi utilizzando

Dettagli

Progettazione : Design Pattern Creazionali

Progettazione : Design Pattern Creazionali Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali

Dettagli

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Prof. Zambonelli, Ing. Cabri, Ing. Denti, Ing. Andrea Aime Zambonelli,

Dettagli

Il problema è trovare un modo nel quale gli eventi dell oggetto di riferimento, siano comunicati a tutti gli altri interessati.

Il problema è trovare un modo nel quale gli eventi dell oggetto di riferimento, siano comunicati a tutti gli altri interessati. Observer 129 19. Observer (GoF pag. 293) 19.1. Descrizione Consente la definizione di associazioni di dipendenza di molti oggetti verso di uno, in modo che se quest ultimo cambia il suo stato, tutti gli

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi

Dettagli

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010 Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori l Introduzione ai Thread in Java A.A. 2009/2010 1 Thread Un thread è un flusso sequenziale di esecuzione di istruzioni all interno

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi

Dettagli

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura: Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata

Dettagli

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili Riuso di classi Spesso si ha bisogno di classi simili Si vuole cioè riusare classi esistenti per implementare attributi e metodi leggermente diversi Non è pratico copiare la classe originaria e modificarne

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

17 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce 17 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Il Linguaggio Java. Le interfacce

Il Linguaggio Java. Le interfacce Il Linguaggio Java Le interfacce Ordinamento dei conti PROBLEMA: si vogliono ordinare i libretti di risparmio (SavingsAccount) in base al loro tasso di interesse REQUISITO: La classe dovrebbe essere ordinabile,

Dettagli

Roberta Gori, Laura Semini Ingegneria del Software Dipartimento di Informatica Università di Pisa

Roberta Gori, Laura Semini Ingegneria del Software Dipartimento di Informatica Università di Pisa Roberta Gori, Laura Semini Ingegneria del Software Dipartimento di Informatica Università di Pisa Con riferimento al caso di studio Pisa Mover si consideri la nuova tariffa scontata per i biglietti stazione

Dettagli

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!! NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!! OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/

Dettagli

Esempi in Java di program.ne O-O

Esempi in Java di program.ne O-O Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico

Dettagli

LPR 2005/2006 Lezione 7. paradigma di interazione domanda/risposta remote procedure call RMI (Remote Method Invocation): API JAVA esercizio

LPR 2005/2006 Lezione 7. paradigma di interazione domanda/risposta remote procedure call RMI (Remote Method Invocation): API JAVA esercizio LPR 2005/2006 Lezione 7 paradigma di interazione domanda/risposta remote procedure call RMI (Remote Method Invocation): API JAVA esercizio PARADIGMA DI INTERAZIONE A DOMANDA/RISPOSTA Paradigma di interazione

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma

Dettagli

Marco Faella I pattern Template Method e Factory Method

Marco Faella I pattern Template Method e Factory Method Marco Faella I pattern Template Method e Factory Method 12 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com

Dettagli

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

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

Implementare un'interfaccia

Implementare un'interfaccia Le interfacce Un metodo astratto è un metodo senza corpo, con un ";" dopo l'intestazione. Una interfaccia (interface) in Java ha una struttura simile a una classe, ma può contenere SOLO costanti e metodi

Dettagli

LA CLASSE Data ESERCIZIO. Definiamo la classe Data che incapsuli giorno, mese e anno (tutti int)

LA CLASSE Data ESERCIZIO. Definiamo la classe Data che incapsuli giorno, mese e anno (tutti int) PROVA PRATICA Contenuti: Uso del JDK e di un ambiente integrato per lo sviluppo Semplici programmi che utilizzino: Classi Classi astratte (Interfacce) Ereditarietà (protezione, costruttori) Tempo a disposizione:

Dettagli

Ingegneria del Software

Ingegneria del Software Ingegneria del Software Java Classi Dichiarazione di Classi [Doc comment] [Modifiers] class ClassName [ extends SuperClassName] [ implements InterfaceName [, InterfaceName]...] {ClassBody Doc comment commento

Dettagli

Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei

Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei Input Il tipo char Alcune modalità di acquisizione di input 1 Lettura di dati in input Vediamo due modi per acquisire dei dati di input dall utente: 1. Tramite una finestra grafica di dialogo 2. Tramite

Dettagli

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

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

Inizializzare oggetti

Inizializzare oggetti Inizializzare oggetti Uso della Classe Software per TLC - AA 2008/2009 1 Costruttori e polimorfismo Uso della Classe Un codice migliore Software per TLC - AA 2008/2009 2 Costruttori ed Ereditarietà Output:

Dettagli

ereditarietà e polimorfismo

ereditarietà e polimorfismo ereditarietà e polimorfismo Java ereditarietà o l ereditarietà permette di definire nuove classi partendo da classi sviluppate in precedenza o la nuova classe viene definita esprimendo solamente le differenze

Dettagli

OCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 8 SE PROGRAMMER

Dettagli

Multithreading in Java I parte. Lorenzo Gallucci

Multithreading in Java I parte. Lorenzo Gallucci Multithreading in Java I parte Lorenzo Gallucci Java: un linguaggio ed un sistema predisposti per il multitasking È possibile creare e gestire Thread nativamente (senza dover ricorrere a librerie esterne)

Dettagli

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe

Dettagli

La paninoteca. Mi resta da scrivere solo costo()

La paninoteca. Mi resta da scrivere solo costo() La paninoteca Mi resta da scrivere solo costo() La paninoteca Usiamo l ereditarietà per definire dei Panini particolari Ci sono alcuni tipi di pane Estendendo Panino scrivo meno codice Nell esempio eredito

Dettagli

Variabili e Metodi di classe Interfacce e Package File in Java

Variabili e Metodi di classe Interfacce e Package File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe definisce un

Dettagli

«fornire un'interfaccia per la creazione di famiglie di oggetti correlati o dipendenti senza specificare quali siano le loro classi concrete» (GoF)

«fornire un'interfaccia per la creazione di famiglie di oggetti correlati o dipendenti senza specificare quali siano le loro classi concrete» (GoF) Introduzione Abstract Factory è creazionale e basato su oggetti ovvero, la creazione degli oggetti è delegata alle istanze di apposite classi Scopo: «fornire un'interfaccia per la creazione di famiglie

Dettagli

Esercitazione 3. Corso di Tecniche di programmazione. Laurea in Ingegneria Informatica

Esercitazione 3. Corso di Tecniche di programmazione. Laurea in Ingegneria Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 3 Corso di Tecniche di programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

Corso di Reti di Calcolatori LA

Corso di Reti di Calcolatori LA Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori LA RMI: callback Silvia Vecchi Anno accademico 2003/2004 RMI: Callback 1 Callback (1) Molte applicazioni richiedono

Dettagli

Progettazione! Progettazione! Progettazione! Progettazione!

Progettazione! Progettazione! Progettazione! Progettazione! Creare un oggetto specificandone la classe esplicitamente! Orienta ad una particolare implementazione invece che ad una interfaccia! Può complicare i cambiamenti futuri! E meglio creare oggetti indirettamente!

Dettagli

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi.

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi. Eccezioni Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi fanizzi@di.uniba.it 2 Eccezione Evento anormale che avviene durante l'esecuzione del programma

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

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

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario API di Java Istruzione di scrittura Istruzione di lettura 21/03/2011 2 API di Java Java è un linguaggio orientato agli oggetti basato

Dettagli

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

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),

Dettagli

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

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 08 Ereditarietà A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Ereditarietà 1 Contenuti!Livelli di astrazione

Dettagli

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

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami

Dettagli

Main System Monitor Keyboard

Main System Monitor Keyboard Composite 57 8. Composite (Gof pag. 163) 8.1. Descrizione Consente la costruzione di gerarchie di oggetti composti. Gli oggetti composti possono essere conformati da oggetti singoli, oppure da altri oggetti

Dettagli

Ereditarietà: concetti di base

Ereditarietà: concetti di base : concetti di base L ereditarietà è uno dei concetti base della programmazione ad oggetti Concetto di base: l ereditarietà permette di usare una classe precedentemente definita per la definizione di una

Dettagli

I modificatori di accesso regolano essenzialmente la visibilità e l accesso ad un componente Java. Vediamone alcuni nel seguito: public

I modificatori di accesso regolano essenzialmente la visibilità e l accesso ad un componente Java. Vediamone alcuni nel seguito: public Modificatori In questa lezione definiremo i modificatori del linguaggio JAVA, dove per modificatore intendo le parole chiave capaci di cambiare il gnificato di un componente di un applicazione Java. Si

Dettagli

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo. Prototype 28 4. Prototype (GoF pag. 117) 4.1. Descrizione 4.2. Esempio Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Dettagli

CloneNotSupportedException clone() Object clone() protected native Object clone() throws CloneNotSupportedException this

CloneNotSupportedException clone() Object clone() protected native Object clone() throws CloneNotSupportedException this Clonazione Importante esempio di eccezione controllata è CloneNotSupportedException che può essere lanciata dal metodo nativo clone() della classe Object. La dichiarazione di clone() è la seguente: protected

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 25 Ereditarietà A. Miola Maggio 2012 http://www.dia.uniroma3.it/~java/fondinf/ Ereditarietà 1 Contenuti q Livelli di astrazione

Dettagli

La gestione delle eccezioni

La gestione delle eccezioni La gestione delle eccezioni La gestione delle eccezioni Le eccezioni sono eventi che accadono in fase di esecuzione di un programma al verificarsi di una situazione anomala, come la divisione per 0, l'uso

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

Dettagli

PRINCIPI DELLA OOP. Ereditarietà e polimorfismo

PRINCIPI DELLA OOP. Ereditarietà e polimorfismo PRINCIPI DELLA OOP Ereditarietà e polimorfismo Ereditarietà e specializzazione Una delle caratteristiche distintive del paradigma di programmazione orientato agli oggetti è l'ereditarietà L'ereditarietà

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 26 novembre 2008 Considerate le seguenti definizioni di classi e interfacce in Java: class P {public static void print(string s){system.out.println(s);

Dettagli

Motorino colore velocità tipo antifurto getvelocità accelera antifurto inserisciantifurto antifurto

Motorino colore velocità tipo antifurto getvelocità accelera antifurto inserisciantifurto antifurto Esercitazione 1. Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore del motorino, velocità: un numero con la virgola indicante la velocità in Km/h che possiede

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

Dettagli

Object Oriented Design Patterns: Decorator

Object Oriented Design Patterns: Decorator Object Oriented Design Patterns: Decorator Francesco De Rose, matr. 60180 Università degli Studi di Brescia Corso di Laurea Specialistica in Ingegneria Informatica Insegnamento di Ingegneria del Software

Dettagli

Errata Corrige di Manuale di Java 8

Errata Corrige di Manuale di Java 8 Errata Corrige di Manuale di Java 8 pag. 43 - par. 2.5.1 - primo riquadro che riporta linee di codice public class Punto { public Punto() //metodo costruttore { deve essere corretto come di seguito: public

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni

Dettagli

Le gerarchie di tipi 1

Le gerarchie di tipi 1 Le gerarchie di tipi 1 Supertipi e sottotipi un supertipo class interface può avere più sottotipi un sottotipo extends il supertipo (class) un solo supertipo (ereditarietà singola) un sottotipo implements

Dettagli

Unità A1 Funzioni MODULO Java 2

Unità A1 Funzioni MODULO Java 2 Dare una breve descrizione dei termini introdotti: (A) CONOSCENZA TERMINOLOGICA Passaggio parametri per valore Passaggio parametri per indirizzo Parametri formali e attuali Regole di visibilità Ambiente

Dettagli

JAVA GENERICS. Angelo Di Iorio Università di Bologna

JAVA GENERICS. Angelo Di Iorio Università di Bologna JAVA GENERICS Angelo Di Iorio Università di Bologna Tipi parametrici In diversi casi è utile definire classi che operano su tipi di dato diverso e implementano un comportamento comune e indipendente dal

Dettagli

Sul pattern Iterator

Sul pattern Iterator Sul pattern Iterator 1 Introduzione Capita spesso di aver a che fare con strutture dati complesse, come ad esempio, liste, code, ecc. È buona norma accedere a queste strutture senza esporre la loro organizzazione.

Dettagli

Lezione 15 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona

Lezione 15 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona Lezione 15 programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Approfondimenti della programmazione OO Il modificatore abstract Le classi

Dettagli

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; }

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; } Il Linguaggio Java Le interfacce La classe BankAccount public class BankAccount { public BankAccount() { balance = 0; public BankAccount(double initialbalance) { balance = initialbalance; public void deposit(double

Dettagli

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

STRUTTURE DATI: OLTRE GLI ARRAY LISTE STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi

Dettagli

Organizzazione della lezione. Lezione 15 Remote Method Invocation - 3. Lo schema del Factory Design Pattern - 1. Factory design pattern

Organizzazione della lezione. Lezione 15 Remote Method Invocation - 3. Lo schema del Factory Design Pattern - 1. Factory design pattern Organizzazione della lezione Lezione 15 Remote Method Invocation - 3 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Programmazione ad Oggetti

Programmazione ad Oggetti Programmazione ad Oggetti Java File Flussi e file Flusso (stream) = sequenza di dati di input: da cui leggere di output: su cui scrivere I file sono visti come flussi di dati Il package java.io definisce

Dettagli

Classi ed Oggetti. Fondamenti di Informatica A-K

Classi ed Oggetti. Fondamenti di Informatica A-K Classi ed Oggetti Fondamenti di Informatica A-K Esercitazione 5 Introduzione al calcolatore e Java Linguaggio Java, basi e controllo del flusso I metodi: concetti di base Stringhe ed array Classi e oggetti,

Dettagli

Esercitazione sui Design Pattern. lunedì 29 aprile 13

Esercitazione sui Design Pattern. lunedì 29 aprile 13 Esercitazione sui Design Pattern Pattern Creazionali Singleton Permette la creazione di una sola istanza della classe all interno dell applicazione Fornisce un metodo con cui ottenere l istanza Il costruttore

Dettagli

ASD: Sistemi Distribuiti (Prof. Scarano) 20/05/2002

ASD: Sistemi Distribuiti (Prof. Scarano) 20/05/2002 Organizzazione della lezione 12. Java: Remote Method Invocation (3) Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Il

Dettagli

Esercizi su Java RMI. Progetto di Cliente / Servitore e supporto. Possibile tabella mantenuta dal server

Esercizi su Java RMI. Progetto di Cliente / Servitore e supporto. Possibile tabella mantenuta dal server Esercizi su Java RMI Progetto di Cliente / Servitore e supporto Un progetto RMI si deve basare sempre sulla interfaccia remota e sulle classi del cliente e del servitore più su alcune classi di supporto

Dettagli

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Programmazione Java Avanzata Programmazione Object- Oriented in Java Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza

Dettagli

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Eccezioni L esistenza di

Dettagli

12. Java: Remote Method Invocation (3)

12. Java: Remote Method Invocation (3) 12. Java: Remote Method Invocation (3) Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Organizzazione della lezione Il

Dettagli

Caratteri Input da Console

Caratteri Input da Console Caratteri Input da Console Il tipo char Input dallo standard input 12/11/2004 Laboratorio di Programmazione - Luca Tesei 1 Il tipo base char Il tipo base char rappresenta i caratteri Come sappiamo Java

Dettagli

System.out.print("\tATTENZIONE: hi inserito un valore non valido!\n");

System.out.print(\tATTENZIONE: hi inserito un valore non valido!\n); Creare un applicazione console che dato l indice della borsa di Milano nel giorno precedente, calcola la variazione percentuale rispetto al valore dell indice del giorno corrente. import java.io.*; public

Dettagli

Alberi binari ( 7.3)

Alberi binari ( 7.3) Alberi binari ( 7.3) + a 3 b Albero Binario ( 7.3) DEFINIZIONE Albero Binario è un albero ordinato in cui ogni nodo ha al più due figli. Un albero binario si dice proprio se ogni nodo ha o zero o figli

Dettagli

Programmazione a Oggetti Metodologie di Programmazione 14 Maggio 2012

Programmazione a Oggetti Metodologie di Programmazione 14 Maggio 2012 Programmazione a Oggetti Metodologie di Programmazione 14 Maggio 2012 Nome: Matricola: Metodologia di Programmazione [ ] Programmazione a Oggetti [ ] Istruzioni Scrivete il vostro nome sul primo foglio.

Dettagli

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto.

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto. Classi e oggetti Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto. OOP Vantaggi facilità di lettura e di comprensione

Dettagli

Progettazione Object-Oriented

Progettazione Object-Oriented Progettazione Object-Oriented Generalità, Relazione fra OOA e OOD Concetti di base: Classi e Oggetti, Relazioni fra oggetti, Ereditarietà e Polimorfismo La specifica del Progetto: notazione UML Una metodologia

Dettagli

Riferimento thisjoinpoint. Aspetto Per Tracing Con Wildcard. Esempi Di Uso Di thisjoinpoint. Tipo JoinPoint

Riferimento thisjoinpoint. Aspetto Per Tracing Con Wildcard. Esempi Di Uso Di thisjoinpoint. Tipo JoinPoint Aspetto Per Tracing Con Wildcard package part; public aspect TraceV1 { pointcut trace() : execution(* *.*(..)) && // cattura tutto!within(tracev1) && // fuori dall aspetto stesso within(part..*); // solo

Dettagli