Progettazione : Design Pattern Creazionali



Documenti analoghi
Progettazione! Progettazione! Progettazione! Progettazione!

Soluzione dell esercizio del 2 Febbraio 2004

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali

Il calendario di Windows Vista

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Modulo 4: Ereditarietà, interfacce e clonazione

Capitolo 4 Pianificazione e Sviluppo di Web Part

Programmazione a Oggetti Modulo B

Database. Si ringrazia Marco Bertini per le slides

Esercitazione n 4. Obiettivi

Programmazione a Oggetti Lezione 10. Ereditarieta

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione

Informatica (Basi di Dati)

Progettaz. e sviluppo Data Base

Esercizio 1: trading on-line

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Approccio stratificato

Algoritmi per suddividere il testo in righe in un editor di testo

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Guida all uso di Java Diagrammi ER

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

DESIGN PATTERNS Parte 6. State Proxy

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

CRM Configurazione e gestione accessi

SISTEMA CONTROLLO ACCESSO PARCHI AVVENTURA JUNGLE TRACK

Corso di Informatica

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso

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

design pattern una soluzione progettuale generale a un problema ricorrente

Programmazione Orientata agli Oggetti in Linguaggio Java

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Java: Compilatore e Interprete

UML Diagrammi delle classi. UML Diagramma classi 1

Esercitazione di Basi di Dati

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Soluzione dell esercizio del 12 Febbraio 2004

ESEMPIO DI QUERY SUL FILE Formario_minuscolo

Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

I file di dati. Unità didattica D1 1

Inizializzazione, Assegnamento e Distruzione di Classi

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Strutturazione logica dei dati: i file

Ingegneria del Software. Introduzione al pattern

VPN CIRCUITI VIRTUALI

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

Dimensione di uno Spazio vettoriale

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Corso di Sistemi di Elaborazione delle informazioni

Oggetti Lezione 3. aspetti generali e definizione di classi I

Basi di dati 9 febbraio 2010 Compito A

Object Oriented Software Design

SCENARIO. Personas ALICE Lucchin / BENITO Condemi de Felice. All rights reserved.

Architetture Applicative

MANUALE PARCELLA FACILE PLUS INDICE

per immagini guida avanzata Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel

RISOLUTORE AUTOMATICO PER SUDOKU

Corso di Amministrazione di Reti A.A. 2002/2003

Rich Media Communication Using Flash CS5

La struttura dati ad albero binario

Introduzione alla Progettazione per Componenti

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Fasi di creazione di un programma

Silca Software GLOSSARIO. February 2013 Copyright Silca S.p.A. V.2.0

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Concetto di Funzione e Procedura METODI in Java

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.

PROGETTO PER LA TRASMISSIONE DOCUMENTI RELATIVI ALL APPROVAZIONE DELLE MANIFESTAZIONI IN FORMA DIGITALE

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Progettaz. e sviluppo Data Base

Elementi di UML (7): Diagrammi dei componenti e di deployment

10. Design Patterns. Andrea Polini. Ingegneria del Software Corso di Laurea in Informatica. (Ingegneria del Software) 10. Design Patterns 1 / 36

Alessandra Raffaetà. Basi di Dati

LE CARATTERISTICHE DEI PRODOTTI MULTIVARIANTE

Telematica II 17. Esercitazione/Laboratorio 6

Gestione Rapporti (Calcolo Aree)

L isola del futuro. Guida per l insegnante

Ricapitoliamo. Ricapitoliamo

CMS ERMES INFORMATICA

Lezioni di Matematica 1 - I modulo

Mac Application Manager 1.3 (SOLO PER TIGER)

Sistema per scambi/cessioni di Gas al Punto di Scambio Virtuale

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Introduzione ai database relazionali

7.4 Estrazione di materiale dal web

Organizzazione degli archivi

Programmi e Oggetti Software

Esercizio data base "Biblioteca"

Capitolo 13. Interrogare una base di dati

Progettazione di Basi di Dati

Gestione delle formazione

SIFORM MANUALE VOUCHER FORMATIVI A DOMANDA AZIENDALE

Transcript:

Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali Factory Method Singleton Prototype Abstract Factory Builder Fondamenti di Informatica II

Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali(1/2) I Design Pattern Creazionali creano delle astrazioni sul processo di istanziazione rendendo il sistema indipendente da come gli oggetti sono creati (Esempi Principale: Pattern AbstractFactory). Spesso sono utilizzati quando la creazione di un oggetto o di un sistema è definita per piccoli componenti più piccoli piuttosto che creando complessi meccanismo gerarchici basati sull ereditarietà (Esempi Principale: Pattern Builder). Si astrae sui componenti di un modulo, mentre la struttura del modulo resta concreta. A. Martinelli () Design Pattern Creazionali 30/11/2010 2 / 21

Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali(2/2) Due caratteristiche ricorrenti in questi pattern: Nascondono la conoscenza riguardo a quali classi concrete sono effettivamente usate. Nascondono il modo con cui specifiche istanza vengono create ed organizzate. Nota Come vedremo anche per gli altri pattern, ci sono circostanze in cui i pattern creazionali sono alternativi tra di loro, così come casi in cui è utili usarli in modo misto. A. Martinelli () Design Pattern Creazionali 30/11/2010 3 / 21

Factory Method Factory Method Nome alternativo : Costruttore Virtuale Obiettivo Definire una funzione astratta per la generazione di un oggetto, in modo tale che la generazione dell oggetto sia delegata alle sotto classi. Esempio Si vuole scrivere una libreria generale per la gestione dei dati di un insieme di Dipendeti, che venga poi applicata alla gestione dei dati dei Muratori che sono dipendenti di una azienda impegnata nell Edilizia. La Classe Muratore estende la Classe Dipendente Voglio tuttavia scrivere delle funzionalità sui Dipendenti che funzionino per qualsiasi Dipendente. Nella mia applicazione, il processo dovrebbe usare solo istanza di Muratore. Ho bisogno di un meccanismo che astragga sol modo con cui sono istanziati i Dipendenti. A. Martinelli () Design Pattern Creazionali 30/11/2010 4 / 21

Factory Method Factory Method: Struttura A. Martinelli () Design Pattern Creazionali 30/11/2010 5 / 21

Factory Method Factory Method: Partecipanti e Caratteristiche Partecipanti: Product definisce l interfaccia o la generalizzazione per oggetti prodotti dal FactoryMethod (il Dipendente). ConcreteProduct oggetto concreto che implementa/estende il Prodotto (il Muratore). Creator definise il Factory Method, che ritorna un oggetto di tipo prodotto. ConcreteCreator implementa il Factory Method, fornendo una istanza di ConcreteProduct. Caratteristiche: Astrarre sul modo con cui un oggetto viene istanziato. Possono essere utilizzati per l implementazione delle AbstractFactory. A. Martinelli () Design Pattern Creazionali 30/11/2010 6 / 21

Factory Method Factory Method: Esempio di Codice Un Factory Method Astrazione : publ ic i n t e r f a c e DipendenteCreator { public Dipendente generatedipendente ( String nome, String cognome, Date nascita, i nt matricola ) ; } Implementazione : publ ic i n t e r f a c e MuratoreCreator implements DipendeteCreator { public Dipendente generatedipendente ( String nome, String cognome, Date nascita, i nt matricola ){ return new Muratore (nome, cognome, nascita, i nt matricola ) ; } } A. Martinelli () Design Pattern Creazionali 30/11/2010 7 / 21

Prototype Prototype Obiettivo Specifica le istanze che devono essere generate fornendo dei prototipi. I prototipi possono essere clonati, fornendo nuove istanze per una certa tipologia di oggetti. Esempio Si vuole realizzare un applicativo per l editing digitale di spartiti musicali. Il programma consente di posizionare su un Pannello contenente un pentagramma note, pause ed altri simboli. Gli elementi sono generati premendo su alcuni pulsanti che generano elementi grafici da trascinare all interno del pentagramma. Ogni nota porta con se informazioni relative al suono ed una rappresentazione grafica. Premendo su appositi pulsanti, sono in grado di generare nuove istanze per un certo oggetto, ad esempio la nota da un quarto Tutte le note da un quarto sono uguali all inizio del processo di inserimento Trascinando una nota in un punto del pentagramma, le vengono assegnate informazioni aggiuntive. A. Martinelli () Design Pattern Creazionali 30/11/2010 8 / 21

Prototype Prototype: Struttura A. Martinelli () Design Pattern Creazionali 30/11/2010 9 / 21

Prototype Prototype: Partecipanti e Caratteristiche Partecipanti: Prototype un oggetto che dichiara una interfaccia per clonare se stesso ConcretePrototype Un oggetto che implementa Prototype Client Un programma che a run-time crea un nuovo oggetto clonando un prototipo. Caratteristiche: Consente di istanziare e selezionare le classi corrette a run-time. E una soluzione che consente di scrivere meno codice quando l alternativa sarebbe usare l ereditarietà per creare un numero molto grande di classi poco dissimili tra di loro (nell esempio: una classe diversa per ogni nota o pausa). E utile inoltre quando le istanze di una classe posso avere soltanto un numero finito (e piccolo) di combinazioni dei parametri. A. Martinelli () Design Pattern Creazionali 30/11/2010 10 / 21

Singleton Singleton Obiettivo Il Singleton si applica quando è importante assicurarsi che di una classe esista unicamente una istanza Esempio Quando realizzo un sistema, spesso ci sono delle funzionalità condivise, di cui ci deve essere una unica istanza a disposizione Gestore del File System Gestore delle Risorse di Stampa A. Martinelli () Design Pattern Creazionali 30/11/2010 11 / 21

Singleton Singleton: Struttura A. Martinelli () Design Pattern Creazionali 30/11/2010 12 / 21

Singleton Singleton: Esempio di Codice Un Singleton publ ic cl a s s Singleton { private s t a t i c Singleton s i n gletonin s t a nce=new Singleton ( ) ; private Singleton (){ } publ ic s t a t i c Singleton getsi ngletoninstance (){ return s i ngletoninstance ; } publ ic void function1 (){ } publ ic void function2 (){ } } NOTA Se il costruttore viene definito private, nessuno sarà in grado di estendere un Singleton Se il costruttore viene definito protected, sarà possibile fornire implementazioni differenti di un Singleton per ereditarietà. A. Martinelli () Design Pattern Creazionali 30/11/2010 13 / 21

Abstract Factory Abstract Factory Nomi alternativi: Kit Obiettivo Creare una interfaccia da utilizzare per la creazione di famiglie o gruppi di oggetti senza specificare le loro classi concrete. Esempio Ad un libreria per interfacce grafiche si vuole associare differenti look-and-feel. E necessario creare un sistema che consenta di assegnare componenti differenti per il look-and-feel di ogni elemento (pulsanti, pannelli) Per fare questo, è necessario astrarre sui singoli elementi, ad esempio creando una astrazione PulsanteDrawer, PannelloDrawer etc. Il meccanismo è implementato con una Factory, ovvero una classe in grado di fabbricare istanze di PulsanteDrawer, PannelloDrawer etc. Tuttavia: anche per la Factory si vuole creare una astrazione, in modo tale da poter cambiare dinamicamente il modo in cui i Drawer vengono prodotti. Questo consente di assegnare all intero sistema dei look differenti. A. Martinelli () Design Pattern Creazionali 30/11/2010 14 / 21

Abstract Factory Abstract Factory: Struttura A. Martinelli () Design Pattern Creazionali 30/11/2010 15 / 21

Abstract Factory Abstract Factory: Partecipanti Partecipanti: AbstractFactory: dichiara una interfaccia per operazioni che creano istanze di oggetti di tipo AbstractProduct ConcreteFactory: implementa le operazioni per ottenere istanze di prodotti concreti. AbstractProduct: dichiara una interfaccia per un tipo di oggetto da Produrre ConcreteProduct: definisce un prodotto, che deve essere istanziato da una specifica ConcreteFactory. Implementa la AbstractProduct interface. Client: il sistema che ha bisogno delle istanze di ConcreteProduct, ma che dipende unicamente dalle interfacce. NOTA in questo pattern, è corretto (anzi necessario) che ci sia una Dipendenza tra la ConcreteFactory e i suoi ConcreteProduct. A. Martinelli () Design Pattern Creazionali 30/11/2010 16 / 21

Abstract Factory Abstract Factory: Caratteristiche Normalmente, un sistema avrà sempre bisogno di una unica Istanza di una Abstract/ConcreteFactory. Per questo motivo spesso la AbstractFactory si implementa con un Pattern Singleton. La singola AbstractFactory si basa su un meccanismo di istanziazione dei singoli elementi che di fatto è implementabile con un Pattern Factory Method. L implementazione di una AbstractFactory può poi basarsi sul meccanismo dei Pattern Prototype. Isola le classi concrete necessarie ad un sistema Consente un rapido cambio di famiglie intere di prodotti/istanze Rende più semplice la gestione di famiglie di elementi che devono per forza cooperare tra di loro (sui quali, cioè, è indispensabile che ci siano delle dipendenze) Svantaggio: rende difficile allargare una famiglia di prodotti introducendo nuove tipologie di elementi. E quindi meno adatta su un sistema dove non è possibile definire facilmente tutte le tipologie di AbstractProduct. A. Martinelli () Design Pattern Creazionali 30/11/2010 17 / 21

Builder Builder Obiettivo Astrarre sul meccanismo di costruzione di un oggetto, delegando alcune parti della costruzione dell oggetto stesso a classi derivate. In questo modo, un unico algortimo di costruzione consente di ottenere oggetti diversi. Esempio Si vuole creare una funzionalità di esportazione per un programma che usa formati file differenti: I dati del programma sono sempre gli stessi ed hanno la stessa struttura L algoritmo di scrittura dei file quindi segue gli stessi passaggi Tuttavia il modo con cui i singoli elementi di un file devono essere scritti può cdambiare A. Martinelli () Design Pattern Creazionali 30/11/2010 18 / 21

Builder Builder: Struttura A. Martinelli () Design Pattern Creazionali 30/11/2010 19 / 21

Builder Builder: Partecipanti e Caratteristiche Partecipanti: Builder: interfaccia astratta per creare una parte o un elemento di un oggetto. ConcreteBuilder: una implementazione del Builder che costruisce ed assembla le parti di un prodotto. Director: costruisce un oggetto usando il builder. Il Director implementa tecnicamente un algoritmo astratto. Product: rappresenta l oggetto effettivamente costruito, di cui il ConcreteBuilder definisce la parte. NOTA la coppia Director-Builder è definita con una classe concreta dipendente da una interfaccia. Una alternativa in alcune circostanza buona può essere quella di fondere i due elementi in una unica classe astratta, che contiene le funzionalità concrete del Director e le astrazioni del Builder. Caratteristiche Isola il codice necessario alla costruzione e rappresentazione di un Prodotto. consente di variare la rappresentazione interna di un oggetto. A. Martinelli () Design Pattern Creazionali 30/11/2010 20 / 21

Builder Builder: Un Algoritmo di Costruzione A. Martinelli () Design Pattern Creazionali 30/11/2010 21 / 21