Design Patterns. Introduzione 2. Introduzione 3

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Design Patterns. Introduzione 2. Introduzione 3"

Transcript

1 Design Patterns Introduzione Design patterns: factory, singleton, adapter, composite, decorator, observer Introduzione I Design Patterns sono stati applicati per la prima volta nell architettura Per costruire una casa non si parte dalle leggi fisiche, ma si utilizzano soluzioni già consolidate I Design Patterns cercano di applicare ad un nuovo problema una soluzione classica La soluzione classica è disponibile e può essere applicata senza troppi sforzi Introduzione 2 I Design Patterns vennero applicati per la prima nel campo dell informatica da Gamma, Helm, Vlissides e Johnson Un Design Pattern è formato da: Contesto in cui si presenta il problema che vogliamo risolvere classica per il problema che stiamo affrontando Introduzione 3 I Design Patterns vengono classificati in funzione del problema che risolvono Creazionali, creazione di oggetti Strutturali, organizzazione degli oggetti e loro composizione Comportamentali, come cambiare il comportamento dell applicazione con minime modifiche del codice

2 Design Patterns Creazionali Factory, Singleton Strutturali Adapter, Composite, Decorator Comportamentali Observer Osservazioni Non vengono presentati tutti i Design Patterns, ma solo quelli più conosciuti ed utilizzati Alcuni Design Patterns verranno definiti utilizzando interfacce. In questo caso, le interfacce potranno eventualmente essere sostituite da classi astratte. Factory : Voglio creare degli oggetti con caratteristiche comuni La creazione degli oggetti non deve essere controllata direttamente dall applicazione : L applicazione delega la creazione degli oggetti ad una classe detta Factory Factory - Esempio Un applicazione gestisce documenti I documenti possono essere di due tipi Solo testo Testo con figure I documenti esportano un interfaccia comune Quando l applicazione recupera un vecchio documento, delega la sua creazione a DocumentFactory DocumentFactory si occuperà di stabilire se il documento è solo testo o testo con figure e, di conseguenza, creerà il documento

3 Esempio Class Diagram Application Document DocumentFactoryInterface TextDocument FigureDocument DocumentFactory Singleton Una classe può essere istanziata solo una volta L applicazione utilizza questa istanza in diversi punti dell applicazione Ottengo la reference all oggetto tramite il metodo statico getinstance Il costruttore della classe è privato, quindi nessun oggetto può istanziare questa classe. L unica istanza di questa classe viene creata all interno di getinstance Esempio public class SingletonEsempio { private SingletonEsempio x; private SingletonEsempio() { public static SingletonEsempio getinstance() { if (x==null) { x= new SingletonEsempio(); return x; Adapter Voglio utilizzare la classe X già disponibile all interno della mia applicazione La classe X utilizza un interfaccia non compatibile con la mia applicazione Al posto di riscrivere o modifica la classe X, definisco una nuova classe, detta Adapter, che modifica l interfaccia esporta dalla classe X

4 Esempio La mia applicazione visualizza a video delle figure geometriche e del testo Le figure geometriche esportano la stessa interfaccia. L applicazione può accedere a queste figure sempre nello stesso modo Tradurre un testo come un immagine è un compito fatico Decido di utilizzare una classe che trasforma un testo in un immagine Questa classe però non esporta l interfaccia desiderata Definisco una classe, detta Adapter, che modifica l interfaccia esportata Esempio Class Diagram Shape Line Box TextViewAdapter TextView Composite -1 Un oggetto della mia applicazione può contenere al suo interno un numero indefinito di oggetti a lui simili. A sua volta, gli oggetti contenuti possono contenere altri oggetti La struttura degli oggetti cosi creata è ad albero Questa struttura può essere ripetuta infinite volte Quando invoco un operazione su un oggetto, voglio che questa sia invocata a cascata su tutti gli oggetti contenuti La struttura ad albero degli oggetti è dinamica e non statica Composite - 2 Tutti gli oggetti esportano la stessa interfaccia Quando viene chiamato un metodo su un oggetto, lo stesso metodo viene chiamato anche su tutti gli oggetti contenuti Individuo due tipi di oggetti: Composite, possono contenere altri oggetti Leaf, non possono contenere altri oggetti Leaf Component Composite

5 Esempio AWT di Java Component Label Button Container Add() Decorator Voglio aggiungere dinamicamente delle funzioni ad una classe con ereditarietà Ad ogni ereditarietà definisco una nuova funzione L ordine con cui vengono applicare le funzioni è cablato all interno del codice e non può essere modificato Decorator con Design Pattern Le funzionalità di una classe vengono estese in maniera trasparente usando una sotto classe che delega le proprie operazioni alla classe originaria ConcreateComponent ConcreateDecoratorA Component Decorator ConcreateDecoratorB Esempio InputStream Voglio applicare diverse funzioni ad un flusso di dati in ingresso Decriptazione Controllo sulla correttezza dei dati Bufferizzare i dati in ingresso La sorgente dei dati può essere di diverso tipo File Socket

6 Esempio Class Diagram Esempio FileInputStream ChiperInputStream InputStream FilterInputStream CheckedInputStream InputStream in; in = FileInputStream( c:/prova.txt ); in = new CheckedInputStream(in, ); in= new ChiperInputStream(in, ); in= new BufferedInputStream(in); BufferedInputStream Observer Voglio ricevere una notifica quando cambia un oggetto o un insieme di oggetti Definisco due classi astratte Observer è colui che osserva Observable è l oggetto osservato Quando un Observable viene modificato, chiama un metodo della classe Observer per notificare il cambiamento Esempio Trasferimento Canzoni Observer Observable update( ) add( ) Transfer Stream

Il pattern decorator. L21_DecoratorPattern 1

Il pattern decorator. L21_DecoratorPattern 1 Il pattern decorator L21_DecoratorPattern 1 Il pattern decorator Problema affrontato: aggiungere comportamenti e caratteristiche dinamicamente ad una classe, in maniera alternativa all'ereditarietà, non

Dettagli

Esercitazione sui Design Pattern. lunedì 29 aprile 13

Esercitazione sui Design Pattern. lunedì 29 aprile 13 Esercitazione sui Design Pattern Pattern Creazionali Singleton Permette la creazione di una sola istanza della classe all interno dell applicazione Fornisce un metodo con cui ottenere l istanza Il costruttore

Dettagli

Laboratorio di Progettazione di Sistemi Software Design Patterns

Laboratorio di Progettazione di Sistemi Software Design Patterns TITLE Laboratorio di Progettazione di Sistemi Software Design Patterns Valentina Presutti (A-L) Riccardo Solmi (M-Z) 1 Indice degli argomenti Tipi di Design Patterns Creazionali Strutturali Comportamentali

Dettagli

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

Design Principle. immagini da SOLID Motivational Posters, by Derick Bailey 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

Dettagli

Object Oriented Design Patterns: Decorator

Object Oriented Design Patterns: Decorator Object Oriented Design Patterns: Decorator Francesco De Rose, matr. 60180 Università degli Studi di Brescia Corso di Laurea Specialistica in Ingegneria Informatica Insegnamento di Ingegneria del Software

Dettagli

Iterator pattern - Step 0

Iterator pattern - Step 0 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.

Dettagli

Lab 4: Design Patterns

Lab 4: Design Patterns Dept. of Computer Science Lab 4: Design Patterns Matteo Camilli matteo.camilli@unimi.it http://camilli.di.unimi.it Progettazione del Software a.a. 2014/15 1 La Saga delle Anatre 1) Creiamo interfaccia

Dettagli

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

Design Patterns. fonti: [Gamma95] e [Pianciamore03] Autori: Giacomo Gabrielli, Manuel Comparetti Design Patterns fonti: [Gamma95] e [Pianciamore03] Autori: Giacomo Gabrielli, Manuel Comparetti 1 Definizione Ogni pattern descrive un problema che si presenta frequentemente nel nostro ambiente, e quindi

Dettagli

Esercitazione sui Design Pattern

Esercitazione sui Design Pattern Esercitazione sui Design Pattern Pattern Creazionali Singleton Permette la creazione di una sola istanza della classe all interno dell applicazione Fornisce un metodo con cui ottenere l istanza Il costruttore

Dettagli

Diagramma delle classi

Diagramma delle classi Diagramma delle classi Questo diagramma (mostrato nella pagina successiva) costruito utilizzando lo standard UML mostra le relazioni che ci sono fra le varie classi della nostra applicazione, mostrando

Dettagli

Classi ed Oggetti. Fondamenti di Informatica A-K

Classi ed Oggetti. Fondamenti di Informatica A-K Classi ed Oggetti Fondamenti di Informatica A-K Esercitazione 5 Introduzione al calcolatore e Java Linguaggio Java, basi e controllo del flusso I metodi: concetti di base Stringhe ed array Classi e oggetti,

Dettagli

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

PATTERN DECORATOR. Corso di Laurea Specialistica in Ingegneria Informatica Insegnamento di Ingegneria del Software B PATTERN DECORATOR Corso di Laurea Specialistica in Ingegneria Informatica Insegnamento di Ingegneria del Software B Ex presentazione realizzata dallo studente Alberto Feriotti nell a.a. 2008/2009 1 CLASSIFICAZIONE

Dettagli

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

Progettazione ad Oggetti (OOD) e Pattern di progetto. Corso di Ingegneria del Software Anno Accademico 2012/2013 Progettazione ad Oggetti (OOD) e Pattern di progetto Corso di Ingegneria del Software Anno Accademico 2012/2013 1 Progettazione ad oggetti (OOD) L OOA identifica e definisce le classi e gli oggetti che

Dettagli

Anno Scolastico

Anno Scolastico Anno Scolastico 2018-19. PROGRAMMA DIDATTICO CONSUNTIVO CLASSE _4Ei Disciplina _Prof.Paolo Tomelleri Prof.Marco Tornieri Informatica Al fine di predisporre correttamente le prove per la sessione differita,

Dettagli

I Metodi. Fondamenti di Informatica A-K

I Metodi. Fondamenti di Informatica A-K I Metodi Fondamenti di Informatica A-K Esercitazione 3 Introduzione al calcolatore e Java Linguaggio Java, basi e controllo del flusso I metodi: concetti di base Stringhe ed array Classi e oggetti, costruttori,

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Design Pattern: Pattern nelle API di Java versione 1.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima

Dettagli

SOMMARIO DESIGN PATTERN

SOMMARIO DESIGN PATTERN INTRODUZIONE AI DESIGN PATTERN INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2014 2015 rcardin@math.unipd.it 2 DESIGN PATTERN

Dettagli

Fondamenti di informatica T-1 (A K) Esercitazione 9: array

Fondamenti di informatica T-1 (A K) Esercitazione 9: array Fondamenti di informatica T-1 (A K) Esercitazione 9: array AA 2018/2019 Tutor Lorenzo Rosa lorenzo.rosa@unibo.it 2 Esercitazione 9 Introduzione al calcolatore e Java Linguaggio Java, basi e controllo del

Dettagli

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

Some reasoned reflections on the real difference between OO and structured development stuff derived from a class on OO testing Ingegneria del SW - ottobre 2013 Some reasoned reflections on the real difference between OO and structured development stuff derived from a class on OO testing Enrico Vicario Dipartimento di Ingegneria

Dettagli

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

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo Design Pattern L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo sviluppo dei programmi, il loro mantenimento,

Dettagli

Il pattern FACTORY è un pattern di tipo Creazionale secondo la classificazione della GoF I pattern di tipo creazionali si occupano della costruzione

Il pattern FACTORY è un pattern di tipo Creazionale secondo la classificazione della GoF I pattern di tipo creazionali si occupano della costruzione Il pattern Factory Il pattern FACTORY è un pattern di tipo Creazionale secondo la classificazione della GoF I pattern di tipo creazionali si occupano della costruzione degli oggetti e delle problematiche

Dettagli

11. Riuso del software e CBSE

11. Riuso del software e CBSE 11. Riuso del software e CBSE Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 11. Riuso del software e CBSE 1 / 38 Sommario 1 Riuso 2 Approcci 3 CBSE Componenti

Dettagli

La paninoteca. Mi resta da scrivere solo costo()

La paninoteca. Mi resta da scrivere solo costo() La paninoteca Mi resta da scrivere solo costo() La paninoteca Usiamo l ereditarietà per definire dei Panini particolari Ci sono alcuni tipi di pane Estendendo Panino scrivo meno codice Nell esempio eredito

Dettagli

Laboratorio di Sistemi Software Progetto Pattern Generator Specifica iniziale

Laboratorio di Sistemi Software Progetto Pattern Generator Specifica iniziale TITLE Laboratorio di Sistemi Software Progetto Pattern Generator Specifica iniziale Luca Padovani (A-L) Riccardo Solmi (M-Z) 1 Definizione del problema Pattern Generator Libreria Java per definire dei

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe/array Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

JAVA - I/O System. Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita:

JAVA - I/O System. Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita: JAVA - I/O System Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita: 1. InputStream: Flusso di byte in ingresso. Con questa classe

Dettagli

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi OOP in C++ Classi e Oggetti Una classe èuntipochehavariabili ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi Una variabile ab di un tipo

Dettagli

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili Riuso di classi Spesso si ha bisogno di classi simili Si vuole cioè riusare classi esistenti per implementare attributi e metodi leggermente diversi Non è pratico copiare la classe originaria e modificarne

Dettagli

Inizializzare oggetti

Inizializzare oggetti Inizializzare oggetti Uso della Classe Software per TLC - AA 2008/2009 1 Costruttori e polimorfismo Uso della Classe Un codice migliore Software per TLC - AA 2008/2009 2 Costruttori ed Ereditarietà Output:

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA5 A1.1 Awt e contenitori 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Elementi di un interfaccia grafica 2 1 Introduzione Iniziamo lo studio

Dettagli

La classe java.lang.object

La classe java.lang.object La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita

Dettagli

Il pattern ABSTRACT FACTORY

Il pattern ABSTRACT FACTORY Il pattern ABSTRACT FACTORY Abstract Factory L intento è quello di fornire una interfaccia per creare famiglie di oggetti in relazione o dipendenti tra loro, senza dovere specificare le loro classi concrete.

Dettagli

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

SOMMARIO DESIGN PATTERN INTRODUZIONE AI DESIGN PATTERN INGEGNERIA DEL SOFTWARE. Introduzione. Cos è un design pattern. Cos è un design pattern INTRODUZIONE AI DESIGN PATTERN INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica, A.A. 2011 2012 2 rcardin@math.unipd.it DESIGN PATTERN

Dettagli

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

Laboratorio di Progettazione di Sistemi Software UML per Design Patterns e Refactoring TITLE Laboratorio di Progettazione di Sistemi Software UML per Design Patterns e Refactoring Valentina Presutti (A-L) Riccardo Solmi (M-Z) 1 Indice degli argomenti Introduzione alla notazione UML I diagrammi

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

Poiché è necessario che le selezioni si aggiornino automaticamente, occorre che queste siano notificate di ogni cambiamento pattern observer! Altro?

Poiché è necessario che le selezioni si aggiornino automaticamente, occorre che queste siano notificate di ogni cambiamento pattern observer! Altro? Processo di Sviluppo Design Requisiti del cliente Analisi del Dominio Analisi dei Rischi (Parziale) Analisi dei Requisiti Casi d uso Scenari Diagramma statico delle classi Design Ingegneria del Software

Dettagli

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il

Dettagli

Model View Controller

Model View Controller Model View Controller Ingegneria del Software B Università degli Studi di Brescia Pattern Architetturali Concetti caratterizzanti l architettura di un software Separazione di più alto livello in parti

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma

Dettagli

INGEGNERIA DEL SOFTWARE

INGEGNERIA DEL SOFTWARE DIPARTIMENTO DI INGEGNERIA ELETTRICA ELETTRONICA E INFORMATICA Corso di laurea magistrale in Ingegneria informatica Anno accademico 2016/2017-1 anno INGEGNERIA DEL SOFTWARE 9 CFU - 1 semestre Docente titolare

Dettagli

Il problema è trovare un modo nel quale gli eventi dell oggetto di riferimento, siano comunicati a tutti gli altri interessati.

Il problema è trovare un modo nel quale gli eventi dell oggetto di riferimento, siano comunicati a tutti gli altri interessati. Observer 129 19. Observer (GoF pag. 293) 19.1. Descrizione Consente la definizione di associazioni di dipendenza di molti oggetti verso di uno, in modo che se quest ultimo cambia il suo stato, tutti gli

Dettagli

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

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi

Dettagli

«fornire un'interfaccia per la creazione di famiglie di oggetti correlati o dipendenti senza specificare quali siano le loro classi concrete» (GoF)

«fornire un'interfaccia per la creazione di famiglie di oggetti correlati o dipendenti senza specificare quali siano le loro classi concrete» (GoF) Introduzione Abstract Factory è creazionale e basato su oggetti ovvero, la creazione degli oggetti è delegata alle istanze di apposite classi Scopo: «fornire un'interfaccia per la creazione di famiglie

Dettagli

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

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi

Dettagli

oggetti, permettono di ridurre i costi di sviluppo, poiché cercano di riusare insiemi di classi e di produrre sistemi più facili da evolvere.

oggetti, permettono di ridurre i costi di sviluppo, poiché cercano di riusare insiemi di classi e di produrre sistemi più facili da evolvere. Lo sviluppo di sistemi orientati agli oggetti mira a descrivere un software nelle sue diverse fasi (analisi, progettazione, codifica) in termini di classi. Tali sistemi sono documentati focalizzando sulle

Dettagli

Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

Autore: Prof. Agostino Sorbara ITIS M. M. Milano Polistena (RC) con questo nome si indica in genere un pezzo di programma, dotato di una propria identità: un modulo, ad esempio, potrebbe essere l insieme di alcune funzioni C, o Pascal, che risiedono in un unico file

Dettagli

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

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali DESIGN PATTERN CREAZIONALI DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2013 2014 rcardin@math.unipd.it

Dettagli

Programmazione visuale

Programmazione visuale Programmazione visuale La classe DisplayObject DisplayObject AVM1Movie Bitmap InteractiveObject MorphShape Shape StaticText Video DisplayObjectContainer SimpleButton TextField Loader Sprite Stage MovieClip

Dettagli

Definisce un interfaccia per creare oggetti, ma lascia alle sottoclassi la decisione del tipo di classe a istanziare.

Definisce un interfaccia per creare oggetti, ma lascia alle sottoclassi la decisione del tipo di classe a istanziare. Factory Method 22 3. Factory Method (GoF pag. 107) 3.1. Descrizione Definisce un interfaccia per creare oggetti, ma lascia alle sottoclassi la decisione del tipo di classe a istanziare. 3.2. Esempio Si

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Design Pattern: Storia Parte b versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

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

Design Principle. immagini da SOLID Motivational Posters, by Derick Bailey 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

Dettagli

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

10. Design Patterns. Andrea Polini. Ingegneria del Software Corso di Laurea in Informatica. (Ingegneria del Software) 10. Design Patterns 1 / 36 10. Design Patterns Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 10. Design Patterns 1 / 36 Problemi Ci focalizziamo nelle problematiche riguardanti la

Dettagli

Configurazione di una vs. Laboratorio di sistemi interattivi. Dal modello formale all implementazione

Configurazione di una vs. Laboratorio di sistemi interattivi. Dal modello formale all implementazione Laboratorio di sistemi interattivi Lezione 10: Dal modello formale all implementazione General Course Information 1 Dal modello formale all implementazione Interprete universale del formalismo possibile

Dettagli

PIANO DI STUDIO DELLA DISCIPLINA DISCIPLINA: Informatica

PIANO DI STUDIO DELLA DISCIPLINA DISCIPLINA: Informatica ISIS C. Facchinetti Sede: via Azimonti, 5-21053 Castellanza Tel. 0331 635718 fax 0331 679586 info@isisfacchinetti.gov.it https://isisfacchinetti.gov.it PIANO DI STUDIO DELLA DISCIPLINA Rev. 1.1 del 26/07/17

Dettagli

PROVA FINALE Ingegneria del software

PROVA FINALE Ingegneria del software PROVA FINALE Ingegneria del software Jody Marca jody.marca@polimi.it Laboratorio N 2 Cosa faremo oggi 2 Javadocs Uso del debugger Input Output Serializzazione degli oggetti Javadoc 3 Javadoc è uno strumento

Dettagli

Ingegneria del Software B. Il pattern Observer. Ex presentazione realizzata dallo studente Davide Ferrari nell a.a. 2009/2010

Ingegneria del Software B. Il pattern Observer. Ex presentazione realizzata dallo studente Davide Ferrari nell a.a. 2009/2010 Ingegneria del Software B Il pattern Observer Ex presentazione realizzata dallo studente Davide Ferrari nell a.a. 2009/2010 Observer Noto anche come Publish(er)-Subscribe(r), Dependents, Delegation Event

Dettagli

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

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami

Dettagli

INFORMATICA OOP Relazioni tra classi Roberta Gerboni

INFORMATICA OOP Relazioni tra classi Roberta Gerboni 2015 - Roberta Gerboni Relazione di associazione E possibile legare varie classi presenti in un progetto con una relazione di associazione. Una associazione individua una connessione logica tra classi

Dettagli

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Catia Trubiani. Laboratorio di Ingegneria del Software a.a Università degli Studi dell Aquila Laboratorio di Ingegneria del Software a.a. 2013-2014 Catia Trubiani Dipartimento di Ingegneria e Scienze dell'informazione e Matematica (DISIM) - Università degli Studi

Dettagli

Tipi riferimento e stringhe

Tipi riferimento e stringhe Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 8 Tipi riferimento e stringhe A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Tipi riferimento e stringhe 1

Dettagli

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

Lezione 15 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona Lezione 15 programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Approfondimenti della programmazione OO Il modificatore abstract Le classi

Dettagli

Laboratorio di Tecnologie dell'informazione

Laboratorio di Tecnologie dell'informazione Laboratorio di Tecnologie dell'informazione Ing. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Presentazione del corso Orario Mercoledì: 10:15-13:15, aule 113+114 Giovedì: 14:00-17:00,

Dettagli

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

INSEGNAMENTO DI INGEGNERIA DEL SOFTWARE B (5 CFU) CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA a.a INSEGNAMENTO DI INGEGNERIA DEL SOFTWARE B (5 CFU) CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA a.a. 2010-2011 Docenti Marina Zanella Orario ricevimento (S2): martedì 11:30-12:45 venerdì 9:45-10:30

Dettagli

Laboratorio di Sistemi Software UML per Design Patterns e Refactoring

Laboratorio di Sistemi Software UML per Design Patterns e Refactoring TITLE Laboratorio di Sistemi Software UML per Design Patterns e Refactoring Luca Padovani (A-L) Riccardo Solmi (M-Z) 1 Indice degli argomenti Introduzione alla notazione UML I diagrammi Class Diagram Object

Dettagli

Ereditarietà. Unità 9. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Ereditarietà. Unità 9. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

INGEGNERIA DEL SOFTWARE

INGEGNERIA DEL SOFTWARE INGEGNERIA DEL SOFTWARE UML Avvertenza: gli appunti si basano sul corso di Ingegneria del Software tenuto dal prof. Picco della facoltà di Ingegneria del Politecnico di Milano (che ringrazio per aver acconsentito

Dettagli

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo Esempi al calcolatore su: 1) 2) Subtyping e Polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il

Dettagli

Model-View- Controller

Model-View- Controller Model-View- Controller A. FERRARI MVC Il Model-View-Controller è un pattern architetturale molto diffuso nello sviluppo di sistemi software, in particolare nell'ambito della programmazione orientata agli

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

Dettagli

C# delegates. Vittorio Maniezzo Università di Bologna. Vittorio Maniezzo Università di Bologna 1. Delegate

C# delegates. Vittorio Maniezzo Università di Bologna. Vittorio Maniezzo Università di Bologna 1. Delegate C# delegates Vittorio Maniezzo Università di Bologna Vittorio Maniezzo Università di Bologna 1 Delegate I delegati possono essere visti come definizioni di tipi per puntatori a funzione. Permettono di

Dettagli

Oggetti e classi. Cos è un oggetto

Oggetti e classi. Cos è un oggetto Oggetti e classi Cos è un oggetto Basta guardarsi intorno per scoprire che il mondo reale è costituito da oggetti: libri, biciclette, giocattoli, ma anche ragazzi, bambini, fiori, gatti, cani, fiumi, montagne,

Dettagli

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!! NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!! OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/

Dettagli

24 - Possibili approfondimenti

24 - Possibili approfondimenti 24 - Possibili approfondimenti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

17 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce 17 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Java Classi wrapper e classi di servizio. Classi di servizio

Java Classi wrapper e classi di servizio. Classi di servizio Java Classi wrapper e classi di servizio 1 Ereditarietà - recap Una classe può derivare da un altra - extends Eredita metodi e attributi (non i costruttori) Aggiunge attributi e metodi, ma può anche ridefinire

Dettagli

Ingegneria del Software. Introduzione ai pattern

Ingegneria del Software. Introduzione ai pattern Ingegneria del Software Introduzione ai pattern 1 Definizione di pattern [dal [dal vocabolario vocabolario Garzanti] Garzanti] Alcuni esempi: Pattern architetturale Pattern di circuito stampato Pattern

Dettagli

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe

Dettagli

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

Ingegneria del software - Esame del 10 febbraio 2004 Soluzione. Esercizio 1 (media 6,93 decimi) Ingegneria del software - Esame del 10 febbraio 2004 Soluzione Esercizio 1 (media 6,93 decimi) Quella che segue è una possibile soluzione dell esercizio. Questa specifica soluzione è basata sulla libreria

Dettagli

Variabili e Metodi di classe Interfacce e Package File in Java

Variabili e Metodi di classe Interfacce e Package File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe definisce un

Dettagli

Progettazione : Design Pattern Creazionali

Progettazione : Design Pattern Creazionali Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.

Dettagli

tipi di dato astratti

tipi di dato astratti tipi di dato astratti A. FERRARI ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità che dipendono esclusivamente dalla semantica

Dettagli

Model View Controller (MVC)

Model View Controller (MVC) (MVC) in sintesi è una applicazione del pattern alle interfaccie utente (GUI ma non necessariamente) lunga tradizione in smalltalk non è propriamente un design patter ma un architectural pattern perché

Dettagli

POO in JAVA e Robot EV3

POO in JAVA e Robot EV3 POO in JAVA e Robot EV3 1. Introduzione Dal procedurale agli oggetti La programmazione procedurale Per tutta la classe terza, abbiamo lavorato con un paradigma di programmazione che si chiama procedurale

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

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

Software Engineering a.y  Introduzione ai pattern di design (parte 1)! Prof. Luca Mainetti! Università del Salento! Software Engineering a.y. 2015-2016" Introduzione ai pattern di design (parte 1)! Prof. Luca Mainetti! Università del Salento! Obiettivi della lezione" Introdurre il concetto di pattern di design! Comprendere

Dettagli

Polimorfismo. Subtyping-polimorfismo

Polimorfismo. Subtyping-polimorfismo Polimorfismo 23 Polimorfismo - Esempio Definiamo la classe Persona che gestisce i dati anagrafici di una persona (nome ed età per semplicità) La classe definisce un costruttore e il metodo print che stampa

Dettagli

OO design pattern. Design pattern: motivazioni

OO design pattern. Design pattern: motivazioni Design pattern: motivazioni OO design pattern La progettazione OO è complessa Progettare sw OO riusabile ed evitare (o, almeno, limitare) la riprogettazione è ancor più complesso I progettisti esperti

Dettagli

Dichiarazione di una classe. Dichiarazione ereditarietà

Dichiarazione di una classe. Dichiarazione ereditarietà Introduzione Il Java è un linguaggio di programmazione orientato agli oggetti (OOL), perché permette di realizzare in un programma tutti i concetti alla base dell OOP quali: l astrazione dei dati, mediante

Dettagli

Progettazione Object-Oriented

Progettazione Object-Oriented Progettazione Object-Oriented Generalità, Relazione fra OOA e OOD Concetti di base: Classi e Oggetti, Relazioni fra oggetti, Ereditarietà e Polimorfismo La specifica del Progetto: notazione UML Una metodologia

Dettagli

Architetture Software

Architetture Software Architetture Software Alessandro Martinelli 25 novembre 2014 Coesione e Accoppiamento Principi di Progettazione Design Pattern Creazionali Design Pattern Strutturali Design Pattern Comportamentali Fondamenti

Dettagli

Programmazione. Prof. Marco Bertini

Programmazione. Prof. Marco Bertini Programmazione Prof. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Presentazione del corso Orario Mercoledì: 9:15-13:15, aule 113+114 Giovedì: 9:15-13:15, aula 002 Ricevimento:

Dettagli

Programmazione orientata agli oggetti Oggetti Composti. Oggetti composti

Programmazione orientata agli oggetti Oggetti Composti. Oggetti composti Programmazione orientata agli oggetti Oggetti Composti 1 - 1 Negli esempi che abbiamo visto finora gli attributi delle classi erano variabili di tipo primitivo E però possibile definire come attributi

Dettagli

Design patterns in Java

Design patterns in Java tesi di laurea Anno Accademico 2012/13 relatore Ch.mo prof. Porfirio Tramontana candidato Luciano Amitrano Matr. 534/2042 Progettare SW a oggetti è difficoltoso I progettisti devono cercare di far coesistere

Dettagli

DIAGRAMMI DEI PACKAGE

DIAGRAMMI DEI PACKAGE ESERCITAZIONE ERRORI COMUNI REV. DI PROGETTAZIONE INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2013 2014 UML Versione di UML?

Dettagli