Design Principle. immagini da SOLID Motivational Posters, by Derick Bailey

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

Design patterns in Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Progettazione! Progettazione! Progettazione! Progettazione!

design pattern una soluzione progettuale generale a un problema ricorrente

Progettazione : Design Pattern Creazionali

Esercitazione sui Design Pattern

Programmazione Orientata agli Oggetti in Linguaggio Java

Ingegneria del Software. Introduzione ai pattern

Laboratorio di Progettazione di Sistemi Software Progetto: modellazione di un dominio e sue attività

Ingegneria del Software

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

10. Design Patterns. Andrea Polini. Ingegneria del Software Corso di Laurea in Informatica. (Ingegneria del Software) 10. Design Patterns 1 / 36

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Alcuni Design Pattern in Java

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A Design Pattern E.

CORSO DI PROGRAMMAZIONE JAVA

SOMMARIO DIAGRAMMI DEI PACKAGE

Principi di progettazione agile

DESIGN PATTERN STRUTTURALI INGEGNERIA DEL SOFTWARE INTRODUZIONE ADAPTER. Scopo Convertire l interfaccia di una classe in un altra.

Il calcolatore. Architettura di un calcolatore (Hardware)

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

Corso di Ingegneria del software Como. Prof. Marco Brambilla. Cruscotto auto. Aramini Antonio Umberto

Se un oggetto A aggrega oggetti B allora avrà informazioni su di loro

Guida Metodologica Pattern Architetturali Java

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

Design Patterns e Idiomi Java

Ingegneria del Software 1: Eclipse

Laboratorio di Sistemi Software Design Patterns 1

Studio di casi basati su design patterns. Prof. Paolo Ciancarini! Corso di Ingegneria del Software! CdL Informatica! Università di Bologna

PSICOMETRIA. Esercitazione n.1. C.d.L. Comunicazione e Psicologia a.a. 2012/13

Domain- Driven Design Giovedì, 21 giugno 2012 Speaker: Manuel Scapolan

Partiamo con un primo esempio Analizziamo la homepage. L Header. Livia Giacomini (livia.giacomini@iaps.inaf.

IL SITO ISTITUZIONALE DELLA SCUOLA ITIS E. MATTEI - URBINO MANUALE D USO

The Hitchhiker's Guide to testable code

Abstract Data Type (ADT)

Gestione risorse (Windows)

CONSIDERAZIONI SUL SISTEMA DI GESTIONE DELL UTENSILERIA PER LE AZIENDE MANIFATTURIERE METALMECCANICHE

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Design Patterns. fonti: [Gamma95] e [Pianciamore03] Autori: Giacomo Gabrielli, Manuel Comparetti

Lezione 6 Le pile. Informatica. 28 Aprile 2016

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

Le aree dell informatica

Algoritmi per suddividere il testo in righe in un editor di testo

Il codice generato automaticamente da NetBeans

CAPITOLO V. DATABASE: Il modello relazionale

Via Oberdan, 42, Faenza (RA) Italy Tel.: Fax: WAVE MODE MOBILE GUIDA RAPIDA

progettare buone gerarchie

Esercizio 1. Esercizi 5. Esercizio 3. Esercizio 2 CICLI

Programmazione Orientata agli Oggetti in Linguaggio Java

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

Laboratorio software. A.A C. Brandolese

Ingegneria del Software. Introduzione al pattern

Moduli Bluetooth 03 - connessione seriale via BT

Avete capito fino in fondo il concetto di nodo fine flusso? Che differenza c e tra fine flusso e fine attività? MODEL DIFFERENCES AND EVOLUTION

Glossario icone software

Cosa è importante: pom.xml Goal Plug-in Repository

L organizzazione dei documenti nei sistemi multimediali

Grafici e Pagina web

ASP.NET MVC: non solo «tennologgia»

Corso Analista Programmatore Java Corso Online Analista Programmatore Java

Sul pattern Decorator

Programmazione Java Avanzata Spring - JDBC

Corso analista programmatore Java. Corso analista programmatore Java Programma

Mobile Programming. Prova scritta del 22/01/2016. Prof. De Prisco. Corso di laurea in Informatica

Automazione Industriale 4- Ingegneria del Software

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2014/2015. Ancora Phone Plan

GoF s Design Patterns in Java

Come usare la piattaforma StartUp

In un modello a strati il SO si pone come un guscio (shell) tra la macchina reale (HW) e le applicazioni 1 :

INTRODUZIONE. Data Base Management Systems evoluzione tecniche gestione dati

Release MOVIO SCMS. Versione Tutorial. Commenti Dichiarazione di copyright

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

Files in C++ Fondamenti di Informatica. R. Basili. a.a

Analisi. Calcolo Combinatorio. Ing. Ivano Coccorullo

UML Diagrammi delle classi. UML Diagramma classi 1

INTRODUZIONE ALLE BASI DATI RELAZIONALI

Progettazione orientata agli oggetti

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

DESIGN PATTERNS Parte 5. Facade Strategy Composite Interpreter

Elementi di UML (3) Università degli Studi di Bologna Facoltà di Scienze MM. FF. NN. Corso di Laurea in Scienze di Internet Anno Accademico

Presentazione del software Grouper per la gestione dei privilegi di gruppo in un contesto di Single Sign On, a cura del Gruppo di lavoro VOs del CTS

Manuale d uso DropSheep 4 imaio Gestione Pixmania-PRO Ver 1.1

WINDOWS Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni

Pattern software. [SAP] Chapter 13, Architectural Tactics and Patterns

design patterns e GRASP

ISTITUTO COMPRENSIVO LUCCA 2

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

Programmazione a Oggetti Modulo B

L uso delle tecnologie informatiche per il trattamento dell informazione e della comunicazione archivistica

Rappresentazione della Conoscenza. Lezione 10. Rappresentazione della conoscenza, D. Nardi, 2004, Lezione 10 0

Utilizzare il NetBeans GUI Builder. Dott. Ing. M. Banci, PhD

Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA

Programmi e Oggetti Software

Progetto B. Utenti. Di conseguenza si potranno avere solo utenti di questi tipi

Quick Print. Quick Print. Guida Utente. Copyright 2013 Hyperbolic Software.

BrightSync: progetto di un middleware di sincronizzazione per ambienti eterogenei

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

PROGETTAZIONE E SVILUPPO DI UN. Relatore: Studente: Paolo Merialdo Valerio Barbagallo

Il comando provoca il salvataggio dello stato e la terminazione dell esecuzione.

Transcript:

Design Pattern

Design Principle immagini da SOLID Motivational Posters, by Derick Bailey

Single Responsibility Principle

Single Responsibility Principle A class should have only one reason to change.

Open Close Principle

Open Close Principle Le entità del software (le classi, i moduli e le funzioni) devono essere aperte all estensione e chiuse alle modifiche

Liskov s Substitution Principle

Liskov s Substitution Principle I tipi derivati devono essere totalmente sostituibili ai rispettivi tipi base.

Interface Segregation Principle

Interface Segregation Principle Nessun utilizzatore deve dipendere da metodi che non usa. Interfacce grandi devono essere spezzettate in interfacce più piccole e specifiche.

Dependency Inversion Principle

Dependency Inversion Principle I moduli di alto livello non devono dipendere direttamente dai moduli di basso livello. Entrambi devono dipendere da delle astrazioni. Le astrazioni non devono dipendere i dettagli. I dettagli devono dipendere dalle astrazioni.

Design Pattern Pattern creazionali: riguardano il processo di creazione di oggetti Pattern strutturali: hanno a che fare con la composizione di classi ed oggetti Pattern comportamentali: Si occupano di come interagiscono gli oggetti e distribuiscono fra loro le responsabilità

Pattern creazionali Abstract Factory: Crea una istanza tra diverse famiglie di classi Factory Method: Crea un istanza tra diverse classi derivate Singleton: Una classe che può avere una singola istanza Prototype: Un istanza totalmente inizializzata per essere copiata o clonata Builder: Separa la costruzione di un oggetto dalla sua rappresentazione

Factory method pattern

Abstract factory pattern

Singleton pattern

Esercizio 1 Implementare un gioco contenente un labirinto. Il labirinto deve essere composto da locali, porte e muri. Ogni locale ha quattro pareti, nord sud est ovest che possono essere occupati da un muro o da una porta. Deve essere possibile anche creare un tipo di labirinto bombato, dove ogni 3 porte viene creata una porta bombata.

Esercizio 2 Deve essere possibile creare labirinti di vario tipo. Per esempio un labirinto incantato deve contenere dei locali incantati, delle porte parlanti, etc... Un labirinto esterno contiene delle porte in sasso (per aprire tale porte è necessario avere una determinata energia).

Esercizio 3 Non deve essere possibile creare istanze differenti del LabirintoMagicoCreator e del LabirintoEsternoCreator. Per ottenere vari labirinti verrà chiamato diverse volte il metodo createlabirinto che ritornerà istanze diverse della classe Labirinto, ma senza avere istanze diversi dei due creatori.

Pattern Strutturali Adapter: Adatta le interfacce di classi diverse Bridge: Separa l interfaccia di un oggetto dalla sua rappresentazione Composite: Una struttura ad albero di oggetti semplici e composti Decorator: Aggiunge dinamicamente comportamenti ad oggetti Facade: Un unica classe che rappresenta un intero sottosistema Flyweight: Condivide dati uguali tra oggetti dello stesso tipo Proxy: Un oggetto che rappresenta un altro oggetto

Pattern Comportamentali Chain of Responsibility: Un modo di passare una richiesta in una catena di oggetti Command: Incapsula un comando di richiesta come un oggetto Interpreter: Un modo di includere elementi del linguaggio in un programma Iterator: Accede in sequenza agli elementi di una collezione Mediator: Definisce una semplice interfaccia di comunicazione tra classi Memento: Salva e ripristina lo stato interno di un oggetto Observer: Un modo per notificare un cambiamento a un numero di classi State: Cambia il comportamento di un oggetto in base al cambiamento di stato Strategy: Incapsula un algoritmo all interno di una classe Template Method: Delega l implementazione di alcuni passi di un algoritmo a una sottoclasse Visitor: Aggiunge una nuova operazione ad una classe senza cambiarla

Esercizio 4 Vogliamo sviluppare una applicazione che permetta l utilizzo di diverse tecnologie di comunicazione, evitando il più possibile duplicazioni di codice come possiamo strutturare la nostra applicazione? supponiamo per esempio di avere la nostra logica che ci consente di eseguire un set di operazione action(a), action(b) e action(c); come possiamo supportare un client che utilizza dei comandi specificati per mezzo di Stringhe o vari tipi di comunicazione?

Adapter pattern

Esercizio 5 Immaginiamo di implementare un social network. Data una specifica persona vorremmo mostrare come potenziali amici" gli amici degli amici degli amici. Come possiamo implementarla in maniera efficace?

Proxy pattern

Esercizio 6 Scrivere un applicazione per rappresentare diversi tipi di caffè con diversi ingredienti. Per esempio, vorremmo aggiungere del caramello, del whisky, dello zucchero, a richiesta.

Decorator pattern

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

Strategy pattern

Esercizio 8 Progettare un sistema per il monitoraggio del Meteo: si ha a disposizione l oggetto WeatherData che fornisce temperatura, umidità, pressione implementare tre diversi tipi di display che mostrano condizione attuale, previsioni e statistiche il sistema deve essere espandibile per supportare nuovi display

Observer pattern