Definisce un interfaccia per creare oggetti, ma lascia alle sottoclassi la decisione del tipo di classe a istanziare.
|
|
- Fabia Giusti
- 4 anni fa
- Visualizzazioni
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.
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
DettagliIl 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
DettagliGoF 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
DettagliGoF 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
Dettagli1. 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
DettagliFileHandler. +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
DettagliLa 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
DettagliInterfacce. 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
DettagliIl 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.
DettagliGerarchia 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
DettagliUn 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
DettagliLaboratorio 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
DettagliRETI 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
DettagliRiassunto: 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,
DettagliClassi 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
DettagliProgettazione : 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
DettagliFONDAMENTI 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,
DettagliIl 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
DettagliProgrammazione 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
DettagliCorso 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
DettagliProgrammazione 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
DettagliLe 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
DettagliRiuso 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
Dettagli18 - 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/
Dettagli17 - 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/
DettagliIl 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,
DettagliRoberta 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
DettagliNON 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/
DettagliEsempi 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
DettagliLPR 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
DettagliProgrammazione 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
DettagliMarco 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
DettagliClassi 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
DettagliImplementare 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
DettagliLA 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:
DettagliIngegneria del Software
Ingegneria del Software Java Classi Dichiarazione di Classi [Doc comment] [Modifiers] class ClassName [ extends SuperClassName] [ implements InterfaceName [, InterfaceName]...] {ClassBody Doc comment commento
DettagliInput. 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
DettagliClassi 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
DettagliInizializzare 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:
Dettagliereditarietà 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
DettagliOCA 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
DettagliMultithreading 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)
DettagliVariabili 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
DettagliLa 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
DettagliVariabili 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)
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
DettagliEsercitazione 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
DettagliCorso 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
DettagliProgettazione! 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!
DettagliEccezioni. 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
DettagliEsonero 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
DettagliClassi 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
DettagliFondamenti 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
DettagliA. 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),
DettagliClassi 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
DettagliCorso 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
DettagliCorso 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
DettagliMain 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
DettagliEreditarietà: 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
DettagliI 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
DettagliSpecifica 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.
DettagliCloneNotSupportedException 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
DettagliCorso 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
DettagliLa 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
DettagliEsonero 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
DettagliPRINCIPI 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à
DettagliEsonero 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);
DettagliMotorino 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
DettagliProgrammazione 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
DettagliObject 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
DettagliErrata 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
DettagliCorso 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
DettagliLe 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
DettagliUnità 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
DettagliJAVA 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
DettagliSul 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.
DettagliLezione 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
Dettaglipublic 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
DettagliSTRUTTURE 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
DettagliOrganizzazione 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
DettagliProgrammazione 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
DettagliClassi 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,
DettagliEsercitazione 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
DettagliASD: 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
DettagliEsercizi 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
DettagliProgrammazione 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
DettagliProgrammazione 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
DettagliProgrammazione 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
DettagliEccezioni. 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
Dettagli12. 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
DettagliCaratteri 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
DettagliSystem.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
DettagliAlberi 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
DettagliProgrammazione 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.
DettagliOggetti. 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
DettagliProgettazione 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
DettagliRiferimento 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