© 2010 - CEFRIEL Ricettario dei principali pattern GoF Docente: Gabriele Lombardi

Slides:



Advertisements
Presentazioni simili
Il paradigma Object Oriented
Advertisements

This information is confidential and was prepared by Sleipner solely for the use of our client; it is not to be relied on by any 3rd party without Sleipner.
“Niente di Nuovo” Mercatino dell’Usato
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Unified Modeling Language
Visual Studio Tools For Office 2005 Fabio Santini. NET Senior Developer Evangelist Microsoft Italy.
Struttura dellinterfaccia SBN2 Mauro Narbone Udine 20 Aprile 2006.
29 febbraio 2008 Progettare tipi di dato astratti.
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Le gerarchie di tipi.
Metodologie di Programmazione = decomposizione basata su astrazioni
1 Metodologie di Programmazione. 2 Contenuto generale §tecniche per la programmazione orientata ad oggetti (in piccolo) §esemplificate utilizzando il.
Principi di Programmazione Object-Oriented
Principi di Programmazione Object-Oriented
PATTERN DECORATOR Corso di Laurea Specialistica in Ingegneria Informatica Insegnamento di “Ingegneria del Software B” Ex presentazione realizzata dallo.
Verification of object-oriented programs with invariants by M. Barnett, R. DeLine, M. Fähndrich, K.R.M. Leino, W. Schulte Bordignon Claudio Zampieron Elisa.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Introduzione al linguaggio Java
Architetture e protocolli CCITTComunicazione: trasferimento di informazioni secondo convenzioni prestabilite La comunicazione richiede cooperazione.
1 Introduzione ai design pattern. 2 Cosa sono i design pattern I problemi incontrati nello sviluppare grossi progetti software sono spesso ricorrenti.
L.Lista Design P atterns Luca Lista. L.Lista Design Patterns Elementi di software OO riutilizzabile Piccoli insiemi di classi che collaborano implementando.
Overriding.
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
Primi esempi di interfacce grafiche con Android
Concetti di Object Orientation
Docente: Gabriele Lombardi
© CEFRIEL Cenni su XML in Java Docente: Gabriele Lombardi
© CEFRIEL Alcune API di base nel JDK J2SE Docente: Gabriele Lombardi
© CEFRIEL Java: il linguaggio Docente: Gabriele Lombardi
© CEFRIEL Concorrenza (cenni) Docente: Gabriele Lombardi
1 Le gerarchie di tipi. 2 Supertipi e sottotipi 4 un supertipo –class –interface 4 può avere più sottotipi –un sottotipo extends il supertipo ( class.
1 laboratorio di calcolo II AA 2003/04 nona settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
Design Pattern Observer INGEGNERIA DEL SOFTWARE Nicola Ferrari.
Java base IV: Java e la programmazione O.O.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Pattern Abstract Factory
Analisi dei requisiti di un'applicazione
Introduzione alla programmazione Object Oriented
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
1Ingegneria Del Software L-A Progetto realizzato da: Luca Iannario, Enrico Baioni, Sara Sabioni. A.A. 2008/2009.
1Ingegneria Del Software L-A Progetto realizzato da: Luca Iannario, Enrico Baioni, Sara Sabioni. A.A. 2008/2009.
ANALYSIS & DESIGN I DESIGN PATTERNS GoF 1. I Design Patterns GoF …un momento importante durante il corso del design!
IMPLEMENTAZIONE TECNOLOGIE:HIBERNATE & JAVA RMI.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
Lazienda SC Informatica si occupa della progettazione e della realizzazione di sistemi informatici dedicati alle farmacie. Fornisce inoltre un servizio.
I nomi in Java F. Bombi 18 novembre novembre 2003.
1 cin>>c8 s.r.l A.A Generalità Uno dei concetti largamente adottati negli ultimi anni dai professionisti del software in fase di sviluppo.
Esercizi Design pattern
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
L.Lista, V. Innocente Design P atterns Luca Lista, Vincenzo Innocente.
MCSA Mobile Code System Architecture Infrastruttura a supporto della code mobility Pierfrancesco Felicioni Reti di Calcolatori L.S. 2005/2006.
Extension pack per IIS7 Piergiorgio Malusardi IT Pro Evangelist
PATTERN DECORATOR Corso di Laurea Specialistica in Ingegneria Informatica Corso Ingegneria del Software B A.A. 2008/2009 Alberto Feriotti Mat:
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
1 Metodologie di Programmazione = decomposizione basata su astrazioni.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
1 Metodologie di Programmazione §tecniche per la programmazione orientata ad oggetti §esemplificate utilizzando il linguaggio Java §testo di riferimento.
Esercitazione sull’ ordinamento 20 maggio 2003
1Ingegneria Del Software L-A Progetto realizzato da: Luca Iannario, Enrico Baioni, Sara Sabioni. A.A. 2008/2009.
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
NOTIFICHE  Notifich è una funzionalità interna al nostro sistema che permette di inviare brevi messaggi di notifiche agli utenti che porto.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Due slides sui Design Patterns Luciano Pandola INFN-LNGS Corso INFN su C++, ROOT e Geant4.
Introduzione alle Classi e agli Oggetti in Java 1.
Il tesoro dei sette mari
Tecniche di Problem-Solving
Transcript della presentazione:

© CEFRIEL Ricettario dei principali pattern GoF Docente: Gabriele Lombardi

© CEFRIEL The present original document was produced by CEFRIEL and the Teacher for the benefit and internal use of this course, and nobody else may claim any right or paternity on it. No right to use the document for any purpose other than the Intended purpose and no right to distribute, disclose, release, furnish or disseminate it or a part of it in any way or form to anyone without the prior express written consent of CEFRIEL and the Teacher. © copyright Cefriel and the Teacher-Milan-Italy-23/06/2008. All rights reserved in accordance with rule of law and international agreements.

© CEFRIEL Sommario SLIDECONTENUTO Creazionali Pattern di creazione di nuove istanze Strutturali Pattern di strutturazione dati/comunicazione Comportamentali Gestione del comportamento negli algoritmi

© CEFRIEL Creazionali: Singleton Scopo: –istanza singola di una classe (es.: registry); –rispetto a soli metodi statici permette di sfruttare polimorfismo e altri pattern creazionali (factory, …). Ingredienti: –costruttore privato (sparisce quello di default); –attributo statico privato per mantenere lunica istanza; –factory method getInstance per lazy-evaluation.

© CEFRIEL Creazionali: Factory Method Scopo: –generazione di una istanza da metodo statico; –utilizzo di strutture dati statiche durante la creazione; es.: per implementare il riciclo di istanze; Ingredienti: –costruttore privato (impedisce listanziazione diretta); –metodi statici di restituzione di istanze.

© CEFRIEL Creazionali: Abstract Factory Scopo: –disaccoppiare le classi che istanziano da quelle che scelgono e configurano le istanze; –eventualmente astrarre la natura delle istanze; Ingredienti: –classe target da istanziare; –classe astratta con factory method non statico; –classi concrete che implementano al factory; –eventualmente costruttore superclasse factory; –eventualmente gerarchia classe target.

© CEFRIEL Creazionali: Builder Scopo: –fornire uno strumento trasparente per la creazione di oggetti complessi (composti da più parti); Ingredienti: –classe composta e parti componenti; –classe builder con metodi di: –creazione delle parti; –creazione dellistanza usando le parti precedenti; –eventuale hiding di costruttori e classi delle parti.

© CEFRIEL Creazionali: Prototype Scopo: –fornire un meccanismo per generare istanze da prototipi (es.: tramite loro clonazione); Ingredienti: –metodo di istanza per la generazione di unaltra istanza della stessa classe (o sottoclasse); –eventuale costruttore nascosto al client; –eventuali parametri aggiuntivi nel factory method.

© CEFRIEL Strutturali: Adapter Scopo: –adattare unimplementazione a una gerarchia diversa; –nascondere il reale implementor delloperazione; Ingredienti: –gerarchia astrazione; –classe adapter che implementante lastrazione; –istanza dellimplementor nelladapter; –operazioni delegate allimplementor; –eventuale codice di adattamento semantico.

© CEFRIEL Strutturali: Composite Scopo: –comporre ad albero elementi semplici e composti; –si pensi a oggetti grafici e gruppi di oggetti grafici; Ingredienti: –gerarchia di astrazione; –classe aderente alla gerarchia composta con elementi della stessa (dellinterfaccia/superclasse astratta); –operazioni delegate agli elementi della composizione.

© CEFRIEL Strutturali: Decorator Scopo: –decorare il comportamento di una classe concreta; –rendere tale differenza trasparente al client; Ingredienti: –gerarchia di astrazione; –sottoclasse della classe da decorare (Leaf); –operazioni delegate alla superclasse concreta… –…successivamente modificate con codice aggiuntivo.

© CEFRIEL Strutturali: Facade Scopo: –mostrare un punto di accesso semplice a un pacchetto dalle operazioni complesse; –nascondere complessi dettagli di collaborazione; Ingredienti: –una classe che accede al contenuto del pacchetto; –operazioni semanticamente semplici orchestranti le classi presenti allinterno del pacchetto.

© CEFRIEL Comportamentali: Command Scopo: –isolare una funzionalità dai suoi punti di accesso; –astrarre il concetto di operazione eseguibile; Ingredienti: –classe astratta o interfaccia Command; –metodo astratto di esecuzione come contratto.

© CEFRIEL Comportamentali: Iterator Scopo: –iterare sugli elementi di una struttura dati senza conoscere i dettagli della struttura stessa; Ingredienti: –interfaccia di astrazione del concetto di iterazione; –astrazione di struttura dati che supporta literatore; –strutture dati implementanti tale astrazione.

© CEFRIEL Comportamentali: Observer Scopo: –consentire lastrazione della notifica di eventi; –disaccoppiare chi genera levento da chi lo riceve; Ingredienti: –interfaccia di notifica dellevento (ricevente); –ascoltatori che la implementano; –classe di generazione degli aggiornamenti.

© CEFRIEL Comportamentali: Template Method Scopo: –creare una gerarchia di classi in cui varia solamente una funzionalità, senza dover replicare codice; –astrarre una parte di una classe usata da sé stessa; Ingredienti: –classe astratta con metodo astratto (protetto); –sottoclassi implementanti quel metodo.

© CEFRIEL Comportamentali: Strategy Scopo: –astrarre un algoritmo facendo sì la sua scelta avvenga a run-time (criteri vari, es.: efficienza); Ingredienti: –interfaccia/classe astratta rappresentante lalgoritmo; –classi implementanti in concreto lalgoritmo stesso.

© CEFRIEL Da qui? Abbiamo visto solamente un assaggio: –i design pattern GoF non sono solo questi; –molti altri design pattern esistono in letteratura; –costruire architetture usando i design pattern richiede esperienza oltre che profonda comprensione; –esistono altri strumenti come smell e antipattern; –tecniche di refactoring vengono utilizzate per trasformare unarchitettura in unaltra migliore. Letteratura? –Design Patterns della Gang of Four; –Refactoring di Fowler; –Patterns of Enterprise Applications Architecture, Fowler.