Your SlideShare is downloading. ×
Corso GOF Design Pattern
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Corso GOF Design Pattern

3,854
views

Published on

Un design pattern può essere definito come "la descrizione di una soluzione provata ad un problema ricorrente in un determinato contesto". In pratica un design pattern è una regola che esprime una …

Un design pattern può essere definito come "la descrizione di una soluzione provata ad un problema ricorrente in un determinato contesto". In pratica un design pattern è una regola che esprime una relazione tra un contesto, un problema ed una soluzione.

Durante il corso verranno mostrati i 23 pattern GoF, dal codice alla loro implementazione. Di ognuno si analizzerà il problema ricorrente che è chiamato a risolvere, il contesto in cui il problema si colloca e la soluzione trovata.

Il corso di GOF Design Pattern di K-Tech è articolato in quattro moduli:
1. Introduzione ai Design Pattern
2. Design Pattern Creazionali
3. Design Pattern Strutturali
4. Design Pattern Comportamentali

Programma completo del corso: http://www.k-tech.it/formazione/corso_gof_design_pattern

Published in: Technology, Business

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,854
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Corso GOF Design Pattern Modulo 1: Introduzione ai Design Pattern Leggi il programma completo del corso www.javaportal.it | www.k-tech.it corsi@k-tech.it 1
  • 2. Agenda ►Cap 1 - Introduzione ai Design Pattern◄ Cap 2 - Design Pattern Creazionali Cap 3 - Design Pattern Strutturali Cap 4 - Design Pattern Comportamentali www.javaportal.it | www.k-tech.it corsi@k-tech.it 2
  • 3. Un po’ di Storia… 1977 Il lavoro ● Il termine Pattern fu introdotto dell’architetto in un celebre saggio di Christopher Alexander Christopher Alexander nell’ambito della architettura 1980 1987 edile. Cunningham e Beck applicano le idee di ● L'opera di Alexander ispirò la Alexander per sviluppare cinque nascita di un settore 1985 pattern per le UI dell'ingegneria del software, 1991 dedicato all'applicazione del Tesi di dottorato di concetto di Design Pattern alle 1990 Erich Gamma architetture software. 1993 ● Attualmente, l'espressione Gruppo di discussione sul web “Design Pattern” viene usata 1995 principalmente con riferimento 1995 all’ambito dell’ingegneria del Gangs of Four book software. www.javaportal.it | www.k-tech.it corsi@k-tech.it 3
  • 4. …Un po’ di Storia La nascita del movimento dei pattern in informatica si deve al celebre libro: Design Patterns: Elementi per il riuso di software ad Oggetti, di: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. 1995 Grazie al successo di quest'opera, i suoi quattro autori divennero talmente citati che la comunità scientifica iniziò, per brevità, a identificarli collettivamente con il nome: la "banda dei quattro" (Gang of Four o GoF). In tale libro si descrivono 23 pattern, che successivamente verranno battezzati come “Design Pattern della Gangs of Four”. www.javaportal.it | www.k-tech.it corsi@k-tech.it 4
  • 5. Diventare Maestro di Scacchi Nel gioco degli scacchi: ● Per essere un principiante basta conoscere le regole del gioco e le principali mosse. ● Per essere un discreto giocatore bisogna apprendere dei principi ed acquisire alcune strategie. ● Per essere un maestro bisogna studiare le partite dei grandi maestri, individuare i pattern nascosti, memorizzarli e applicarli. www.javaportal.it | www.k-tech.it corsi@k-tech.it 5
  • 6. Diventare Master Designer Nello sviluppo del software: 1. Primo: imparare le regole ● Linguaggi (di programmazione e di progettazione) ● Strutture Dati ● Algoritmi 2. In seguito: apprendere i principi ● OOA (Object Oriented Analysis) ● OOD (Object Oriented Design) ● OOP (Object Oriented Programming) 3. Infine: studiare i progetti e le soluzioni degli esperti ● Comprendere i Design Pattern ● Memorizzare i Design Pattern ● Applicare i Design Pattern www.javaportal.it | www.k-tech.it corsi@k-tech.it 6
  • 7. Definizione dei Design Pattern “Ogni pattern descrive un problema che si ripete più e più volte nel nostro ambiente, descrive poi il nucleo della soluzione del problema, in modo tale che si possa usare la soluzione un milione di volte, senza mai applicarla nella stessa maniera" C. Alexander In pratica un Design Pattern è una regola tripartita, che esprime una relazione tra un contesto, un problema ed una soluzione. CONTESTO PROBLEMA DESIGN SOLUZIONE PATTERN www.javaportal.it | www.k-tech.it corsi@k-tech.it 7
  • 8. Classificazione dei Pattern Software ● Design Patterns: Per lo sviluppo del software (spesso Object-Oriented) ● Analysis Patterns: Per definire modelli di analisi ricorrenti e riutilizzabili. ● Organization Patterns: Per strutturare organizzazioni e progetti. ● Process Patterns: Per definire processi di sviluppo software. www.javaportal.it | www.k-tech.it corsi@k-tech.it 8
  • 9. Classificazione dei Design Pattern I Design Pattern possono essere classificati in funzione del loro livello di astrazione/dettaglio: ● Architectural Design Patterns: Descrivono l’organizzazione strutturale fondamentale di un sistema software in termini di sottosistemi,dei loro compiti e delle modalità di interazione. ● Design Patterns: Forniscono uno schema per raffinare i sottosistemi o componenti di un sistema software. In genere descrivono strutture ricorrenti di componenti comunicanti che risolvono un generico problema di progettazione in un particolare contesto. ● Idioms o Coding Design Patterns: Pattern di basso livello specifico di un linguaggio di programmazione. Un idioma descrive come implementare particolari aspetti dei componenti o le relazioni tra essi utilizzando caratteristiche del linguaggio di programmazione scelto. www.javaportal.it | www.k-tech.it corsi@k-tech.it 9
  • 10. Caratteristiche dei Design Pattern Un design pattern nomina, astrae ed identifica gli aspetti chiave di un problema di progettazione: ● Le classi e le istanze che vi partecipano. ● I loro ruoli e le collaborazioni. ● La distribuzione delle responsabilità. www.javaportal.it | www.k-tech.it corsi@k-tech.it 10
  • 11. Caratteristiche dei Design Pattern ● Nome: permette di identificare il Design Pattern con una parola e di lavorare con un alto livello di astrazione, indica lo scopo del pattern. ● Intento: descrive brevemente le funzionalità e lo scopo. ● Problema (Motivazione+Applicabilità): descrive il problema a cui il pattern è applicato e le condizioni necessarie per applicarlo. ● Soluzione: descrive gli elementi (classi) che costituiscono il Design Pattern, le loro responsabilità e le loro relazioni. ● Conseguenze: indicano risultati, compromessi, vantaggi e svantaggi nell'uso del Design Pattern. www.javaportal.it | www.k-tech.it corsi@k-tech.it 11
  • 12. Obiettivi dei Design Pattern ● Creare una letteratura per la comunità Object-Oriented. ● Aiutare gli sviluppatori a risolvere problemi già trattati. ● Creare un linguaggio per comunicare intuizioni ed esperienza sui problemi e sulle relative soluzioni. www.javaportal.it | www.k-tech.it corsi@k-tech.it 12
  • 13. Importanza dei Design Pattern Trasferiscono l’esperienza I Design Pattern costituiscono una tecnica efficace per trasferire la conoscenza e l'esperienza dei progettisti, rendendola disponibile a tutti in modo comprensibile e concreto. “Sbagliando si impara…” vs “Impara dai successi altrui…” Aiutano a progettare in modo migliore ed in minor tempo ● Costruire del software che sia riusabile. ● Evitare scelte che compromettano il suo riutilizzo. ● Migliorare la documentazione e la manutenzione di sistemi esistenti. Non re-inventiamo la ruota ogni volta! www.javaportal.it | www.k-tech.it corsi@k-tech.it 13
  • 14. Il Catalogo dei Design Pattern GoF Il libro della GoF classifica 23 Design Pattern e li suddivide in 3 categorie: ● Creational (Pattern Creazionali) ●Trattano l’inizializzazione e la configurazione di classi ed oggetti. ● Structural (Pattern Strutturali) Trattano il disaccoppiamento tra interfacce ed implementazioni delle ● classi, degli oggetti e della loro composizione. ● Behavioral (Pattern Comportamentali) ● Trattano le interazioni dinamiche tra gruppi di classi ed oggetti. ● Alcuni pattern sono utilizzati insieme. ● Alcuni sono alternativi di altri. ● Altri sono simili ma hanno intenti differenti. www.javaportal.it | www.k-tech.it corsi@k-tech.it 14
  • 15. Classificazione dei Design Pattern DESIGN PATTERN CREAZIONALI STRUTTURALI COMPORTAMENTALI FACTORY ADAPTER FLYWEIGHT INTERPRETER METHOD ABSTRACT TEMPLATE BRIDGE PROXY FACTORY METHOD CHAIN OF BUILDER COMPOSITE FACADE RESPONSABIL. STATE PROTOTYPE DECORATOR COMMAND OBSERVER SINGLETON ITERATOR MEMENTO MEDIATOR www.javaportal.it | www.k-tech.it corsi@k-tech.it 15
  • 16. Design Pattern Creazionali ● Permettono di astrarre il processo di creazione degli oggetti. ● Rendono un sistema indipendente da come i suoi oggetti sono creati,composti, e rappresentati. ● Incapsulano conoscenza sulle classi concrete che un sistema usa. ● Nascondono come le istanze delle classi sono create e composte. www.javaportal.it | www.k-tech.it corsi@k-tech.it 16
  • 17. Design Pattern Strutturali ● Sono dedicati alla composizione di classi e oggetti per creare delle strutture più grandi. ● Gli Structual class Pattern utilizzano l'ereditarietà per creare interfacce o implementazioni. ● Gli Structual object Pattern descrivono il modo in cui comporre gli oggetti per realizzare nuove funzionalità. www.javaportal.it | www.k-tech.it corsi@k-tech.it 17
  • 18. Design Pattern Comportamentali ● Focalizzano sul controllo del flusso tra oggetti. ● Descrivono le comunicazioni tra oggetti. ● Aiutano a valutare le responsabilità assegnate agli oggetti. ● Suggeriscono modi per incapsulare algoritmi dentro classi. www.javaportal.it | www.k-tech.it corsi@k-tech.it 18
  • 19. BREAK Dopo la pausa: Abstract Factory Leggi il programma completo del corso www.javaportal.it | www.k-tech.it corsi@k-tech.it 19