Design Patterns. Introduzione 2. Introduzione 3
|
|
|
- Cesare Damiano
- 9 anni fa
- Просмотров:
Транскрипт
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
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
Lab 4: Design Patterns
Dept. of Computer Science Lab 4: Design Patterns Matteo Camilli [email protected] http://camilli.di.unimi.it Progettazione del Software a.a. 2014/15 1 La Saga delle Anatre 1) Creiamo interfaccia
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
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 [email protected] 2 DESIGN PATTERN
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,
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
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.
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
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
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
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
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 [email protected]
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)
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
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
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
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
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
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/
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
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
Progettazione : Design Pattern Creazionali
Progettazione : Design Pattern Creazionali Alessandro Martinelli [email protected] 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali
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.
Programmazione. Prof. Marco Bertini
Programmazione Prof. Marco Bertini [email protected] 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:
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
