Due slides sui Design Patterns Luciano Pandola INFN-LNGS Corso INFN su C++, ROOT e Geant4.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

“Niente di Nuovo” Mercatino dell’Usato
Informatica Recupero debito quarto anno Terzo incontro.
1 Semantica Operazionale di un frammento di Java: lo stato.
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
MultiSet, Liste Ordinate
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti.
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
Corso di Laurea Triennale in Ingegneria Informatica Corso di Sistemi Informativi A. A Marina Mongiello Ingegneria del software 1 Design pattern.
Fondamenti di Informatica
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.
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
Programma Dott. Ing. Leonardo Rigutini
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
1 Introduzione ai design pattern. 2 Cosa sono i design pattern I problemi incontrati nello sviluppare grossi progetti software sono spesso ricorrenti.
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
L.Lista Design P atterns Luca Lista. L.Lista Design Patterns Elementi di software OO riutilizzabile Piccoli insiemi di classi che collaborano implementando.
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Approfondimento delle classi
Concetti di Object Orientation
© CEFRIEL Ricettario dei principali pattern GoF 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. ( )
1 Ereditarietà Una classe può essere derivata da una classe esistente usando la sintassi: public, protected e private specificano il tipo di accesso ai.
Architettura Java/J2EE
Introduzione alla modellazione di sistemi interattivi
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
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
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!
IMPLEMENTAZIONE TECNOLOGIE:HIBERNATE & JAVA RMI.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
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.
Esercizi Design pattern
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Diagramma delle Classi
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
Davide Cerbo - - JUG Roma Nicola Raglia - - JUG Roma The Hitchhiker's Guide to testable code semplici regole.
OBJECT ORIENTED DATABASE introduzione. OGGETTO Ha due componenti:  stato: valore di alcune variabili (variabili di istanza)  comportamento: insieme.
L.Lista, V. Innocente Design P atterns Luca Lista, Vincenzo Innocente.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 4 - Progettazione del software Ernesto Damiani Università degli Studi.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 4 - Progettazione del software Ernesto Damiani Università degli Studi.
Liste di Interi Esercitazione. IntList Lista di interi Una lista è una disposizione ordinata di elementi ( non in modo crescente-descrescente, ma per.
1 Gerarchie e polimorfismo: liste. 2 Generalizzare le liste di interi  List 4 lista di oggetti –non modificabile 4 vorremo poi definire un sottotipo.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
Esercitazione del 7 marzo 2008 Ereditarieta’. Esercizio: soluzione Implementare la seguente specifica che definisce un tipo di dato Libro.
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.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
Ese 1 e 3 (del 6 Aprile 2005). Primo Ese Si identifichino gli errori che il compilatore segnalerebbe per il seguente programma Tipi Legami tra dichiarazioni.
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.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
Corso di Algoritmi e Strutture Dati con Laboratorio A.A. 2015/16 Oltre le classi.
Introduzione alle Classi e agli Oggetti in Java 1.
Blackbelt keypunchers
Tecniche di Problem-Solving
Transcript della presentazione:

Due slides sui Design Patterns Luciano Pandola INFN-LNGS Corso INFN su C++, ROOT e Geant4

Design Patterns Ciascun ”design pattern” (schema di progettazione) individua, spiega e risolve un problema di design ricorrente in sistemi object-oriented Un design pattern può essere definito "una soluzione progettuale generale a un problema ricorrente" non è una libreria, quanto piuttosto una descrizione o un modello da applicare per risolvere un problema che può presentarsi in diverse situazioni durante la progettazione e lo sviluppo del software Gamma, Helm, Johnson and Vlissides, Design Patterns, Addison-Wesley 1995, ISBN (Gang-of-Four)

Design Patterns Nel libro sono descritti 23 tipi di design pattern, suddivisi in 3 categorie: strutturali, creazionali e comportamentali. Creazionali nascondono i costruttori delle classi e mettono dei metodi al loro posto creando un'interfaccia Strutturali Consentono di utilizzare degli oggetti esistenti fornendo agli utilizzatori un'interfaccia più adatta alle loro esigenze Comportamentali forniscono soluzione alle più comuni tipologie di interazione tra gli oggetti

Lista dei design patterns Abstract Factory Adapter Bridge Builder Chain of Responsibility Command Composite Decorator Facade Factory Method Flyweight Interpreter Iterator Mediator Memento Observer Prototype Proxy Singleton State Strategy Template Method Visitor Usato in applicazioni Geant4

Singleton (“singoletto”) Design Pattern per assicurare che una classe abbia una e una sola istanza nel corso di un’esecuzione Il costruttore è privato  non si può creare direttamente un’istanza della classe Utile quando c’è bisogno di avere di gestire risorse comuni, condivise da più parti diverse del programma (“classe globale”) Logging, gestione database Gestione analisi (Geant4) Accumulo di energia, booking istogrammi, etc.

L’intefaccia fornisce anche un punto di accesso univoco alla classe metodo Get() (pubblico e statico) che restituisce l’unica istanza ammissibile della classe Il Getter è anche responsabile di creare l’istanza, la prima volta che è chiamato Singleton (“singoletto”)

Implementazione di un singleton - definizione class Analysis { public: static Analysis* GetInstance() ; virtual ~Analysis() {}; private: Analysis(); static Analysis* singleton; }; Analysis* Analysis::GetInstance(){ if ( singleton == NULL ) singleton = new Analysis(); return singleton; } Costruttore privato Unica istanza Interfaccia pubblica Restituisce l’unica istanza (creandola, se ancora non esiste)

Utilizzo di un singleton Possibile da dovunque nel programma e nelle altre classi #include “Analysis.hh” … Analysis* theAnalysis = new Analysis(); Analysis* theAnalysis = Analysis::GetInstance(); theAnalysis->CallAMethod(…) No: costruttore privato OK È sempre la stessa istanza (da dovunque chiamata)