Ingegneria del Software. Introduzione al pattern



Documenti analoghi
Ingegneria del Software. Introduzione ai pattern

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

Ingegneria del Software. Presentazione del pattern Proxy

Progettazione : Design Pattern Creazionali

Programmazione Orientata agli Oggetti in Linguaggio Java

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

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

Alcuni Design Pattern in Java

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

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

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A Class Discovery E.

7. Architetture Software

Lezione V. Aula Multimediale - sabato 29/03/2008

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Architetture Applicative

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

Oggetti Lezione 3. aspetti generali e definizione di classi I

Programmazione a Oggetti Lezione 10. Ereditarieta

Object Oriented Software Design

Design patterns in Java

Soluzione dell esercizio del 2 Febbraio 2004

design patterns e GRASP

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011.

Identificare le classi in un sistema

Socket & RMI Ingegneria del Software - San Pietro

Una metodologia per la specifica di software basato su componenti

Programmazione Orientata agli Oggetti in Linguaggio Java

Telematica II 17. Esercitazione/Laboratorio 6

YOUR EASY SOLUTION FOR COSTING

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

Introduzione alla Progettazione per Componenti

IL SISTEMA SMART RESPONSE

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

IL MIO PRIMO SITO: NEWS

Generazione Automatica di Asserzioni da Modelli di Specifica

Programmazione a Oggetti Modulo B

Modello di Controllo dell Accesso basato sui ruoli (RBAC)

Presentazione di Cedac Software

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

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

ProSky Progettare una facciata continua non è mai stato così semplice.

Elementi di UML (7): Diagrammi dei componenti e di deployment

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

Protezione. Protezione. Protezione. Obiettivi della protezione

Distributed Object Computing

La specifica del problema

Corso di Amministrazione di Reti A.A. 2002/2003

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Il linguaggio di specifica formale Z

Programmazione A.A Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII)

Introduzione all uso di Eclipse

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

ITIS Mattei Sondrio. Appunti veloci su moodle versione 2.7

Università di Roma La Sapienza, Facoltà di Ingegneria

Introduzione ai Web Services Alberto Polzonetti

L isola del futuro. Guida per l insegnante

La progettazione centrata sull utente nei bandi di gara

Corso di Programmazione e Controllo SEDE DI FANO

Software di gestione della stampante

Concetti di base di ingegneria del software

Database. Si ringrazia Marco Bertini per le slides

Gestione premi clienti e fornitori Corso di formazione e approfondimento

Progettaz. e sviluppo Data Base

ALF0021M MANUALE UTENTE MODULO "SETUP"

Come usare P-touch Transfer Manager

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

Adobe Volume Licensing

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema

Modulo 4: Ereditarietà, interfacce e clonazione

Corso su LINQ Lezione 16. Introduzione

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

Analisi dei Requisiti

Linee guida per il Comitato Tecnico Operativo 1

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

IL BROKER DELLA LOGISTICA

Tecnologie dei Linguaggi di Programmazione

Programmazione Java Avanzata Spring - JDBC

DESIGN PATTERN ESERCITAZIONE PREPARAZIONE ALL ESAME, PARTE II INGEGNERIA DEL SOFTWARE. La soluzione corretta è la c)

Modellazione dei dati in UML

I NUOVI MODELLI ORGANIZZATIVI E TECNOLOGICI A SUPPORTO DELL EFFICIENZA AZIENDALE

Brochure Internet. Versione The Keyrules Company s.r.l. Pagina 2 di 8

Estensioni e modelli. Ancora poco conosciuti, consentono di estendere la suite per l ufficio. Ecco come servirsene

La progettazione dell interfaccia HCI. Fabio Vitali

SOMMARIO DIAGRAMMI DEI PACKAGE

Inizializzazione, Assegnamento e Distruzione di Classi

Una soluzione che guarda oltre l archiviazione documentale

POLITICA DI COESIONE

Ciclo di vita del software: strumenti e procedure per migliorarne la sicurezza. Roberto Ugolini roberto.ugolini@postecom.it

Guida Joomla. di: Alessandro Rossi, Flavio Copes

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Architetture a oggetti distribuiti

Il modello Entity-Relationship: pattern di progettazione

L evoluzione del mosaico digitale

Transcript:

Ingegneria del Software Introduzione al pattern 1

Esempio introduttivo (1/3) Si pensi ad un modello di oggetti che rappresenta gli impiegati (Employee) di una azienda. Tra gli impiegati esistono, ad esempio, gli Ingegneri (Engineer) che implementano le operazioni definite per gli impiegati, secondo le proprie caratteristiche. [GoF s Design Patterns in Java di Franco Guidi Polanco] Esempio introduttivo (2/3) Il sistema comprende la possibilità di assegnare agli impiegati delle responsabilità: - un impiegato può diventare capoufficio (Administrative Manager) - ad un impiegato può essere assegnata la direzione di un progetto (Project Manager) Le responsabilità non sono esculenti tra di loro e possono essere assegnate più volte. Questi cambiamenti di tipologia di alcuni impiegati coinvolgono modifiche delle responsabilità definite per gli oggetti, alterandone le esistenti o aggiungendone nuove. 2

Esempio introduttivo (3/3) Esempio di risultato atteso: E interessante definire un modo per aggiungere, ed eventualmente rimuovere, dinamicamente nuove responsabilità ad un oggetto specifico di tipo Employee. Presentazione del pattern Decorator 3

Il pattern Decorator (1/15) Nome Decorator [GoF95], conosciuto anche con il nome di pattern Wrapper. Synopsis Il pattern Decorator estende dinamicamente le funzionalità di un oggetto in maniera trasparente ai suoi client. GoF sintetizza il pattern Decorator in questo modo: Attach additional responsabilities to an object dinamically. Decorators provide a flexible alternative to subclassing for extending functionality Il pattern Decorator (2/15) Context Rispetto all esempio introduttivo: - Employee, specifica l interfaccia degli impiegati a cui possono essere assegnate responsabilità dinamicamente - Engineer, implementa la classe di impiegati a cui possono essere affidate responsabilità - ResponsibleWorker, possiede il riferimento ad un oggetto Employee e ne implementa l interfaccia - AdministratorManager e ProjectManager aggiungono nuove responsabilità all Employee <<interface>> 4

Il pattern Decorator (3/15) Code example <<interface>> Il pattern Decorator (4/15) <<interface>> 5

Il pattern Decorator (5/15) <<interface>> Il pattern Decorator (6/15) 6

Il pattern Decorator (7/15) Il pattern Decorator (8/15) 7

Il pattern Decorator (9/15) Il pattern Decorator (10/15) Project Manager Project Manager Client Usa oggetti di tipo Employee Administrative Manager Engineer 8

Il pattern Decorator (11/15) Forces - E necessario estendere le funzionalità di una classe, ma ci sono ragioni per non farlo attraverso l ereditarietà - E necessario aggiungere ed eventualmente rimuovere dinamicamente funzionalità ad un oggetto Il pattern Decorator (12/15) Solution: Gli attori sono: - AbstractServiceIF Specifica l interfaccia degli oggetti a cui possono essere aggiunte funzionalità dinamicamente -ConcreteService Implementa la classe a cui possono essere aggiunte funzionalità - AbstractWrapper Possiede il riferimento ad un oggetto di tipo AbstractServiceIF e ne implementa l interfaccia - ConcreteWrapperX Aggiungono nuove responsabilità al ConcreteService 9

Il pattern Decorator (13/15) Consequences - A differenza dell ereditarietà, che determina la natura di tutte le istanze di una classe staticamente, il pattern Decorator permette di alterare dinamicamente ed individualmente il comportamento di oggetti aggiungendo e rimuovendo wrapper - Usando differenti combinazioni di pochi tipi di wrapper è possibile ottenere molti comportamenti diversi. Utilizzando l ereditarietà è possibile ottenere lo stesso risultato solo estendendo una classe per ogni comportamento Il pattern Decorator (14/15) - L estrema flessibilità degli oggetti wrapper può essere fonte di errore (combinazioni sbagliate, riferimenti circolari, ecc.) - Rispetto all ereditarietà utilizzare il pattern Decorator implica: - Usare meno classi (progettazione e implementazione semplificata) - Usare più oggetti (debugging più difficoltoso) 10

Il pattern Decorator (15/15) Implementation Nessuna informazione indispensabile Java API usage Pattern molto utilizzato quando si lavora con GUI (cfr. The Design Pattern di JAMES W. COOPER) Related Patterns Delegation Strategy Template Method - Filter Il pattern Filter è una versione specializzata di pattern Decoration specializzato nella manipolazione di Stream di dati. Indizio: InputStream, BufferedReader, Domande? 11