Iterator pattern - Step 0

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

INGEGNERIA DEL SOFTWARE INFORMATICA ARDIMENTO PASQUALE

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

Ingegneria del Software L-A

Design Patterns. Introduzione 2. Introduzione 3

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

Model View Controller

Ingegneria Informatica A.A

Programmazione orientata agli oggetti Classi astratte e interfacce

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

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

SOMMARIO DESIGN PATTERN

Esercizi design patterns. Angelo Di Iorio,

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

Informatica Interfacce Java

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

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

ESERCIZIO 1 (FILE DI TESTO)

La classe std::vector della Standard Template Library del C++

Programmazione template

Programmazione a Oggetti Metodologie di Programmazione 14 Maggio 2012

Lab 4: Design Patterns

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

La paninoteca. Mi resta da scrivere solo costo()

Refactoring. Refactoring. Perché Fare Refactoring. Refactoring

Sistemi Informativi. Marino Segnan introduzione 1

Laboratorio di Sistemi Software Progetto Pattern Generator Specifica iniziale

INGEGNERIA DEL SOFTWARE

Il PROCESSO UNIFICATO

Tecnologie Informatiche L-31. Corso di Ingegneria del software e Laboratorio di Ingegneria del software

FileInputStream read() read(byte[]) readint() DataInputStream FileInputStream EOFException

Eccezioni Precisazioni e approfondimenti

Caratteri Input da Console

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Corso Programmazione Java Standard

PIANO DI STUDIO DELLA DISCIPLINA DISCIPLINA: Informatica

Ingegneria del Software 2014

Laboratorio di Progettazione di Sistemi Software Design Patterns

Ingegneria del Software T

Interfaccia Comparable. Fondamenti di Informatica L-B Esercitazione n 5 Java: Comparable, Array. Come sfrutto Comparable?

OO design pattern. Design pattern: motivazioni

Software Engineering a.y " Introduzione ai pattern di design (parte 1)! Prof. Luca Mainetti! Università del Salento!

Esame Laboratorio di Programmazione

18 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce

Laboratorio di Matematica e Informatica 1

Calcolatrice in Java: esempi di DP

Esercitazione n 2. Obiettivi

Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei

Ingegneria del Software. Introduzione ai pattern

Calcolo su Polinomi ===================

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Programmazione ad oggetti

Marco Faella I pattern Template Method e Factory Method

JAVA GENERICS. Angelo Di Iorio Università di Bologna

Scope e visibilità per classi

Corso di Reti di Calcolatori L-A

Ingegneria del Software 2010

SOMMARIO. DIAGRAMMI DELLE CLASSI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova. Introduzione. Proprietà e Operazioni

ESERCIZIO 1 ESERCIZIO 1

Roberta Gori, Laura Semini Ingegneria del Software Dipartimento di Informatica Università di Pisa

Capitolo 7. Ingegneria del Software. Mauro Giacomini Pearson Addison-Wesley. All rights reserved

ESERCIZIO 1 (STRINGHE)

Lezione 15 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona

Multithreading in Java I parte. Lorenzo Gallucci

Implementazione dell albero binario in linguaggio C++

tipi di dato astratti

Seminario libreria STL

24 - Possibili approfondimenti

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte)

Programmazione Orientata agli Oggetti in Linguaggio Java

Informatica Ereditarietà Java. Ereditarietà

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Corso sul linguaggio Java

Corso di Ingegneria del Software. Informazioni sul corso

An Introduction to Design Patterns

Strutture dati: array & co.

Corso di Tecnologie Object Oriented. Programmazione in linguaggio Java

Esempio 2: Subtyping

Corso di Sviluppo di applicazioni Web

La Programmazione. Cos è la programmazione? Concetti preliminari

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010

Esercitazione sui Design Pattern. lunedì 29 aprile 13

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

Corso di Progettazione del Software

Sistemi Operativi. Processi e thread

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

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

INFORMATICA OOP Relazioni tra classi Roberta Gerboni

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010

Classi astratte Interfacce

Ingegneria del software - Esame del 10 febbraio 2004 Soluzione. Esercizio 1 (media 6,93 decimi)

Transcript:

Design Pattern

Riferimenti Gamma, Helm, Johnson & Vlissides (1994). Design Patterns (the Gang of Four book). Addison-Wesley. ISBN 0-201-63361-2 Steven J. Metsker. Design pattern in Java. Manuale pratico. Addison-Wesley Sandro Pedrazzini. Tecniche di progettazione agile con Java. Design pattern, refactoring, test. Tecniche Nuove. M. Fowler. UML Distilled Guida rapida al linguaggio di modellazione standard - terza edizione. Pearson Education Italia J.Cooper The Design Pattern Java Companion http://www.patterndepot.com/put/8/javapatterns.htm Wikibooks https://en.wikibooks.org/wiki/computer_science_design_pattern s

Iterator pattern - Step 0

Iterator pattern - Step 1

Iterator pattern - Step 2

Iterator pattern - Step 3

Iterator pattern - Step 4

Iterator pattern - UML

Altri Pattern Un semplice lettore di file di testo:

Una piccola modifica... E per l'output su altro file?

Altre richieste Output su stream qualsiasi Output tutto maiuscolo Output anche in ordine inverso Output con statistiche e altro... Output multiplo in contemporanea

Facciamo un po' d'ordine LettoreMain Seleziona input e ouput Copy Gestisce una List contenente tutte le righe del file La riempie grazie a LineReader La scrive grazie a LineWriter LineReader Legge le linee del file LineWriter Scrive tutte le righe

Main e Copy

LineReader e LineWriter

Prima richiesta Avere l'uscita su un altro stream Possiamo modificare lo Stream di uscita velocemente, cambiando il suo riferimento nella chiamata del costruttore di LineWriter. Esempio: new LineWriter (new PrintStream( output.txt ))

Seconda richiesta Vogliamo la possibilità di avere l'output formattato in una maniera particolare, ad esempio tutto maiuscolo Definiamo un'interfaccia che mostri il metodo String convert(string) Poi due classi che la implementano in modi diversi Possiamo utilizzare il pattern Strategy Strategy pattern: L'obiettivo di questa architettura è definire una famiglia di algoritmi, incapsulare ciascuno di essi e renderli intercambiabili a run-time.

Strategy pattern

Strategy pattern

Strategy pattern - UML

Terza richiesta Vogliamo la possibilità di avere l'output in ordine inverso delle righe rispetto al file di ingresso Possiamo creare un metodo getiterator astratto in LineWriter Poi due classi estendono LineWriter implementando tale metodo in modi diversi Possiamo utilizzare il pattern Template Template pattern: permette di definire la struttura di un algoritmo lasciando alle sottoclassi il compito di implementarne alcuni passi come preferiscono.

Template pattern

Template pattern - UML

Quarta richiesta Vogliamo la possibilità di avere in output anche alcune statistiche riguardo al file processato In generale, possiamo voler aggiungere funzionalità alle classi dopo la loro creazione Possiamo farlo con il pattern Decorator. Decorator pattern: consente di aggiungere nuove funzionalità ad oggetti già esistenti.

Decorator pattern

Decorator pattern

Decorator pattern - UML

Ultima richiesta Stampare l'output contemporaneamente su più destinazioni Creare una classe Broadcaster che contiene una lista di LineWriter. Avrà i metodi: void add(linewriter) Inoltre Broadcaster implements LineWriter e ridefinirà il metodo printalllines inserendo un ciclo che lo inoltra sulla lista di LineWriter Possiamo farlo con il pattern Observer

Observer