Esercizi design patterns. Angelo Di Iorio,

Documenti analoghi
Ingegneria del Software

Modulo 16. Introduzione ai Design Patterns. Tutte le case assolvono alla medesima funzione: offrire uno spazio abitativo

INGEGNERIA DEL SOFTWARE

INSEGNAMENTO DI INGEGNERIA DEL SOFTWARE B (5 CFU) CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA a.a

Design Pattern. Ingegneria del Software parte II. Andrea Bei

An Introduction to Design Patterns

Ingegneria del Software L-A

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

UML. Il linguaggio UML e ArgoUML. Ingegneria dei sistemi software 2009/ /09/2009

design patterns e GRASP

I CAMBIAMENTI PROTOTESTO-METATESTO, UN MODELLO CON ESEMPI BASATI SULLA TRADUZIONE DELLA BIBBIA (ITALIAN EDITION) BY BRUNO OSIMO

SOMMARIO DESIGN PATTERN

SOMMARIO DESIGN PATTERN INTRODUZIONE AI DESIGN PATTERN INGEGNERIA DEL SOFTWARE. Introduzione. Cos è un design pattern. Cos è un design pattern

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

Finite Model Theory / Descriptive Complexity: bin

Principi di movimento di AIBO

LA SACRA BIBBIA: OSSIA L'ANTICO E IL NUOVO TESTAMENTO VERSIONE RIVEDUTA BY GIOVANNI LUZZI

Ingegneria Informatica A.A

ECCO LE ISTRUZIONI PER INSERIRE IL MATERIALE RICHIESTO DAL BANDO TEATRO SENZA FILO CONTEST:

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A I/O, thread, socket in Java

11. Riuso del software e CBSE

Analisi dei Requisiti, Progettazione Preliminare ed Esecutiva di Grandi Sistemi Ingegneristici: Casi di Studio

A review of some Java basics. Java pass-by-value and List<> references

A.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio

Customer Centric/Inquiry/E-bill. Tanya Enzminger

Il PROCESSO UNIFICATO

Corso Multimedia patterns aa Concetto di pattern. Responsabile: Prof.ssa Franca Garzotto Tutor: Dott.ssa Deborah Agostini

Puntatori :-) Lezioni. Ingegneria Del Software. Libri Consigliati. Libri Per Approfondimenti. E. Tramontana. Coprono tutto il programma del corso

Ingegneria del Software T

intensity brand identity guidelines Indice Il logo The logo Interazione con altri elementi grafici Use with other graphic elements

ESERCITAZIONE. Francesco Poggi A.A

Attraversamento di un albero (binario)

IM-IU v0.1. alternata e continua. pag. 1 / 5

Exam of ELECTRONIC SYSTEMS June 15 th, 2012 Prof. Marco Sampietro

Laboratorio di Progettazione di Sistemi Software UML per Design Patterns e Refactoring

Introduzione alla OOP Object Oriented Programming. Programmazione Orientata agli Oggetti

Introduzione alla OOP Object Oriented Programming

Estendere Lean e Operational Excellence a tutta la Supply Chain

Fiori di campo. Conoscere, riconoscere e osservare tutte le specie di fiori selvatici più note

CHIUSURE. cod cod MI

I livelli dei linguaggi. Introduzione alla OOP Object Oriented Programming. La programmazione procedurale separa il calcolo dalla memoria

Laboratorio di Sistemi Software UML per Design Patterns e Refactoring

Criteri di valutazione della prova scritta e orale per l esame di ammissione al Dottorato di Ricerca in Tecnologie Avanzate in Chirurgia (XXXIV ciclo)

Seminario di studi Mercato del Lavoro, disoccupazione e riforme strutturali

SYSTEM. brand identity guidelines. Indice. Il logo The logo. Interazione con altri elementi grafici Use with other graphic elements

Enel App Store - Installation Manual - Mobile

Sintesi della presentazione

INTRODUZIONE AD OMNET++

Progettazione ad Oggetti (OOD) e Pattern di progetto. Corso di Ingegneria del Software Anno Accademico 2012/2013

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

LEZIONE 5 SEQUENCE DIAGRAM

FEROX. brand identity guidelines. Indice. Il logo The logo. Interazione con altri elementi grafici Use with other graphic elements

Sistemi di Monitoraggio Monitoring Systems

Constant Propagation. A More Complex Semilattice A Nondistributive Framework

Ingegneria del Software 2014

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Il rapporto sui consumatori vulnerabili e la povertà energetica in Europa

Corso di Ingegneria del Software. Casi d uso

BASI LINGUAGGIO. Programmazione Web 1

Ingegneria del Software

visual modular expositor

PATTERN DECORATOR. Corso di Laurea Specialistica in Ingegneria Informatica Insegnamento di Ingegneria del Software B

introduzione al corso di ingegneria del software

my WORLD is brand identity guidelines Indice Il logo The logo Interazione con altri elementi grafici Use with other graphic elements

kubica design Motus lab

Corso di Algoritmi e Strutture Dati con Laboratorio. The JCF(continua): L interfaccia Map

UNIVERSITÀ DEGLI STUDI DI TORINO

How to use the verb Piacere.

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica. Programmazione orientata agli Oggetti

UML: Aggregazione. class A { int s; public void sets(int){ }; public int gets() { }; class B {A ob; public void usea() { }; }

Il pattern e le immagini utilizzate sono di proprietà dell autore MaryJ Handmade.

v i R3 30k Exam of ELECTRONIC SYSTEMS June 25 th, 2010 Prof. Marco Sampietro V out = V G = I D = + 10V - 1V

CLASS DIAGRAM PARTE 1

LA SACRA BIBBIA: OSSIA L'ANTICO E IL NUOVO TESTAMENTO VERSIONE RIVEDUTA BY GIOVANNI LUZZI

Combinazioni serie HL-MHL + MHL. Sono disponibili varie combinazioni tra e riduttori coassiali serie MHL (2 stadio).

Intelligenza Artificiale

Università degli Studi di Udine

Principi e schemi di progettazione object oriented (design pattern elementari)

Some reasoned reflections on the real difference between OO and structured development stuff derived from a class on OO testing

Technical Guidelines GON % Italian production. sports car oriented

Gocce d'anima (Italian Edition)

Fact Sheet Caratteristiche Tecniche

RDD 2. Laboratorio di Ingegneria del Software. Andrea Bei

Brandon Brown vuole un cane

WEB OF SCIENCE. COVERAGE: multidisciplinary TIME RANGE: DOCUMENT TYPES: articles, proceedings papers, books

Ingegneria del Software 2010

Activity Diagrams (lezione 3)

CABIN CREW TRAINING COMMUNICATION

SOMMARIO DIAGRAMMI DEI CASI D USO

Flusso di Progetto Mixed Signal in ambiente CADENCE. Approccio Analog Centric. Corso di Progettazione Mixed Signal 19/12/2013 Prof.

Arcadja Report Sebastiano Conca

UML come abbozzo. Introduzione all UML. UML come linguaggio x programmi. UML come progetto dettagliato

Canti Popolari delle Isole Eolie e di Altri Luoghi di Sicilia (Italian Edition)

Exam of DIGITAL ELECTRONICS June 14 th, 2012 Prof. Marco Sampietro

Laboratorio di Progettazione di Sistemi Software Introduzione

ESERCIZIO 1 Si faccia riferimento all Allegato A - OPS 2016, problema ricorrente REGOLE E DEDUZIONI, pagina 2.

Transcript:

Esercizi design patterns Angelo Di Iorio, diiorio@cs.unibo.it

Esercizio 1 Una parete, che contiene porte e finestre, deve essere dipinta con una vernice. Ogni barattolo contiene una data quantità di vernice, che permette di dipingere una data superficie. Rispondere alle domande: A chi assegnare la responsabilità di calcolare la quantità di vernice necessaria per una data superficie? A chi assegnare la responsabilità di calcolare la quantità di vernice necessaria per dipingere una parete?

Esercizio 2 Data la seguente rappresentazione UML di una tabella (es. HTML), a chi assegnare la responsabilità di creare una riga? E una cella? Le responsabilità cambierebbero se la Tabella fosse composta solo da celle, non organizzate in righe (la classe Riga non esiste)?

GRASP Creator Problem: Who should be responsible for creating a new instance of some class? Solution: Assign class B the responsibility to create an instance of class A if one or more of the following is true: B aggregates A objects B contains A objects B records instances of A objects B has the inizializing data passed to A when it is created

Esercizio 3 Si consideri il seguente dominio: Un Registro (Register) tiene traccia dei Pagamenti (Payment) Ogni Vendita (Sale) è associata a un insieme di Pagamenti A chi assegnare la responsabilità di creare un istanza di Pagamento? Disegnare un diagramma di comunicazione che descrive la soluzione data Utile partire dal diagramma delle classi

Classi di analisi

Problema? Soluzione 3.1

Soluzione 3.2 Contraddice il pattern Creator?

GRASP Low Coupling Problem: How to support low dependency, low change impact, and increased reuse? Solution: Assign a responsibility so that coupling remains low. (Coupling is a measure of how strongly one element is connected to, has knowledge of, or relies on other elements)

Quale preferire?

Esercizio 4 Si può progettare meglio questa classe, che modella un ascensore? Movimento ascensore Porte Allarme Log

Possibile soluzione Coesione? Ulteriore refactoring?

GRASP High Coesion Problem: How to keep complexity manageable? Solution: Assign a responsibility so that cohesion remains high. (cohesion, or more specifically functional cohesion, is a measure of how strongly related and focused the responsibilities of an element are.)

Interazione con il sistema Quali metodi rispondono ad eventi sollevati dall utente?

GRASP Controller Problem: Who should be responsible for handling an input system event? Solution: Assign the responsibility for receiving or handling a system event message to a class representing one of the following choices: Represents the overall system, device, or subsystem Represents a use case scenario within which the system event occurs

Controller Ascensore

Controller?

GRASP Controller (GoF Façade)

Esercizio 5: file system Come organizzare al meglio un diagramma delle classi (e relativo codice) per modellare un filesystem, in cui è possibile conoscere le dimensioni di ogni file e/o directory?

Composite Pattern Problema: creare una gerarchia di oggetti (elementari o contenitori) in cui il client usa allo stesso modo sia gli oggetti elementari che i contenitori

File system

Esercizio 6: Libro Disegnare una diagramma delle classi per modellare questo dominio: Un libro è composto da pagine, eventualmente organizzate in sezioni. Ogni sezione può contenere sezioni (una o più) e pagine semplici. E possibile stampare una pagina singola, una sezione o l intero libro.

Soluzione

Riferimenti E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object- Oriented Software. Addison-Wesley, 1994. Larman, Applying UML and patterns, Pearson 2005. Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates, first edition 2004. 24