Esercizi Design pattern

Slides:



Advertisements
Presentazioni simili
“Niente di Nuovo” Mercatino dell’Usato
Advertisements

Informatica Recupero debito quarto anno Terzo incontro.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Java: programmazione concorrente con condivisione di memoria
Le gerarchie di tipi.
Gestione del processore
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Obiettivo della tesi Percorso
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.
Time Sharing Il termine “Time Sharing” proviene dall'inglese e significa letteralmente “partizione di tempo”. Questa è una tecnica sviluppatasi negli.
Scheduling in Linux (Kernel 2.6)
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
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.
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
© 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.
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
Design Pattern Observer INGEGNERIA DEL SOFTWARE Nicola Ferrari.
Architettura Java/J2EE
Java Collections.
Distributed File System Service Dario Agostinone.
Microsoft Windows Installazione, gestione ed utilizzo delle risorse Microsoft nella sezione INFN di BOLOGNA.
Gruppo Directory Services Rapporto dell'attivita' svolta - Marzo 2000.
La gestione automatica delle forniture telematiche
Modulo 1 - Hardware u.d. 3 (syllabus – 1.3.5)
GLI UFFICI APERTI AL PUBBLICO Canale Alfa Srl – Copyright 2013
Servizi Grid ed agenti mobili : un ambiente di sviluppo e delivering
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!
FASTVID RENTALS: CONCLUSIONI I PUNTI DI FORZA DEL PROGETTO, GLI SVILUPPI FUTURI 1.
Lazienda SC Informatica si occupa della progettazione e della realizzazione di sistemi informatici dedicati alle farmacie. Fornisce inoltre un servizio.
Reti di calcolatori LS Manni Tiziano  IT e nuovi scenari applicativi …  … portabilità dei dati …  … condivisione dati …  … disponibilità.
Threads.
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 Swing.
Oggetti in C# Lezione 1 Classi ed istanze Oggetti in C# - Lezione 1.
Docente: Simone Zambenedetti. Spiegazione dei Ruoli con successiva attribuzione di shortcut nella toolbar ed attribuzione dei permessi.
Università degli Studi di Napoli Parthenope programmazione III.
Corso JAVA Lezione n° 10 Istituto Statale di Istruzione Superiore “F. Enriques”
Incapsulamento e information hiding
Nemesi Creazione e pubblicazione di una rivista online tramite l’utilizzo di Java Message Service.
Programmazione ad oggetti
Laboratorio di Servizi Web - servlet - Ardissono 1 Java Servlet API package javax.servlet: include classi e interfacce di gestione di servlet indipendenti.
Diagramma delle Classi
1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
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.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 4 - Progettazione del software Ernesto Damiani Università degli Studi.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
MUSE 2 WIFI MUSic Everywhere with WIFI presentazione di Pierangeli Diego Membri del gruppo: Bambini Stefano Bergamini Andrea Pierangeli Diego AA 2006/2007.
PATTERN DECORATOR Corso di Laurea Specialistica in Ingegneria Informatica Corso Ingegneria del Software B A.A. 2008/2009 Alberto Feriotti Mat:
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
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.
1Ingegneria Del Software L-A Progetto realizzato da: Luca Iannario, Enrico Baioni, Sara Sabioni. A.A. 2008/2009.
31 ottobre Security Assessment per Cassa Centrale Analisi delle modalità di deployment di server e di postazioni utente. Simulazione di consulente.
NOTIFICHE  Notifich è una funzionalità interna al nostro sistema che permette di inviare brevi messaggi di notifiche agli utenti che porto.
Dal problema al programma – ciclo di sviluppo del software La scrittura del programma è solo una delle fasi del processo di sviluppo di un'applicazione.
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.
Data warehouse(B.2.8) Nei database ci sono molti dati di tipo diverso e ciascuna tipologia di dato può avere un formato diverso. Alcuni provengono da legacy.
Controlli. ActionSheet e Alert Selezionare un’azione In molte situazioni è necessario fornire all’utente una scelta fra varie azioni disponibili. per.
Tecniche di Problem-Solving
Transcript della presentazione:

Esercizi Design pattern

Singleton Permette la creazione di una sola istanza della classe all’interno dell’applicazione Fornisce un metodo con cui ottenere l’istanza Il costruttore della classe non deve essere accessibile

Singleton UML

Singleton: Implementazioni LazySingleton: Creare l’istanza solo quando serve vediamo

Singleton: Implementazioni LazySingleton: Creare l’istanza solo quando serve ATTENZIONE: NON THREAD-SAFE

Singleton: Implementazioni LazySingleton: Creare l’istanza solo quando serve ATTENZIONE: NON THREAD-SAFE SynchronizedLazySingleton vediamo

Singleton: Implementazioni LazySingleton: Creare l’istanza solo quando serve ATTENZIONE: NON THREAD-SAFE SynchronizedLazySingleton Può essere inefficiente nelle performance

Singleton: Implementazioni LazySingleton: Creare l’istanza solo quando serve ATTENZIONE: NON THREAD-SAFE SynchronizedLazySingleton Può essere inefficiente nelle performance EagerSingleton Eager inizialization: crea l’oggetto subito

Singleton: Implementazioni LazySingleton: Creare l’istanza solo quando serve ATTENZIONE: NON THREAD-SAFE SynchronizedLazySingleton Può essere inefficiente nelle performance EagerSingleton Eager inizialization: crea l’oggetto subito Può occupare memoria innecessaria

Singleton: Implementazioni LazySingleton: Creare l’istanza solo quando serve ATTENZIONE: NON THREAD-SAFE SynchronizedLazySingleton Può essere inefficiente nelle performance EagerSingleton Eager inizialization: crea l’oggetto subito Può occupare memoria innecessaria EnumSingleton vediamo

Singleton: Implementazioni LazySingleton: Creare l’istanza solo quando serve ATTENZIONE: NON THREAD-SAFE SynchronizedLazySingleton Può essere inefficiente nelle performance EagerSingleton Eager inizialization: crea l’oggetto subito Può occupare memoria innecessaria EnumSingleton Non può ereditare da altre classi

Factory Method Pattern Definisce un’interfaccia per la creazione di un oggetto. Lascia le sottoclassi decidere quali oggetti istanziare

Factory Method UML

Esercizio: Pizzerie Progettare il software per la preparazione e ordinazione di pizze. Installato in diverse pizzerie. Vediamo

Abstract Factory Fornire un’interfaccia per la creazione di famiglie di oggetti collegati. A differenza del Factory Method, una classe delega la responsabilità della creazione di un oggetto tramite composizione. Modifichiamo l’esercizio precedente. Gestione uniforme degli ingredienti.

Abstract Factory UML

Adapter Converte l’interfaccia di una classe in un’altra che il client si aspetta. Permette l’interazione tra classi con interfacce incompatibili.

Adapter UML

Esempio: Iterator e Enumeration Le antiche versioni delle collections in Java non avevano l’interfaccia iterator con I metodi: hasNext() next() remove Esisteva solo l’interfaccia Enumeration con i metodi: hasMoreElements() nextElement()

Esercizio1 Utilizzare codice nuovo nei vecchi sistemi legacy. Implementare un adapter IteratorToEnumerationAdapter da Iterator a Enumeration. Implementare un LegacyClient che usa IteratorToEnumerationAdapter

Esercizio 2 Utilizzare codice legacy nei nuovi sistemi Implementare un adapter EnumerationToIteratorAdapter da Enumeration a Iterator. Implementare un NewClient che usa EnumerationToIteratorAdapter

Proxy Il proxy pattern espone un oggetto in rappresentanza di un altro. Ne controlla l’accesso: Ad es. per motivi di sicurezza

Proxy UML

Esercizio 3 Aggiungere alla logica applicativa una cache per migliorare l’efficienza nella risposta alle richieste degli utenti L’interfaccia della cache non cambia rispetto a quella della logica vera e propria

Note L’utilizzo del proxy non richiede nessuna modifica nel client che lo deve utilizzare Altri esempi di proxy sono le versioni unmodifiable delle collections In quel caso i metodi sono re-implementati per inibire le operazioni di modifica

Decorator Permette di aggiungere funzionalità ad un oggetto Il nuovo comportamento può essere aggiunto a run time Non richiede la creazione di nuove sottoclassi

Decorator UML

Esercizio 4 Scrivere una applicazione per rappresentare diversi tipi di caffè con diversi ingredienti Potremmo fare diverse sottoclassi, ma ne dovremmo fare troppe La soluzione delle sottoclassi non permetterebbe di aggiungere nuovi ingredienti a run time

Note Un approccio simile è usato nelle classi per l’input/output di Java: stream, writer, reader Oltre a modificare il comportamento è possibile anche aggiungere nuovi comportamenti Decorator è simile a Proxy, ma permette di comporre diversi comportamenti

Pattern comportamentali

Strategy Permette di variare gli algoritmi utilizzati nell’implementazione della classe La classe base richiede una strategia esterna per portare a termine correttamente il suo compito L’abbiamo visto con l’ordinamento che richiede la sua strategia di comparazione tra una coppia di elementi 23/05/2014

Strategy UML

Esercizio Scrivere il codice per rappresentare un robot che può avere diverse strategie per gestire il suo comportamento Vogliamo fare sì che i comportamenti possano cambiare mentre la nostra applicazione è in esecuzione

Observer Definisce una dipendenza 1  molti tra oggetti. Quando un oggetto cambia stato, tutti gli oggetti dipendenti sono notificati e aggiornati automaticamente.

Observer UML

Esercizio: Stazione Meteo Progettare un sistema per il monitoraggio del Meteo. Si ha a disposizione l’oggetto WeatherData che fornisce temperatura, umidità, pressione. Implementare tre diversi display (condizione attuale, previsioni, e statistiche). Il sistema deve essere espandibile per supportare nuovi display.