Tecniche di Problem-Solving

Slides:



Advertisements
Presentazioni simili
… Logger logger=getLogger(); if (logger!= null) { logger.writeError("Crash!"); } …
Advertisements

Interfacce Java.
Unified Modeling Language
Applet Java.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
MultiSet, Liste Ordinate
Le gerarchie di tipi.
1 Le gerarchie di tipi: implementazioni multiple e principio di sostituzione.
PolyFun. Dare implementazione,funzione di astrazione, invarianti della rappresentazione. Provare che i metodi apply e bind preservano gli invarianti.
Corso di Laurea Triennale in Ingegneria Informatica Corso di Sistemi Informativi A. A Marina Mongiello Ingegneria del software 1 Design pattern.
Ing. del software B Il Pattern Observer Simone Magnolini.
PATTERN DECORATOR Corso di Laurea Specialistica in Ingegneria Informatica Insegnamento di “Ingegneria del Software B” Ex presentazione realizzata dallo.
Verification of object-oriented programs with invariants by M. Barnett, R. DeLine, M. Fähndrich, K.R.M. Leino, W. Schulte Bordignon Claudio Zampieron Elisa.
Model – View - Controller
Costruzione di Interfacce Lezione 10 Dal Java al C++ parte 1
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Introduzione ai design pattern. 2 Cosa sono i design pattern I problemi incontrati nello sviluppare grossi progetti software sono spesso ricorrenti.
L.Lista Design P atterns Luca Lista. L.Lista Design Patterns Elementi di software OO riutilizzabile Piccoli insiemi di classi che collaborano implementando.
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
Concetti di Object Orientation
© CEFRIEL Ricettario dei principali pattern GoF Docente: Gabriele Lombardi
1 Le gerarchie di tipi. 2 Supertipi e sottotipi 4 un supertipo –class –interface 4 può avere più sottotipi –un sottotipo extends il supertipo ( class.
1 laboratorio di calcolo II AA 2003/04 nona settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
Design Pattern Observer INGEGNERIA DEL SOFTWARE Nicola Ferrari.
Pattern Abstract Factory
1 AOP Sandro Pedrazzini Approfondimento Aspect Oriented Programming (AOP)
ANALYSIS & DESIGN I DESIGN PATTERNS GoF 1. I Design Patterns GoF …un momento importante durante il corso del design!
1 Applet ed HTML Fondamenti di Informatica Corso D.
1 cin>>c8 s.r.l A.A Generalità Uno dei concetti largamente adottati negli ultimi anni dai professionisti del software in fase di sviluppo.
Esercizi Design pattern
Collection & Generics in Java
Java gestione eventi introduzione. La gestione degli eventi Ci sono 3 oggetti interessati alla g. d. e.: L’oggetto interessato (event source) ad esempio.
Laboratorio di Servizi Web - servlet - Ardissono 1 Java Servlet API package javax.servlet: include classi e interfacce di gestione di servlet indipendenti.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Davide Cerbo - - JUG Roma Nicola Raglia - - JUG Roma The Hitchhiker's Guide to testable code semplici regole.
L.Lista, V. Innocente Design P atterns Luca Lista, Vincenzo Innocente.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Primo Compitino Primo esercizio Identificare gli errori segnalati dal compilatore Verifica statica del codice Regole di binding per i nomi (quelle.
1 Gerarchie e polimorfismo: liste. 2 Generalizzare le liste di interi  List 4 lista di oggetti –non modificabile 4 vorremo poi definire un sottotipo.
PATTERN DECORATOR Corso di Laurea Specialistica in Ingegneria Informatica Corso Ingegneria del Software B A.A. 2008/2009 Alberto Feriotti Mat:
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Esercitazione. Problema Vogliamo definire in modo gerachico un tipo di dato che definisce Tabelle multi-dimensionali con un numero di righe variabili.
Ingegneria del software Modulo 3 -Tecniche d’implementazione Unità didattica 1 -Ingegneria dei componenti Ernesto Damiani Università degli Studi di Milano.
Due slides sui Design Patterns Luciano Pandola INFN-LNGS Corso INFN su C++, ROOT e Geant4.
TDE ESERCIZIO 1 Si consideri la classe Mazzo di carte (da bridge). L’universo di tutte le possibili carte può contenere anche carte di altro.
JUG – Ancona Italy AJAX Giovanni Baleani Developer IBS srl.
Viki: Smart Home Natural Language Interface Realizzazione di un’interfaccia in linguaggio naturale, senza grammatiche fisse, per l’automazione casalinga.
Università degli Studi di Modena e Reggio Emilia
Design patterns in pillole: factory method pattern
UML Pattern.
Esercizi.
Programmazione per la Musica | Adriano Baratè
Jug Ancona: Chi... , Cosa... , Come...
Programmazione a oggetti
Blackbelt keypunchers
Esercizi.
Gli oggetti: concetti avanzati
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Gestione Griglie nel Form Designer
Animated Colregs72 – Colregs72 Animate
Sommario cos’è un tipo di dato astratto astrazione tramite specifica:
speaker: Luca Minuti - Maurizio Del Magno
Analisi di regioni Luigi Cinque 23/02/2019 Analisi di regioni.
Paradigma di programmazione event-driven
IN UN COLLOQUIO, FACCIAMO DOMANDE PER...
Esercizio 2.
Corso Java Lezione 1 5/12/2019.
UML Diagramma statico di una classe
Scandire …...
Transcript della presentazione:

Tecniche di Problem-Solving Design Patterns Tecniche di Problem-Solving  in Java JUG-Cagliari 19.06.2004 Ing. Nicola Cubeddu cubo@janthas.com www.janthas.com

Design Patterns Cosa sono i Design Patterns? Classificazione Tre esempi Conclusioni

Cosa e’ un pattern? 1/2 E’ possibile pensare ad un pattern come un modo di risolvere una particolare classe di problemi. Un design pattern e’ una descrizione di come devono comunicare oggetti e classi che saranno customizzate per risolvere un problema generale di design in un particolare contesto. Serve per aggiungere un maggiore livello di astrazione all’architettura del progetto ed a modellizzare meglio gli oggetti e le interazioni tra gli oggetti

Cosa e’ un pattern? 2/2 Non descrive un concreto design ne una concreta implementazione Serve a sviluppare un progetto in modo elegante e facile da mantenere Aiuta i nuovi progettisti meno esperti ad avere un design piu flessibile e riusabile L’obbiettivo dei design patterns e’ isolare i cambiamenti nel codice in modo da rendere facile l’evoluzione del progetto

Classificazione 1/2 Creational: definisce la modalita’ di creazione degli oggetti Structural: definisce l’aggregazione di oggetti per formare structure piu vaste Behavioral: definisce gli oggetti per soddisfare particolari vincoli nel loro comportamento

Classificazione 2/2 Creational: Factory, Singleton, Builder, Prototype Structural: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy Behavioral: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template, Visitor

Observer 1/3 Il pattern observer risolve un comune problema: cosa fare se un gruppo di oggetti necessitano di essere aggiornati quando altri oggetti cambiano stato? Il cambiamento di un oggetto provoca dinamicamente il cambiamento di altri oggetti. Un oggetto dovrebbe poter notificare ad altri oggetti il cambiamento del proprio stato senza conoscere nulla sulla loro identità. Il meccanismo ad eventi di AWT e’ implementato addottando il pattern Observer.

Observer 2/3

Observer 3/3 public interface Observer { public void update( Subject subject ) ; } public class Subject { protected Vector observers = new Vector() ; public void addObserver( Observer o ) { observers.addElement( o ) ; public void removeObserver( Observer o ) { observers.removeElement( o ) ; public void notify() { Enumeration e = observers.getElements() ; while ( e.hasMoreElements() ) { ((Observer)e.nextElement()).update( this ) ;

Factory 1/4 Il pattern Factory definisce una interfaccia per la creazione di un oggetto, ma lascia alle sottoclassi la decisione su che classe istanziare. Fornisce un’interfaccia per la creazione di oggetti senza specificare la loro classe. Il pattern Factory e’ applicabile in tutti quei casi in cui si vuole centralizzare la decisione di quale classe istanziare.

Factory 2/4

Factory 3/4 public interface AbstractFactory { public AbstractProductA createProductA(); public AbstractProductB createProductB(); } public class ConcreteFactory1 implements AbstractFactory { public AbstractProductA createProductA() { return (AbstractProductA ) new ProductA1(); public AbstractProductB createProductB() { return (AbstractProductB ) new ProductB1(); public class ConcreteFactory2 implements AbstractFactory { return (AbstractProductA ) new ProductA2(); return (AbstractProductB ) new ProductB2();

Factory: 4/4

Proxy 1/4 Il pattern Proxy fornisce un sostituto di un oggetto per controllare l’accesso ad esso. Un remote proxy puo nascondere il fatto che l’oggetto risiede in un altro server CORBA ed RMI (Remote Method Interface) sono implementati tramite il Pattern Proxy.

Proxy 2/4

Proxy 3/4 abstract class Subject { abstract public void Request(); } class RealSubject extends Subject { public void Request() { // do something class ProxySubject extends Subject { private RealSubject _subject = null; if (_subject == null) { _subject = new RealSubject(); _subject.Request();

Proxy 4/4 // Share interface client/server public interface Action { public void doAction(); } // Remote action (on server) public class ConcreteAction implements Action { public void doAction() { //... // Client proxy public class ActionStub implements Action { // Send Tcp/Ip order for calling remote doAction

Conclusioni Al momento le software house utilizzano in modo esteso i pattern nella progettazione architetturale di progetti software. “Analysis Patterns: reusable object models”, Martin Fowler ”Thinking in Patterns”, Bruce Eckel http://www.Mindview.net “Design Patterns in Java”, Metsker Steven John - Addison Wesley