Esercizi design patterns. Angelo Di Iorio,

Похожие документы
Modulo 16. Introduzione ai Design Patterns. Tutte le case assolvono alla medesima funzione: offrire uno spazio abitativo

INGEGNERIA DEL SOFTWARE

Design Pattern. Ingegneria del Software parte II. Andrea Bei

Ingegneria del Software L-A

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

Finite Model Theory / Descriptive Complexity: bin

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

Ingegneria Informatica A.A

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

Il PROCESSO UNIFICATO

Ingegneria del Software T

ESERCITAZIONE. Francesco Poggi A.A

Attraversamento di un albero (binario)

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

Enel App Store - Installation Manual - Mobile

INTRODUZIONE AD OMNET++

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

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

Ingegneria del Software 2014

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Ingegneria del Software

visual modular expositor

introduzione al corso di ingegneria del software

kubica design Motus lab

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

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

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

Technical Guidelines GON % Italian production. sports car oriented

Gocce d'anima (Italian Edition)

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

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.

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

Транскрипт:

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