L.Lista, V. Innocente Design P atterns Luca Lista, Vincenzo Innocente.

Slides:



Advertisements
Presentazioni simili
Il paradigma Object Oriented
Advertisements

“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.
Argomenti della lezione
Funzioni Friend Come abbiamo visto non possiamo accedere a membri privati di una classe dall'esterno della classe. Ma a volte abbiamo bisogno di farlo.
Unified Modeling Language
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Le gerarchie di tipi.
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
Ing. del software B Il Pattern Observer Simone Magnolini.
PATTERN DECORATOR Corso di Laurea Specialistica in Ingegneria Informatica Insegnamento di “Ingegneria del Software B” Ex presentazione realizzata dallo.
Ambiente di Invocazione Dinamica dei Servizi Enrico Mussi - WP2.
Introduzione al linguaggio C++ 5 lezioni
Introduzione al linguaggio Java
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.
Un’applicazione di Wiki in piattaforma moodle
© CEFRIEL Ricettario dei principali pattern GoF Docente: Gabriele Lombardi
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.
1 Ereditarietà Una classe può essere derivata da una classe esistente usando la sintassi: public, protected e private specificano il tipo di accesso ai.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Java Collections.
Pattern Abstract Factory
Introduzione allAnalisi e Design ad oggetti Luca Lista.
Introduzione alla programmazione Object Oriented
Il diagramma ER UNIFIED PROCESS – ELABORAZIONE 1 1.
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.
1Ingegneria Del Software L-A Progetto realizzato da: Luca Iannario, Enrico Baioni, Sara Sabioni. A.A. 2008/2009.
Obiettivi di Design Rappresentano, in un prodotto software, le basi del successivo sviluppo del prodotto, perché, su di esse, si fondano le scelte prese.
ANALYSIS & DESIGN I DESIGN PATTERNS GoF 1. I Design Patterns GoF …un momento importante durante il corso del design!
Ingegneria del software L-A. Introduzione Si richiede di realizzare il client di un sistema per la gestione della compravendita di oggetti allasta. Collegandosi.
Lazienda SC Informatica si occupa della progettazione e della realizzazione di sistemi informatici dedicati alle farmacie. Fornisce inoltre un servizio.
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.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 9 Tipi parametrici Collezioni generiche. Strutture matematiche parametriche.
Esercizi Design pattern
M V C Model View Controller.
Diagramma delle Classi
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
MCSA Mobile Code System Architecture Infrastruttura a supporto della code mobility Pierfrancesco Felicioni Reti di Calcolatori L.S. 2005/2006.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 4 - Progettazione del software Ernesto Damiani Università degli Studi.
Vincenzo Innocente1 Introduction to Object-Oriented Programming in C++ Vincenzo Innocente CERN, Geneva, Switzerland.
Compitino del 2004 Alberi Generici. Idea Si vuole un tipo di dato astratto che definisca una struttura ad albero in cui nodi e foglie hanno associato.
Cose nuove di Java (prima a chiacchiera, poi formalmente)
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.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 4 - Progettazione del software Ernesto Damiani Università degli Studi.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
Alex Marchetti Infrastruttura di supporto per l’accesso a un disco remoto Presentazione del progetto di: Reti di calcolatori L-S.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
Mots, programmazione collaborativa di Ettore Ferranti.
1Ingegneria Del Software L-A Progetto realizzato da: Luca Iannario, Enrico Baioni, Sara Sabioni. A.A. 2008/2009.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
Corso di Algoritmi e Strutture Dati con Laboratorio A.A. 2015/16 Oltre le classi.
NOTIFICHE  Notifich è una funzionalità interna al nostro sistema che permette di inviare brevi messaggi di notifiche agli utenti che porto.
Interazione Persona Computer prova di progetto Gruppo: IO Componenti: Carlo Solimando Sito analizzato:
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.
Interazione Persona Computer prova di progetto Gruppo: IO Componenti: Carlo Solimando Sito analizzato:
Tecniche di Problem-Solving
Transcript della presentazione:

L.Lista, V. Innocente Design P atterns Luca Lista, Vincenzo Innocente

L.Lista, V. Innocente Design Patterns “Elementi di software OO riutilizzabile” Piccoli insiemi di classi che collaborano implementando dei comportamenti tipici –Creational patterns –Structural patterns –Behavioral patterns Alcuni pattern classici stanno diventanto obsoleti grazie al supporto dei Template E. Gamma et al., Design Patterns

L.Lista, V. Innocente Factory I client possono richiedere la creazione di un prodotto senza dipendervi. La Factory dipende dai prodotti concreti, mentre i client dipendono solo AbstractProduct.

L.Lista, V. Innocente Singleton Il Singleton pattern piò essere usato ogni volta che una classe deve essere instanziata una sola volta, e viene usata da diversi oggetti. Per evitare istanziazione accidentale, il constructor deve essere privato. Più istanze, ma in numero ben determinato, possono esistere (multiton) Siccome vengono usate funzioni statiche, l’ereditarietà non può essere applicata. user_code() { Singleton::instance()->specificService(...); } user_code() { Singleton::instance()->specificService(...); }

L.Lista, V. Innocente Template Singleton Un Template Singleton può essere specializzato usando la classe stessa come argomento del template. Se V ha un constructor privato, Singleton deve essere friend di V (non tutti i compilatori lo supportano…). T class V : public Singleton { public: specificService(...); private: V(); friend class Singleton ; }; user_code() { V::instance()->specificService(...); } class V : public Singleton { public: specificService(...); private: V(); friend class Singleton ; }; user_code() { V::instance()->specificService(...); }

L.Lista, V. Innocente Proxy Una richiesta da un client a un server, può essere mediata dal Proxy, che può compiere anche altre operazioni (I/O, caching, etc.)

L.Lista, V. Innocente Composite Il client può trattare componenti e compositi usando la stessa interfaccia. La composizione può essere recursiva. Esempio: programmi di grafica vettoriale

L.Lista, V. Innocente Composite Shape Cerchio, Rettangolo,... draw( ) Shape draw( ) Gruppo draw( ) 1..* Client for c in all _children c->draw(); _children Nel nostro esempio di grafica con Shapes un gruppo può essere considerato un composito e le varie classi concrete sono le leaves.

L.Lista, V. Innocente Collection e Iterator Un iteratore permette più iterazioni indipendenti sulla stessa collezione. Questo sarebbe stato impossibile se l’iterazione fosse stato un servizio della collezione. Oggi, sia Collection che Iterator sono implementati come template classes (collezione “non intrusiva”).

L.Lista, V. Innocente Strategy Il pattern Strategy permette di scegliere l’algoritmo da eseguire a run-time. Nuovi algoritmi possono essere introdotti senza modificare i client.

L.Lista, V. Innocente Observer Lo stato dell’ Observer dipende dallo stato del Subject. Il Subject notifica a tutti gli Observer registrati che il suo stato è cambiato.

L.Lista, V. Innocente Template Method Un Template Method è un modo di garantire un comportamento comune. Le operazioni elementari sono delegate alle sottoclassi.

L.Lista, V. Innocente Visitor Permette di aggiungere nuove operazioni a Element senza modificarne l’interfaccia. Per aggiungere nuovi ConcreteElement, bisogna modificare tutti i Visitor s.