Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A Design Pattern E.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A. 2008-2009. Design Pattern E."

Transcript

1 Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A Design Pattern E. TINELLI

2 Pattern e Design Pattern Soluzioni consolidate a problemi ricorrenti in contesti specifici Catturano soluzioni che sono già state adottare e che si sono evolute nel tempo Catturano le strutture statiche e dinamiche di soluzioni che ricorrono più volte durante lo sviluppo di applicazioni in un particolare contesto Un pattern deve mostrare che la soluzione descritta è: Utile (ricorrenza); Utilizzabile (contesto specifico); Usata (assodata) Goal dei Design Pattern Creare un linguaggio per comunicare intuizioni ed esperienza su problemi e sulle loro soluzioni Aiutare gli sviluppatori a risolvere problemi già trattati Offrire soluzioni generiche, riusabili, documentate e al tempo stesso specifiche per una certa classi di problemi Ogni Ogni pattern pattern descrive descrive un un problema problema specifico specifico che che ricorre ricorre più piùvolte nel nel nostro nostro ambiente ambiente e poi poi descrive descrive il il nucleo nucleo della della soluzione soluzione a quel quel problema, problema, in in modo modo da da poter poter utilizzare utilizzare tale tale soluzione soluzione un un milione milione di di volte, volte, senza senza mai mai farlo farlo allo allo stesso stesso modo. modo. C. C. Alexander et et al. al. A Pattern Language, E. TINELLI Ingegneria del Software A. A

3 Ruolo dei Design Pattern Identificare gli oggetti necessari: scomporre sistema in oggetti è compito difficile. Pattern aiutano nell identificazione di oggetti che rappresentano astrazioni non banali a partire dalla definizione del problema che si vuole risolvere. Progettare anticipando i cambiamenti: Progettare il Sistema in modo da anticipare i nuovi requisiti e i cambiamenti a quelli esistenti Non esiste una combinazione di Patterns che dia il massimo di flessibilità e di facilità di evolvere. Controllare le dipendenze: Le dipendenze contenute in una classe/interfaccia consistono nell insieme dei riferimenti (statici) ad altre classi/interfacce I design pattern vengono classificati in base al tipo di dipendenze su cui agiscono in: creazionali, strutturali,comportamentali Definizione delle interfacce: l applicazione di un pattern porta con se le scelte riguardanti le interfacce ed i meccanismi di interazione tra gli oggetti. Definire l implementazione: applicare un pattern comporta specifiche scelte implementative. In particolare vi sono pattern che si focalizzano su ereditarietà mentre altri si focalizzano su meccanismi di composizione. E. TINELLI Ingegneria del Software A. A

4 Pattern 4 elementi essenziali Nome - riferimento mnemonico che permette di aumentare il vocabolario dei termini tecnici e ci permette di identificare il problema e la soluzione in una o due parole Problema - descrizione del problema e del contesto a cui il pattern intende fornire una soluzione. Potrebbe anche essere descritto come una lista di condizioni necessarie per l applicazione del pattern Soluzione - descrive gli elementi fondamentali che costituiscono la soluzione e le relazioni che intercorrono tra questi mediante uno schema generale che può essere applicato in situazioni diverse Conseguenze - specifica le possibili conseguenze che l applicazione della soluzione proposta può comportare. Si riferiscono ad esempio a possibili di efficienza della soluzione, oppure ad applicabilità con specifici linguaggi di programmazione utili per valutare soluzioni alternative E. TINELLI Ingegneria del Software A. A

5 Pattern per la progettazione OO principi e tecniche Ereditarietà di Interfaccia l ereditarietà di classi concrete permette il riuso di codice mentre l ereditarietà di classi puramente astratte permette di definire oggetti con la stessa interfaccia 1 Tecnica: Programmare basandosi su un interfaccia e non su un implementazione Esistono due possibilità per il riuso delle funzionalità (quindi di codice): white-box reuse (basato sull ereditarietà) È semplice adattare le funzionalità di una classe antenata in una classe derivata L ereditarietà è definita in maniera statica, al compile-time Si viola parzialmente l incapsulamento black-box reuse (basato sull aggregazione/composizione) La composizione è definita dinamicamente, a run-time Gli oggetti contenuti devono avere interfacce ben definite e complete per poter essere utilizzati correttamente Si preserva l incapsulamento 2 Tecnica: Preferire l aggregazione all ereditarietà E. TINELLI Ingegneria del Software A. A

6 Pattern Creazionali Astraggono il processo di istanziazione Nascondono i costruttori e introduco dei metodi al loro posto Tutto ciò che il sistema conosce sono le interfacce degli oggetti così come sono state definite con opportune classi astratte Conseguenze: Incapsulano la conoscenza delle classi concrete usate Nascondono il modo in cui le istanze di queste classi vengono create e assemblate Espongono interfacce al posto di tipi concreti Esempi Abstract Factory Factory Method Builder separa la costruzione di un oggetto complesso dalla sua rappresentazione in modo che lo stesso processo di costruzione possa essere utilizzato per creare rappresentazioni diverse Singleton fa in modo che una classe abbia una sola istanza e fornisce un punto di accesso noto a tutti gli utilizzatori E. TINELLI Ingegneria del Software A. A

7 Pattern Strutturali Descrivono come comporre classi e oggetti in strutture più grandi Si dividono in: basati su classi e su oggetti I primi usano l ereditarietà (statica) I secondi la composizione (anche dinamica) Conseguenze Aggiungono un livello di indirezione per disaccoppiare le due interfacce. Esempi Adapter Composite Decorator Facade Proxy fornisce un surrogato di un oggetto per controllare l accesso a quest ultimo E. TINELLI Ingegneria del Software A. A

8 Pattern Comportamentali Riguardano algoritmi e l assegnamento di responsabilità tra oggetti Descrivono pattern di comunicazione tra oggetti. Per distribuire il comportamento usano l ereditarietà o la composizione. Conseguenze Alcuni incapsulano il comportamento in modo da poterlo variare anche dinamicamente Disaccoppiano il chiamante e il chiamato aggiungendo un livello di indirezione. Esempi Iterator fornisce un modo per accedere agli elementi di un contenitore (un oggetto aggregato) sequenzialmente senza esporre la struttura dati sottostante Mediator definisce un oggetto che incapsula le strategie di collaborazione di un gruppo di oggetti evitando che gli oggetti facciano riferimento l uno all altro esplicitamente. Observer Strategy Visitor rappresenta un operazione da svolgersi sugli elementi di una struttura di oggetti. E. TINELLI Ingegneria del Software A. A

9 Un possibile catalogo di Design Pattern (da Un possibile catalogo di Design Pattern (da Design Patterns elementi per il riuso di software a oggetti) E. TINELLI Ingegneria del Software A. A

10 Relazioni tra Patterns (da Design Patterns elementi per il riuso di software a oggetti) E. TINELLI Ingegneria del Software A. A

11 Design pattern in dettaglio Strutturali Adapter Composite Decorator Facade Creazionali Factory Method Abstract Factory Comportamentali Observer Strategy E. TINELLI Ingegneria del Software A. A

12 Abstract Factory Scopo: definire un interfaccia per la creazione di famiglie di oggetti correlati o dipendenti senza specificare quali siano le classi concrete. Motivazione: spesso ci si trova di fronte al problema di voler istanziare un oggetto senza specificare precisamente la classe. Comportamento chiaramente non possibile con meccanismi di creazione tipo new. Applicabilità: utilizzato quando: sistema indipendente dalle modalità di creazione, composizione e rappresentazione dei suoi prodotti; sistema configurabile dipendentemente dalle caratteristiche di una tra piú tipologie di oggetto Si vuole fornire una libreria di classi rivelando solo interfaccia ma non implementazioni specifiche E. TINELLI Ingegneria del Software A. A

13 Abstract Factory Struttura E. TINELLI Ingegneria del Software A. A

14 Abstract Factory Partecipanti AbstractFactory: Dichiara una interfaccia per le operazioni che creano e restituiscono i prodotti. Nella dichiarazione di ogni metodo, i prodotti restituiti sono dei tipi AbstractProduct. ConcreteFactory: Implementa l AbstractFactory, fornendo le operazioni che creano e restituiscono oggetti corrispondenti a prodotti specifici (ConcreteProduct). AbstractProduct: Dichiarano le operazioni che caratterizzano i diversi tipi generici di prodotti. ConcreteProduct: Definiscono i prodotti creati da ogni ConcreteFactory. Client: Utilizza l AbstractFactory per rivolgersi alla ConcreteFactory di una famiglia di prodotti. Utilizza i prodotti tramite la loro interfaccia AbstractProduct. E. TINELLI Ingegneria del Software A. A

15 Abstract Factory Struttura di Esempio Si pensi ad un dimostratore dell utilizzo di due famiglie di prodotti, basate su tecnologie diverse: nastro (tape) e CD. Ogni famiglia è composta dal supporto stesso (tape o cd), un masterizzatore (recorder) e un riproduttore (player). Si vuole che un cliente sia in grado di eseguire lo stesso processo di prova su prodotti di entrambe le famiglie. Si deve definire un modo per creare famiglie complete di prodotti, senza vincolare alla codifica del cliente che gli utilizza, il codice delle particolari famiglie. E. TINELLI Ingegneria del Software A. A

16 Abstract e Concrete Factory public interface DevicesFactory { public Player createplayer(); public Recorder createrecorder(); public Media createmedia(); public class CDDevicesFactory implements DevicesFactory { public Player createplayer() { return new CDPlayer(); public Recorder createrecorder() { return new CDRecorder(); public Media createmedia() { return new CD(); né l AbstractFactory né gli AbstractProduct implementano operazioni in Java diventa più adeguato codificarli come interfacce piuttosto che come classi astratte. E. TINELLI Ingegneria del Software A. A

17 public class CD implements Media{ private String track = ""; Classi appartenenti alla famiglia di prodotti CD: CD, CDPlayer e CDRecorder public void writeondisk( String sound ) { track = sound; public String readdisk( ) { return track; public class CDPlayer implements Player { CD cdinside; public void accept( Media med ) { cdinside = (CD) med; public void play( ) { if( cdinside == null ) else System.out.println( "Error: No CD." ); System.out.println( cdinside.readdisk() ); E. TINELLI Ingegneria del Software A. A

18 Client class Client { DevicesFactory technology; public void selecttechnology( DevicesFactory df ) { technology = df; public void test(string song) { Media media = technology.createmedia(); Recorder recorder = technology.createrecorder(); Player player = technology.createplayer(); recorder.accept( media ); recorder.record( song ); player.accept( media ); player.play(); E. TINELLI Ingegneria del Software A. A

19 Istanza di un oggetto Client public class AbstractFactoryExample { public static void main ( String[] arg ) { Client client = new Client(); System.out.println( **Testing CD devices ); client.selecttechnology( new CDDevicesFactory() ); client.test( Moon river" ); E. TINELLI Ingegneria del Software A. A

20 Abstract Factory - Conseguenze Isola le classi concrete - i clienti non devono sapere niente delle classi concrete che useranno, neanche al momento della creazione Grazie alle factory è possibile racchiudere la logica di creazione in un unico modulo, delimitandola con precisione e permettendo così, nel resto del programma, di stabilire effettivamente tra moduli dipendenze basate unicamente su interfacce. È facile cambiare famiglia di prodotto basta cambiare la linea di codice che riguarda la creazione della factory Promuove la consistenza tra i prodotti poiché i prodotti sono organizzati in famiglie. I prodotti di una famiglia sono coordinati per lavorare insieme Supportare l inserimento di un nuovo prodotto in una famiglia è difficile poiché richiede cambiamenti all Abstract Factory ed a tutte le sue sottoclassi La creazione di oggetti non avviene nel modo standard i clienti devono sapere che devono usare la factory invece del costruttore per gli oggetti E. TINELLI Ingegneria del Software A. A

21 Factory Method Definisce un interfaccia per creare un oggetto, ma sono le sottoclassi che decidono quale classe istanziare Factory Method permette ad una classe di delegare l istanziazione alle sue sottoclassi Il pattern Factory Method incapsula la conoscenza di quali classi occorre creare: Permette di scrivere una classe che delega la creazione degli oggetti che usa, rendendola indipendente dalle rispettive classi Usare il pattern Factory Method quando Una classe non è in grado di anticipare quale classe di oggetti deve creare È desiderabile centralizzare la fase di creazione degli oggetti in una classe dedicata (es. creazione di diversi tipi di documenti all interno di un applicazione da ufficio quali documenti testuali, fogli di stile, ecc.) Il sistema usa classi astratte per definire e gestire relazioni tra oggetti Il sistema deve anche creare oggetti: deve istanziare le classi ma conosce solo le classi astratte, che non può istanziare E. TINELLI Ingegneria del Software A. A

22 Factory Method Struttura e Partecipanti Product - Definisce l interfaccia degli oggetti creati dal Factory Method ConcreteProduct - Implementa l interfaccia del prodotto Product Creator Dichiara il Factory Method che restituisce l oggetto di tipo Prodotto Può contenere un implementazione di default del Factory Method Creator si basa sulle sue sottoclassi per definire il Factory Method in modo che restituisca un istanza del Concrete Product appropriato ConcreteCreator - Ridefinisce (override) il Factory Method per restituire un istanza di ConcreteProduct E. TINELLI Ingegneria del Software A. A

23 Sistema per la manipolazione di elementi cartografici. Due classi astratte: classe Elemento che rappresenta qualunque tipo di oggetto da posizionare in una mappa Factory Method Esempio classe Strumento che fornisce le operazioni comuni di manipolazione degli Elementi. Il sistema sa quando un particolare tipo di elemento deve essere creato (ad es., dopo aver richiesto un identificativo per un nuovo elemento), ma non il tipo particolare di Elemento a creare. E. TINELLI Ingegneria del Software A. A

24 Factory Method - Conseguenze La classe che richiede la creazione è indipendente dalle classi degli oggetti concrete product che utilizza Utilizzare un metodo factory per la creazione di oggetti di una classe fornisce sempre una flessibilità maggiore rispetto alla creazione diretta dell oggetto È possibile usare il pattern Factory Method come metodo standard per la creazione di oggetti? L insieme degli oggetti concrete product che possono essere creati può cambiare dinamicamente E. TINELLI Ingegneria del Software A. A

25 Adapter Utile quando bisogna connettere diversi elementi eterogenei poichè adatta l interfaccia di un elemento di un sistema (adaptee) ad una forma richiesta da uno dei suoi client Converte l interfaccia di una classe in un altra interfaccia richiesta dal client consente a classi diverse di operare insieme quando ciò non sarebbe altrimenti possibile a causa di interfacce incompatibili (es. il client è.net mentre l adaptee è Java) È un adattatore che separa client e adaptee: Comunicazioni tra client e adaptee sono gestite dall adapter il ruolo dell adattatore è semplicemente di interpretare le richieste del client, trasformarle in richieste all adaptee, ottenere risposte dall adaptee, trasformarle in risposte al client l adattatore ha in generale un interfaccia (target) diversa da quella dell adaptee E. TINELLI Ingegneria del Software A. A

26 Adapter Struttura Ereditarietà Multipla Composizione di oggetti E. TINELLI Ingegneria del Software A. A

27 Adapter Esempio public class RectangleObjectAdapter implements Polygon{ Rectangle adaptee; private String name = "NO NAME"; public RectangleObjectAdapter() { adaptee = new Rectangle(); public void define( float x0, float y0, float x1, float y1,string col ){ float a = x1 - x0; float l = y1 - y0; adaptee.setshape( x0, y0, a, l, col); public float getsurface() { return adaptee.getarea(); public float[] getcoordinates() { float aux[] = new float[4]; aux[0] = adaptee.getoriginx(); aux[1] = adaptee.getoriginy(); aux[2] = adaptee.getoppositecornerx(); aux[3] = adaptee.getoppositecornery(); return aux; public void setid( String id ) { name = id; E. TINELLI Ingegneria del Software A. A

28 Adapter - Conseguenze disaccoppiamento delle implementazioni del client e dell adaptee l implementazione di ciascun elemento può variare senza che questo si ripercuota sull altro elemento l adaptee può essere usato da diversi tipi di client ciascuno col suo adattatore l indirezione addizionale potrebbe ridurre l efficienza ci potrebbe essere un aumento nell overhead per la manutenzione se cambia il servizio offerto dall adaptee e quindi oltre all adaptee (ed eventualmente al client) deve cambiare anche l adattatore E. TINELLI Ingegneria del Software A. A

29 Composite Compone oggetti in strutture ad albero per rappresentare gerarchie di componenti Oggetti singoli e composti vengono trattati uniformemente Si possono aggiungere altri componenti alla gerarchia senza influenzare gli altri Consente la costruzione di gerarchie di oggetti composti. Gli oggetti composti possono essere formati da oggetti singoli, oppure da altri oggetti composti. Questo pattern è utile nei casi in cui si vuole: Rappresentare gerarchie di oggetti tutto-parte. Essere in grado di ignorare le differenze tra oggetti singoli e oggetti composti. E. TINELLI Ingegneria del Software A. A

30 Composite Struttura e Partecipanti Component: Dichiara una interfaccia comune per oggetti singoli e composti. Implementa le operazioni di default o comuni tutte le classi. Leaf: Estende la classe Component, per rapperesentare gli oggetti che non sono composti (foglie). Implementa le operazioni per questi oggetti. Composite: Estende la classe Component, per rappresentare gli oggetti che sono composti. Immagazzina al suo interno i propri componenti. Implementa le operazioni proprie degli oggetti composti, e particolarmente quelle che riguardano la gestione dei propri componenti. Client: Utilizza gli oggetti singoli e composti tramite l interfaccia rappresentata dalla classe astratta Component. E. TINELLI Ingegneria del Software A. A

31 Composite Esempio 1 E. TINELLI Ingegneria del Software A. A

32 Composite Esempio 2 Consideriamo l organizzazione di un documento suddiviso in capitoli e paragrafi rappresentati da altrettanti oggetti il cui tipo base è la classe astratta DocumentElement Ciascun capitolo (classe DocumentChapter) è un elemento composito che contiene uno o più paragrafi. L elemento foglia della struttura del documento è rappresentato dal paragrafo (classe DocumentParagraph). L implementazione interna dell elemento paragrafo è differente da quella dell elemento composito (il capitolo). Si noti inoltre che nulla vieta che un capitolo possa a sua volta contenere uno o più sottocapitoli sempre di tipo DocumentChapter. Si noti infine come l aggiunta di una nuova tipologia di elemento (per esempio, una ipotetica classe DocumentSection) non rappresenti un grosso problema, dal momento che la struttura è pensata per evolvere in modo flessibile nel tempo. E. TINELLI Ingegneria del Software A. A

33 Composite - Conseguenze Definisce gerarchie di classi costituite da oggetti primitivi e composti in modo del tutto trasparente al client che potrà utilizzarli indifferentemente Semplifica il client: non è necessario scrivere blocchi case per distinguere tra oggetti semplici e composti poiché tutti gli oggetti hanno un interfaccia uniforme Rende più semplice l aggiunta di nuove tipologie di componenti Può rendere il progetto troppo generico se si vuole che la struttura composita contenga solo alcuni componenti? E. TINELLI Ingegneria del Software A. A

34 Decorator Aggiunge dinamicamente responsabilità addizionali ad un oggetto. In questo modo si possono estendere le funzionalità d oggetti particolari senza coinvolgere complete classi. Per assegnare responsabilità a singoli oggetti, in maniera dinamica e trasparente (cioè senza coinvolgere altri oggetti) Utile quando l estensione attraverso la specializzazione è sconveniente. Esempio: vogliamo che una text box abbia anche una scrollbar Problema: vogliamo che questa estensione venga decisa dinamicamente, durante l esecuzione non si vuole quindi ricorrere alla specializzazione Soluzione: incapsulare l oggetto principale (nel nostro esempio, la text box) in un altro oggetto chiamato decorator (nel nostro esempio, la scrollbar) Il decorator deve fornire servizi conformi con quelli forniti dall oggetto principale E. TINELLI Ingegneria del Software A. A

35 Decorator Struttura e Partecipanti Component: Specifica l interfaccia degli oggetti che possono avere delle responsabilità aggiunte dinamicamente. ConcreteComponent: Implementa l oggetto in cui si possono aggiungere nuove responsabilità. Decorator: Possiede un riferimento all oggetto Component e specifica un interfaccia concordante con l interfaccia Component. ConcreteDecorator: Aggiunge nuove responsabilità al Component. E. TINELLI Ingegneria del Software A. A

36 Decorator Esempio Esiste un modello di oggetti che rappresenta gli impiegati (Employee) di una azienda. Il sistema comprende la possibilità di investire gli impiegati con delle responsabilità aggiuntive. È necessario definire un modo per aggiungere dinamicamente nuove responsabilità ad oggetto specifico. E. TINELLI Ingegneria del Software A. A

37 Decorator Esempio abstract class ResponsibleWorker implements Employee { protected Employee responsible; public ResponsibleWorker(Employee employee) { responsible = employee; public String getname() { return responsible.getname(); public String getoffice() { return responsible.getoffice(); public void whois() { responsible.whois(); E. TINELLI Ingegneria del Software A. A

38 Decorator Esempio public class ProjectManager extends ResponsibleWorker { private String project; public ProjectManager( Employee empl, String proj ) { super( empl ); project = proj; public void whois() { super.whois(); System.out.println( "I am the Manager of the Project:" + project ); public class DecoratorExample1 { public static void main(string arg[]) { Employee one = new Engineer( John Doe", "Programming Department" ); one = new AdministrativeManager(one); one = new ProjectManager(one, Project1" ); one = new ProjectManager( one, Project2" ); E. TINELLI Ingegneria del Software A. A

39 Decorator - Conseguenze Maggiore flessibilità dell ereditarietà Il pattern Decorator fornisce un sistema più flessibile di quello che si otterrebbe con l ereditarietà (eventualmente multipla). Con il Decorator le responsabilità possono essere aggiunte e rimosse a run-time (mutando dei riferimenti). Funzionalità complesse ottenute mediante aggregazione di piccoli semplici pezzi Le funzionalità possono essere attivate in maniera mirata. Ciò evita di avere un unica classe che prevede tutte le possibili estensioni (complessa e inefficiente) Eccesso di piccole classi simili tra di loro Ciò rende il codice più complesso da comprendere e da manutenere per chi non conosce bene le varie classi Decorator E. TINELLI Ingegneria del Software A. A

40 Facade Obiettivi Fornire un interfaccia semplice per moduli/componenti internamente complessi Garantire il disaccoppiamento tra i moduli/componenti poiché minimizza la comunicazione e la dipendenza tra sottosistemi Offrire un meccanismo di layering Soluzione Raggruppare i servizi che un modulo/componente offre all esterno in un unica classe che rappresenta la facciata del modulo/componente Definisce un interfaccia ad un più alto livello di astrazione che rende il sottosistema più semplice da utilizzare E. TINELLI Ingegneria del Software A. A

41 Facade Struttura e partecipanti Facade: Ha conoscenza delle funzionalità di ogni classe del sottosistema. Delega agli appropriati oggetti del sottosistema ogni richiesta pervenuta dall esterno. Subsystem classes: Implementano le funzionalità del sottosistema Gestiscono le attività assegnate dal Facade. Non hanno riferimenti verso il Facade. E. TINELLI Ingegneria del Software A. A

42 Facade - Conseguenze Favorisce l incapsulamento - Nasconde ai client i componenti del sottosistema Promuove l accoppiamento lasco fra un sottosistema ed i sui client (particolarmente utile quando vengono implementati in modo indipendente) Non impedisce ai client di utilizzare le classi del sottosistema direttamente qualora sia necessario. E. TINELLI Ingegneria del Software A. A

43 Observer (o Publisher/Subscriber) utile quando un elemento (publisher) crea informazioni che sono di interesse per altri elementi (subscriber) L intento del pattern Observer è definire una dipendenza uno-a-molti tale che quando un oggetto cambia stato tutti quelli che ne dipendono vengono automaticamente notificati del fatto ed aggiornati di conseguenza L oggetto osservato è chiamato Subject (soggetto) mentre gli oggetti osservatori sono noti come Observer ciascun subscriber dovrebbe reagire in un modo proprio quando un publisher genera un evento mentre il publisher dovrebbe mantenere un accoppiamento basso verso i suoi subscriber Il problema è trovare un modo col quale gli eventi dell oggetto di riferimento, siano comunicati a tutti gli altri interessati. il publisher registra dinamicamente i subscriber che sono interessati ai suoi eventi e avvisa quando si verifica un evento secondo 2 modalità: 1. la notifica contiene tutti i dettagli dell evento 2. notifica che qualcosa è cambiato poi il subscriber, se interessato, interroga il publisher E. TINELLI Ingegneria del Software A. A

44 Subject: Ha conoscenza dei propri Observer Fornisce operazioni per l addizione e cancellazione di oggetti Observer. Fornisce operazioni per la notifica agli Observer. Observer: Specifica una interfaccia per la notifica di eventi agli oggetti interessati in un Subject ConcreteSubject: Possiede uno stato dell interesse dei ConcreteSubject. Invoca le operazioni di notifica ereditate dal Subject, quando devono essere informati i ConcreteObserver. ConcreteObserver: Implementa l operazione di aggiornamento dell Observer. Observer Struttura e partecipanti E. TINELLI Ingegneria del Software A. A

45 Applicabilità del pattern Observer - Esempio Esiste una classe ListaStudenti che mantiene una lista di Studenti iscritti all'esame di Ingegneria del Software, con metodi per l'aggiornamento della stessa Esiste una classe MatricoleWindow che si occupa della visualizzazione del listato delle matricole mentre un'altra classe DetailsWindow si occupa della visualizzazione di nomi, cognomi, matricole, e contatore finale di iscritti MatricoleWindow e DetailsWindow sono Observer del Subject ListaStudenti: ListaStudenti invocherà setchanged() se è stato aggiunto o rimosso uno studente o ne sono stati modificati i dati, e lo notificherà a tutti gli Observer MatricoleWindow aggiornerà il listato DetailsWindow farà lo stesso, e in più aggiornerà anche il contatore, se è stato aggiunto o rimosso uno studente E. TINELLI Ingegneria del Software A. A

46 Implementazione in Java Java fornisce già implementate le classi per realizzare il pattern Observer Gli osservatori devono implementare l interfaccia java.util.observer la quale definisce il metodo public void update(observable o,object arg) Il subject per essere tale deve estendere la classe java.util.observable che tra gli altri fornisce i seguenti metodi: public void addobserver(observer o) Esistono due segnature public void removeobserver(observer o) una senza argomenti e l altra richiede un Object public void notifyobserver([object arg]) come argomento Protected void setchanged() Il subject notifica il cambiamento dello stato invocando notifyobserver il quale chiama i metodi update degli osservatori installati quando vengono chiamati in sequenza Si intende che il subject cambia stato quando viene chiamato il metodo setchanged E. TINELLI Ingegneria del Software A. A

47 Observer conseguenze accoppiamento debole (astratto e minimale) tra il publisher e i suoi subscriber supporto per comunicazione broadcast possibilità di aggiungere/rimuovere subscriber dinamicamente potrebbe essere difficile comprendere le relazioni di dipendenza tra i vari elementi effetto imprevedibile degli aggiornamenti una modifica in un publisher può scatenare una catena di aggiornamenti e sincronizzazioni su tutti i subscriber implementazione complessa se è richiesta una consegna affidabile dei messaggi E. TINELLI Ingegneria del Software A. A

48 Strategy Consente la definizione di una famiglia d algoritmi, incapsula ognuno e gli fa intercambiabili fra di loro. Questo permette modificare gli algoritmi in modo indipendente dai clienti che fanno uso di essi. Lo Strategy pattern suggerisce l incapsulazione della logica di ogni particolare algoritmo, in apposite classi che implementano l interfaccia che consente agli oggetti client di interagire con loro. Utile quando Sono necessarie più varianti di un algoritmo (diverse strategie per occupazione di memoria, velocità di esecuzione, ecc.) L algortimo usa strutture dati complesse che si vogliono nascondere al client E. TINELLI Ingegneria del Software A. A

49 Strategy: Dichiara un interfaccia comune per tutti gli algoritmi supportati. Il Context utilizza questa interfaccia per invocare gli algoritmi definiti in ogni ConcreteStrategy. ConcreteStrategy: Implementano gli algoritmi che usano l interfaccia Strategy. Context: Viene configurato con un oggetto ConcreteStrategy e mantiene un riferimento verso esso. Può specificare un interfaccia che consenta alle Strategy di accedere ai propri dati. Strategy Struttura e partecipanti E. TINELLI Ingegneria del Software A. A

50 Strategy Esempio Il sistema offre delle funzionalità matematiche, mediante l apposita classe MyArray per la rappresentazione di vettori di numeri mentre la stampa del vettore può avvenire secondo diverse modalità Il problema è trovare un modo di isolare l algoritmo che formatta e stampa il contenuto dell array, per farlo variare in modo indipendente dal resto dell implementazione della classe. E. TINELLI Ingegneria del Software A. A

51 Strategy Esempio public class MyArray { private int[] array; private int size; ArrayDisplayFormat format; public MyArray( int size ) { array = new int[ size ]; public void setvalue( int pos, int value ) { array[pos] = value; public int getvalue( int pos ) { return array[pos]; public int getlength( int pos ) { return array.length; public void setdisplayformat( ArrayDisplayFormat adf ) { format = adf; public void display() { format.printdata( array ); public class StrategyExample { public static void main (String[] arg) { MyArray m = new MyArray( 10 ); m.setvalue( 1, 6 ); m.setvalue( 0, 8 ); m.setvalue( 4, 1 ); m.setvalue( 9, 7 ); m.setdisplayformat( new StandardFormat() ); m.display(); m.setdisplayformat( new MathFormat() ); m.display(); E. TINELLI Ingegneria del Software A. A

52 Strategy - Conseguenze Gestire con maggiore flessibilità una famiglia di algoritmi correlati mediante una gerarchia di classi strategy Offrire un alternativa all ereditarietà si potrebbe estendere direttamente una classe context per ottenere un comportamento diverso ma questo approccio lega staticamente il comportamento nel context e mescola l implemenatzione del context con quella dell algoritmo I client devono conoscere le diverse strategy disponibili è bene utilizzare il pattern Strategy solo quando le varianti di comportamento sono richieste dal client (eliminando blocchi case dal client) E. TINELLI Ingegneria del Software A. A

53 Pattern (Idiomi) and Layers Livello di Presentazione I check sugli input e sugli output sono incorporati nelle view (Intercepting Filter) La gestione delle richieste non è centralizzata (Front controller) accesso indiscriminato sugli altri livelli logica di navigazione diffusa su tutte le viste Le viste presentano delle sezioni comuni quali header, ricerca, autenticazione, carrello, ecc. (Composite View) Nel livello di dominio I servizi di dominio non sono gestiti in maniera centralizzata per es. il flusso applicativo è gestito dalle stesse classi che offrono le funzionalità (Facade) Sorgente Dati Le classi di dominio del sistema accedono direttamente al database (DAO) E. TINELLI Ingegneria del Software A. A

54 Patterns and Model-View View-Controller MVC disaccoppia le viste dai modelli: Disaccoppia gli oggetti, in modo che cambiare un oggetto che influenza molti altri oggetti non richiede all oggetto di conoscere i dettagli degli altri ( pattern Observer ) MVC permette di annidare le views: Il pattern Composite descrive il problema più generale di raggruppare oggetti primitivi e compositi in nuovi oggetti con interfacce identiche MVC controlla la vista mediante il controller ( pattern Strategy ) MVC usa inoltre i pattern Factory Method e Decorator E. TINELLI Ingegneria del Software A. A

55 Pattern e Specifiche dei Requisiti R. : indipendente dal costruttore HW, indipendente dal dispositivo, deve supportare una famiglia di prodotti Abstract Factory Pattern R. : deve interfacciare un oggetto pre-esistente Adapter Pattern R. : struttura complessa, deve avere parametri variabili Composite Pattern R. : deve interfacciare un insieme di oggetti di un sotto-sistema Façade Pattern R. : deve essere estendibile, deve essere scalabile Observer Pattern R. : deve fornire politiche indipendenti dai meccanismi di realizzazione Strategy Pattern E. TINELLI Ingegneria del Software A. A

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

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

Design Pattern in Java

Design Pattern in Java Design Pattern in Java Claudio Di Ciccio, Massimiliano de Leoni (con la supervisione del docente Massimo Mecella) Università di Roma La Sapienza - Sede di Latina Corso di Progettazione del Software A.A.

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

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

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

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

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

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Progettazione! Progettazione! Progettazione! Progettazione!

Progettazione! Progettazione! Progettazione! Progettazione! Creare un oggetto specificandone la classe esplicitamente! Orienta ad una particolare implementazione invece che ad una interfaccia! Può complicare i cambiamenti futuri! E meglio creare oggetti indirettamente!

Dettagli

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A. 2011-2012

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A. 2011-2012 Sapienza Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Corso di Laurea in Ingegneria Informatica ed Automatica Corso di Laurea in Ingegneria dei Sistemi Informatici

Dettagli

Programmazione a Oggetti Lezione 10. Ereditarieta

Programmazione a Oggetti Lezione 10. Ereditarieta Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare

Dettagli

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

!#$%&&'()#*%+%+!#$',,'()#*%+ -)%*&'&'+'$.)+-$$%&&) !#$%&&'(%)'*+%,#-%#.'%&'#/0)-+#12+3,)4+56#7+#.')8'9 !"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&)!"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

GESTIONE DEI PROCESSI

GESTIONE DEI PROCESSI Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto

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

Ingegneria del Software. Introduzione al pattern

Ingegneria del Software. Introduzione al pattern Ingegneria del Software Introduzione al pattern 1 Esempio introduttivo (1/3) Si pensi ad un modello di oggetti che rappresenta gli impiegati (Employee) di una azienda. Tra gli impiegati esistono, ad esempio,

Dettagli

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Progettazione OO E. TINELLI Punto di Partenza Il modello di analisi E una rappresentazione minima del

Dettagli

Alcuni Design Pattern in Java

Alcuni Design Pattern in Java Marco Faella Alcuni Design Pattern in Java basato su Progettazione del Software e Design Pattern in Java, di Cay Horstmann Pattern ITERATOR Contesto: 1) Un oggetto (aggregato) contiene altri oggetti (elementi)

Dettagli

Protezione. Protezione. Protezione. Obiettivi della protezione

Protezione. Protezione. Protezione. Obiettivi della protezione Protezione Protezione La protezione riguarda i meccanismi per il controllo dell accesso alle risorse in un sistema di calcolo da parte degli utenti e dei processi. Meccanismi di imposizione fissati in

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

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere. UML e i Casi d USO I casi d uso specificano una sequenza di azioni che producono un risultato visibile agli attori del sistema. Essi nascono per fornire descrizioni delle capacità del sistema. I casi d

Dettagli

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

Automazione Industriale 4- Ingegneria del Software

Automazione Industriale 4- Ingegneria del Software Automation Robotics and System CONTROL Università degli Studi di Modena e Reggio Emilia Automazione Industriale 4- Ingegneria del Software Cesare Fantuzzi (cesare.fantuzzi@unimore.it) Ingegneria Meccatronica

Dettagli

RIFERIMENTI ATTORI GLOSSARIO. ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova

RIFERIMENTI ATTORI GLOSSARIO. ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova RIFERIMENTI ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2014 2015 I riferimenti devono essere precisi

Dettagli

Generazione Automatica di Asserzioni da Modelli di Specifica

Generazione Automatica di Asserzioni da Modelli di Specifica UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Generazione Automatica di Asserzioni da Modelli di Specifica Relatore:

Dettagli

Modulo 4: Ereditarietà, interfacce e clonazione

Modulo 4: Ereditarietà, interfacce e clonazione Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo

Dettagli

Main System Monitor Keyboard

Main System Monitor Keyboard Composite 57 8. Composite (Gof pag. 163) 8.1. Descrizione Consente la costruzione di gerarchie di oggetti composti. Gli oggetti composti possono essere conformati da oggetti singoli, oppure da altri oggetti

Dettagli

Corso di Amministrazione di Reti A.A. 2002/2003

Corso di Amministrazione di Reti A.A. 2002/2003 Struttura di Active Directory Corso di Amministrazione di Reti A.A. 2002/2003 Materiale preparato utilizzando dove possibile materiale AIPA http://www.aipa.it/attivita[2/formazione[6/corsi[2/materiali/reti%20di%20calcolatori/welcome.htm

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

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

7. Architetture Software

7. Architetture Software 7. Architetture Software progettare la struttura Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 7. Architetture Software 1 / 20 Scopo della fase di design

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

GenLApp Generazione Lista di Applicazioni. Design Patterns. Classi Essenziali. Modellazione Dati. Progettazione della Linea di Prodotti

GenLApp Generazione Lista di Applicazioni. Design Patterns. Classi Essenziali. Modellazione Dati. Progettazione della Linea di Prodotti Progettazione della Linea di Prodotti GenLApp Generazione Lista di Applicazioni Progettazione della Linea di Prodotti Classi Essenziali Responsabilità sui 3 Livelli Architetturali Descrizione delle Responsabilità

Dettagli

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?) Ambiente Access La Guida di Access Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?) Guida in linea Guida rapida Assistente di Office indicazioni

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Object Oriented Programming

Object Oriented Programming OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in

Dettagli

lem logic enterprise manager

lem logic enterprise manager logic enterprise manager lem lem Logic Enterprise Manager Grazie all esperienza decennale in sistemi gestionali, Logic offre una soluzione modulare altamente configurabile pensata per la gestione delle

Dettagli

Brochure Internet. Versione 2010.1 The Keyrules Company s.r.l. Pagina 2 di 8

Brochure Internet. Versione 2010.1 The Keyrules Company s.r.l. Pagina 2 di 8 Ogni organizzazione possiede un sistema di regole che la caratterizzano e che ne assicurano il funzionamento. Le regole sono l insieme coordinato delle norme che stabiliscono come deve o dovrebbe funzionare

Dettagli

Object Oriented Software Design

Object Oriented Software Design Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Object Oriented Software Design Corso di Tecniche di Programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria

Dettagli

Parola chiave extends

Parola chiave extends Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi

Dettagli

Coordinazione Distribuita

Coordinazione Distribuita Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza 21.1 Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Indice. pagina 2 di 10

Indice. pagina 2 di 10 LEZIONE PROGETTAZIONE ORGANIZZATIVA DOTT.SSA ROSAMARIA D AMORE Indice PROGETTAZIONE ORGANIZZATIVA---------------------------------------------------------------------------------------- 3 LA STRUTTURA

Dettagli

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci Corso di Laurea Magistrale in Ingegneria per l Ambiente e il Territorio A.A. 2014-2015 Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci Strutture di dati: DB e DBMS DATO E INFORMAZIONE Dato: insieme

Dettagli

5.2.1 RELAZIONI TRA TABELLE 1. 5.2.4.1 Creare una relazione uno-a-uno, uno-a-molti tra tabelle 9

5.2.1 RELAZIONI TRA TABELLE 1. 5.2.4.1 Creare una relazione uno-a-uno, uno-a-molti tra tabelle 9 5.2.1 RELAZIONI TRA TABELLE 1 5.2.4.1 Creare una relazione uno-a-uno, uno-a-molti tra tabelle 9 Il grado di un verso di un associazione indica quanti record della tabella di partenza si associano ad un

Dettagli

Approccio stratificato

Approccio stratificato Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia

Dettagli

Esercizio 1: trading on-line

Esercizio 1: trading on-line Esercizio 1: trading on-line Si realizzi un programma Java che gestisca le operazioni base della gestione di un fondo per gli investimenti on-line Creazione del fondo (con indicazione della somma in inizialmente

Dettagli

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi

Dettagli

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0 Prodotto Inaz Download Manager Release 1.3.0 Tipo release COMPLETA RIEPILOGO ARGOMENTI 1. Introduzione... 2 2. Architettura... 3 3. Configurazione... 4 3.1 Parametri di connessione a Internet... 4 3.2

Dettagli

1. BASI DI DATI: GENERALITÀ

1. BASI DI DATI: GENERALITÀ 1. BASI DI DATI: GENERALITÀ BASE DI DATI (DATABASE, DB) Raccolta di informazioni o dati strutturati, correlati tra loro in modo da risultare fruibili in maniera ottimale. Una base di dati è usualmente

Dettagli

SCENARIO. Personas. 2010 ALICE Lucchin / BENITO Condemi de Felice. All rights reserved.

SCENARIO. Personas. 2010 ALICE Lucchin / BENITO Condemi de Felice. All rights reserved. SCENARIO Personas SCENARIO È una delle tecniche che aiuta il designer a far emergere le esigente dell utente e il contesto d uso. Gli scenari hanno un ambientazione, attori (personas) con degli obiettivi,

Dettagli

design patterns e GRASP

design patterns e GRASP design patterns e GRASP 1 design patterns una coppia / particolarmente importante a cui viene dato un nome vengono espressi in un formato molto rigido, ad es. nome descrizione sintetica della descrizione

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e Overloading Ereditarietà e Overriding Esercizi svolti Esercizi proposti Paradigma OO Le

Dettagli

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it Decreto Legislativo 196/2003 Codice in materia di protezione dei dati personali COOKIE POLICY La presente informativa è resa anche ai sensi dell art. 13 del D.Lgs 196/03 Codice in materia di protezione

Dettagli

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

Dettagli

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi

Dettagli

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Reflection in Java 1 Reflection Riflessione

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 3 - Variabili 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 Corso di

Dettagli

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP Accademia Futuro info@accademiafuturo.it Programma Generale del Corso Analista Programmatore Web PHP Tematiche Trattate

Dettagli

Algoritmi per suddividere il testo in righe in un editor di testo

Algoritmi per suddividere il testo in righe in un editor di testo Strategy Esempio Algoritmi per suddividere il testo in righe in un editor di testo Ne esistono di varia natura, più o meno complessi (es. numero fisso di parole, lunghezza fissa di una riga, etc) Includere

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

manifatturiera e per i servizi

manifatturiera e per i servizi CAPITOLO 7 Tecnologie per la produzione manifatturiera e per i servizi Agenda Tecnologia e core technology Processi core ed ausiliari Tecnologia e struttura organizzativa Tecnologia core manifatturiera

Dettagli

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME) Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Raccolta dei Requisiti con i Casi D'uso. Corso di Ingegneria del Software Anno Accademico 2012/13

Raccolta dei Requisiti con i Casi D'uso. Corso di Ingegneria del Software Anno Accademico 2012/13 Raccolta dei Requisiti con i Casi D'uso Corso di Ingegneria del Software Anno Accademico 2012/13 I casi d uso I casi d'uso (use case) sono una tecnica utilizzata per identificare i requisiti funzionali

Dettagli

Base di dati e sistemi informativi

Base di dati e sistemi informativi Base di dati e sistemi informativi Una base di dati è un insieme organizzato di dati opportunamente strutturato per lo svolgimento di determinate attività La base di dati è un elemento fondamentale per

Dettagli

MANUALE DELLA QUALITÀ Pag. 1 di 6

MANUALE DELLA QUALITÀ Pag. 1 di 6 MANUALE DELLA QUALITÀ Pag. 1 di 6 INDICE GESTIONE DELLE RISORSE Messa a disposizione delle risorse Competenza, consapevolezza, addestramento Infrastrutture Ambiente di lavoro MANUALE DELLA QUALITÀ Pag.

Dettagli

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014 Archivi e database Prof. Michele Batocchi A.S. 2013/2014 Introduzione L esigenza di archiviare (conservare documenti, immagini, ricordi, ecc.) è un attività senza tempo che è insita nell animo umano Primi

Dettagli

COME SVILUPPARE UN EFFICACE PIANO DI INTERNET MARKETING

COME SVILUPPARE UN EFFICACE PIANO DI INTERNET MARKETING Febbraio Inserto di Missione Impresa dedicato allo sviluppo pratico di progetti finalizzati ad aumentare la competitività delle imprese. COME SVILUPPARE UN EFFICACE PIANO DI INTERNET MARKETING COS E UN

Dettagli

Università Politecnica delle Marche. Progetto Didattico

Università Politecnica delle Marche. Progetto Didattico Università Politecnica delle Marche Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e dell Automazione Sede di Ancona Anno Accademico 2011-2012 Corso di Tecnologie WEB Docente prof. Alessandro

Dettagli

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html. Outline

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html. Outline Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html Ing. Francesco De Mola demola.francesco@unimore.it DII, Modena Via Vignolese (lab. Dottorandi

Dettagli

Introduzione ai tipi di dato astratti: applicazione alle liste

Introduzione ai tipi di dato astratti: applicazione alle liste Universitàdegli Studi di L Aquila Facoltàdi Scienze M.F.N. Corso di Laurea in Informatica Corso di Laboratorio di Algoritmi e Strutture Dati A.A. 2005/2006 Introduzione ai tipi di dato astratti: applicazione

Dettagli

Riepilogo delle modifiche di PA-DSS dalla versione 2.0 alla 3.0

Riepilogo delle modifiche di PA-DSS dalla versione 2.0 alla 3.0 Settore delle carte di pagamento (PCI) Standard di protezione dei dati per le applicazioni di pagamento () Riepilogo delle modifiche di dalla versione 2.0 alla 3.0 Novembre 2013 Introduzione Il presente

Dettagli

UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI

UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI Un utilizzatore a valle di sostanze chimiche dovrebbe informare i propri fornitori riguardo al suo utilizzo delle sostanze (come tali o all

Dettagli

UML Diagrammi delle classi. UML Diagramma classi 1

UML Diagrammi delle classi. UML Diagramma classi 1 UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio

Dettagli

La Metodologia adottata nel Corso

La Metodologia adottata nel Corso La Metodologia adottata nel Corso 1 Mission Statement + Glossario + Lista Funzionalià 3 Descrizione 6 Funzionalità 2 Schema 4 Schema 5 concettuale Logico EA Relazionale Codice Transazioni In PL/SQL Schema

Dettagli

Strumenti di modellazione. Gabriella Trucco

Strumenti di modellazione. Gabriella Trucco Strumenti di modellazione Gabriella Trucco Linguaggio di modellazione Linguaggio formale che può essere utilizzato per descrivere (modellare) un sistema Il concetto trova applicazione soprattutto nell

Dettagli

Sequenza alternativa degli eventi: Variazione di prezzo superiore al 20% per almeno un articolo.

Sequenza alternativa degli eventi: Variazione di prezzo superiore al 20% per almeno un articolo. Corso di Ingegneria del software - Seconda prova di verifica in itinere, 17 dicembre 2008 C, Montangero, L. Semini Dipartimento di Informatica, Università di Pisa a.a. 2008/09 La prova si svolge a libri

Dettagli

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione I semestre 04/05 Comunicazione tra Computer Protocolli Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Relazioni tra classi Ereditarietà Generalizzazione Specializzazione Aggregazione Composizione Dipendenza Associazione Sommario Relazioni

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

Telematica II 17. Esercitazione/Laboratorio 6

Telematica II 17. Esercitazione/Laboratorio 6 Multitasking e Multithreading Telematica II 17. Esercitazione/Laboratorio 6 Multitasking si riferisce all abilità di un computer di eseguire processi (jobs) multipli in maniera concorrente si ricorda che

Dettagli

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale La soluzione modulare di gestione del Sistema Qualità Aziendale I MODULI Q.A.T. - Gestione clienti / fornitori - Gestione strumenti di misura - Gestione verifiche ispettive - Gestione documentazione del

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

Architetture Applicative

Architetture Applicative Alessandro Martinelli alessandro.martinelli@unipv.it 6 Marzo 2012 Architetture Architetture Applicative Introduzione Alcuni esempi di Architetture Applicative Architetture con più Applicazioni Architetture

Dettagli

Corso di Laurea Triennale in Ingegneria Informatica. Corso di Ingegneria del software A. A. 2004-2005. Marina Mongiello

Corso di Laurea Triennale in Ingegneria Informatica. Corso di Ingegneria del software A. A. 2004-2005. Marina Mongiello Corso di Laurea Triennale in Ingegneria Informatica Corso di Ingegneria del A. A. 2004-2005 1 La progettazione È applicata indipendentemente dal modello di processo utilizzato. Parte dal punto in cui sono

Dettagli

Modellazione dei dati in UML

Modellazione dei dati in UML Corso di Basi di Dati e Sistemi Informativi Modellazione dei dati in UML Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Introduzione UML (Unified Modeling Language):

Dettagli

03. Il Modello Gestionale per Processi

03. Il Modello Gestionale per Processi 03. Il Modello Gestionale per Processi Gli aspetti strutturali (vale a dire l organigramma e la descrizione delle funzioni, ruoli e responsabilità) da soli non bastano per gestire la performance; l organigramma

Dettagli

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Premessa Con l analisi di sensitività il perito valutatore elabora un range di valori invece di un dato

Dettagli

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione Programma del Corso Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Normalizzazione (I prova scritta) (II prova scritta) Interazione fra linguaggi di programmazione e basi di dati Cenni

Dettagli

DESIGN PATTERN STRUTTURALI INGEGNERIA DEL SOFTWARE INTRODUZIONE ADAPTER. Scopo Convertire l interfaccia di una classe in un altra.

DESIGN PATTERN STRUTTURALI INGEGNERIA DEL SOFTWARE INTRODUZIONE ADAPTER. Scopo Convertire l interfaccia di una classe in un altra. DESIGN PATTERN STRUTTURALI DESIGN PATTERN STRUTTURALI 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

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A. 2008-2009. Class Discovery E.

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A. 2008-2009. Class Discovery E. Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Class Discovery E. TINELLI Contenuti Classi di analisi: definizione ed esempi Tecniche per la definizione

Dettagli

Ti consente di ricevere velocemente tutte le informazioni inviate dal personale, in maniera assolutamente puntuale, controllata ed organizzata.

Ti consente di ricevere velocemente tutte le informazioni inviate dal personale, in maniera assolutamente puntuale, controllata ed organizzata. Sommario A cosa serve InfoWEB?... 3 Quali informazioni posso comunicare o ricevere?... 3 Cosa significa visualizzare le informazioni in maniera differenziata in base al livello dell utente?... 4 Cosa significa

Dettagli

13. Chain of Responsibility

13. Chain of Responsibility Chain of Responsibility 92 13. Chain of Responsibility (GoF pag. 223) 13.1. Descrizione Consente di separare il mittente di una richiesta dal destinario, in modo di consentire a più di un oggetto di gestire

Dettagli