Alcuni Design Pattern in Java



Documenti analoghi
Marco Faella Il paradigma Model-View-Controller. Il pattern Strategy.

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

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

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

Object Oriented Programming

Programmazione a Oggetti Lezione 10. Ereditarieta

Soluzione dell esercizio del 2 Febbraio 2004

L interfaccia grafica in Java

Cosa è un foglio elettronico

design pattern una soluzione progettuale generale a un problema ricorrente

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

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Ingegneria del Software. Introduzione al pattern

Lezione 5. Fogli di calcolo

Introduzione a LyX. Creazione di un documento Struttura e stile Modelli di documento Automatismi Riferimenti...

Versione 2015I PROTOCOLLO: CRS/SG-PAC/151021

Mon Ami 3000 Produzione base Produzione articoli con distinta base e calcolo dei fabbisogni

Implementazione di MVC. Gabriele Pellegrinetti

Fasi di creazione di un programma

RIFERIMENTI ATTORI GLOSSARIO. ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Concetto di Funzione e Procedura METODI in Java

Esercizi di JavaScript

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

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Progettazione : Design Pattern Creazionali

Diagrammi di Interazione

Programmazione Orientata agli Oggetti in Linguaggio Java

Design patterns in Java

Generazione Automatica di Asserzioni da Modelli di Specifica

Android. Implementare una interfaccia utente

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

1. Indice Uno shop pronto alla vendita in pochi passaggi Registrazione Il suo assistente di installazione...

Nozione di algoritmo. Gabriella Trucco

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

e-dva - eni-depth Velocity Analysis

Le presenti note vengono rilasciate per presentare le principali novità della release 2010 Sp1 di Contact Pro.

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

IL MIO PRIMO SITO: NEWS

Workland CRM. Workland CRM Rel /11/2013. Attività --> FIX. Magazzino --> NEW. Nessuna --> FIX. Ordini --> FIX

Protezione. Protezione. Protezione. Obiettivi della protezione

Architetture Software

Specifiche Tecnico-Funzionali

Calendario Thinknx 1

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

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

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

Basi di Dati e Microsoft Access

Main System Monitor Keyboard

J2EE (o JEE): Framework Java per lo sviluppo di applicazioni WEB Enterprise, che vivono in rete e che siano accessibili attraverso browser.

Esercizio data base "Biblioteca"

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

SOMMARIO... 3 INTRODUZIONE...

SPECIFICHE E LIMITI DI EXCEL

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Introduzione JDBC interfaccia java.sql driver caricare i driver

LE FUNZIONI A DUE VARIABILI

La Gestione delle risorse Renato Agati

Esercizi della lezione 5 di Java

Soluzione dell esercizio del 12 Febbraio 2004

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile

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

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

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

Corso di Laurea in Informatica, A.A

Multithreading in Java. Fondamenti di Sistemi Informativi

Amministrazione gruppi (all interno della Scuola)

I DATABASE Database relazionale

L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1

Mon Ami 3000 Conto Deposito Gestione e tracciabilità degli articoli consegnati o ricevuti in C/Deposito

Programmazione a Oggetti Modulo B

Registratori di Cassa

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

- 2 % 7, 0 ( 3 / 8 6

sito web sito Internet

Modulo 4: Ereditarietà, interfacce e clonazione

PowerPoint 2007 Le funzioni

GUIDA ALL'USO DELLA PIATTAFORMA WEB Modalità - Associazioni / Palestre Modalità - Federazioni / Enti di promozione

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

Programmazione in Java Parte I: Fondamenti

Scrivere uno script php che, dato un array associativo PERSONE le cui chiavi sono i

Sequenza alternativa degli eventi: Variazione di prezzo superiore al 20% per almeno un articolo.

Laboratorio di Basi di Dati

IL MIO PRIMO SITO NEWS USANDO GLI SCHEDARI

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Procedura SMS. Manuale Utente

Programmazione Java: Interfacce grafiche (GUI)

Esempio 1: CarMatch. Direzione centrale Sedi centrali per ogni paese Concessionarie locali di franchising UML 2

COLLI. Gestione dei Colli di Spedizione. Release 5.20 Manuale Operativo

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2

Traccia di soluzione dell esercizio del 25/1/2005

SWIM v2 Design Document

Transcript:

Marco Faella Alcuni Design Pattern in Java basato su Progettazione del Software e Design Pattern in Java, di Cay Horstmann

Pattern ITERATOR Contesto: 1) Un oggetto (aggregato) contiene altri oggetti (elementi) 2) I clienti devono accedere a tutti gli elementi 3) L'aggregato non deve esporre la sua struttura interna 4) Più clienti devono poter accedere contemporaneamente Soluzione: 1) Definire una classe iteratore che recupera un elemento per volta 2) L'aggregato ha un metodo che restituisce un iteratore

Diagramma del pattern ITERATOR

Iteratori in Java

Paradigma Model View Controller (MVC) Dividere le responsabilità tra: i dati di interesse (model) la loro presentazione (view) l'interazione con l'utente (controller) 5

Esempio: editor di pagine HTML Model: i caratteri che compongono la pagina View: una vista carattere per carattere, o una vista WYSIWYG (what you see is what you get) classe HtmlPage classi HtmlRawView, HtmlRenderedView Controller: l'observer che riceve gli eventi dall'utente e produce modifiche sul modello classe InsertListener 6

Esempio: pagine HTML 7

Pattern OBSERVER Contesto: Un oggetto (soggetto) genera eventi Uno o più oggetti (osservatori) vogliono essere informati del verificarsi di tali eventi Soluzione: Definire un'interfaccia con un metodo notify, che sarà implementata dagli osservatori Il soggetto ha un metodo (attach) per registrare un osservatore Il soggetto gestisce l'elenco dei suoi osservatori registrati Quando si verifica un evento, il soggetto informa tutti gli osservatori registrati, chiamando il loro metodo notify 8

Diagramma del pattern OBSERVER 9

Applicazione del pattern OBSERVER 10

Esempio: funzioni matematiche Studio di funzioni parametriche di una variabile reale Ad esempio, parabole a x2 + b x + c; variabile: x; parametri: a, b, c Model: la funzione View: il suo grafico, o una tabella di valori Controller: le classi che rispondono allo spostamento degli slider e modificano i parametri della funzione 11

Esempio: funzioni matematiche 12

Pattern STRATEGY Contesto: 1) Una classe (Context) può sfruttare diverse varianti di un algoritmo 2) I clienti della classe vogliono fornire versioni particolari dell'algoritmo Soluzione: 1) Definire un'interfaccia (Strategy) che rappresenti un'astrazione dell'algoritmo 2) Per fornire una variante dell'algoritmo, un cliente costruisce un oggetto di una classe (ConcreteStrategy) che implementa l'interfaccia Strategy e lo passa alla classe Context 3) Ogni volta che deve eseguire l'algoritmo, la classe Context invoca il corrispondente metodo dell'oggetto che concretizza la strategia 13

Diagramma del pattern STRATEGY 14

Applicazione del pattern STRATEGY (1) 15

Applicazione del pattern STRATEGY (2) 16

Contenitori e componenti output: // un contenitore Container x = new Container(); x.setlayout(new FlowLayout()); // aggiungo un componente al contenitore x.add(new Jbutton( qui )); // aggiungo un altro componente al contenitore x.add(new Jbutton( qua )); // la finestra JFrame f = new JFrame(); Container c = f.getcontentpane(); c.setlayout(new FlowLayout()); c.add(x); // x si comporta come un componente! c.add(new JButton( quo ));... 17

Pattern COMPOSITE Contesto: 1) Oggetti primitivi possono essere combinati in un oggetto composito 2) I clienti possono trattare un oggetto composito come primitivo Soluzione: 1) Definire un'interfaccia (Primitive) che rappresenti un'astrazione dell'oggetto primitivo 2) Un oggetto composito contiene una collezione di oggetti primitivi 3) Sia gli oggetti primitivi che quelli compositi implementano l'interfaccia Primitive 4) Nel realizzare un metodo dell'interfaccia Primitive, un oggetto composito applica il metodo corrispondente a tutti i propri oggetti primitivi, e poi combina i risultati ottenuti 18

Diagramma del pattern COMPOSITE 19

Applicazione del pattern COMPOSITE 20

Barre di scorrimento /* un'area di testo con 10 righe e 25 colonne */ Component area = new JTextArea(10, 25); /* aggiungiamo le barre di scorrimento */ Component scrollarea = new JScrollPane(area); 21

Pattern DECORATOR Contesto: 1) Si vuole decorare (ovvero migliorare, ovvero aggiungere funzionalità a) una classe componente 2) Un componente decorato può essere utilizzato nello stesso modo di uno normale 3) La classe componente non vuole assumersi la responsabilità della decorazione 4) L'insieme delle decorazioni possibili non è limitato 22

Pattern DECORATOR Soluzione: 1) Definire un'interfaccia (Component) che rappresenti un'astrazione di un componente 2) Le classi concrete che definiscono componenti implementano l'interfaccia Component 3) Definire una classe (Decorator) che rappresenta la decorazione 4) Un oggetto decoratore contiene e gestisce l'oggetto che decora 5) Un oggetto decoratore implementa l'interfaccia Component 6) Nel realizzare un metodo di Component, un oggetto decoratore applica il metodo corrispondente all'oggetto decorato e ne combina il risultato con l'effetto della decorazione 23

Diagramma del pattern DECORATOR 24

Applicazione del pattern DECORATOR 25

COMPOSITE vs DECORATOR 26

Pattern TEMPLATE METHOD Contesto: 1) Un algoritmo è applicabile a più tipi di dati 2) L'algoritmo può essere scomposto in operazioni primitive. Le operazioni primitive possono essere diverse per ciascun tipo di dato 3) L'ordine di applicazione delle operazioni primitive non dipende dal tipo di dato 27

Pattern TEMPLATE METHOD Soluzione: 1) Definire una superclasse che abbia un metodo che realizza l'algoritmo e un metodo per ogni operazione primitiva 2) Le operazioni primitive non sono implementate nella superclasse (metodi astratti), oppure sono implementate in modo generico 3) Ridefinire in ogni sottoclasse i metodi che rappresentano operazioni primitive, ma non il metodo che rappresenta l'algoritmo 28

Diagramma del pattern TEMPLATE METHOD 29

Applicazione del pattern TEMPLATE METHOD 30

Pattern FACTORY METHOD Contesto: 1)Un tipo (creatore) crea oggetti di altro tipo (prodotto) 2)Le sottoclassi del tipo creatore devono creare prodotti di tipi diversi 3)I clienti non hanno bisogno di sapere il tipo esatto dei prodotti 31

Pattern FACTORY METHOD Soluzione: 1)Definire un tipo per un creatore generico 2)Definire un tipo per un prodotto generico 3)Nel tipo creatore generico, definire un metodo (detto metodo fabbrica) che restituisce un prodotto generico 4)Ogni sottoclasse concreta del tipo creatore generico realizza il metodo fabbrica in modo che restituisca un prodotto concreto 32

Diagramma del pattern FACTORY METHOD 33

Applicazione del pattern FACTORY METHOD 34