Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A Design Pattern E.
|
|
- Placido Berardi
- 8 anni fa
- Visualizzazioni
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 Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali
DettagliL 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,
DettagliDesign 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.
DettagliSoluzione 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
Dettagli10. 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
DettagliIndice 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)
DettagliDESIGN 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
DettagliIngegneria 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
DettagliTipi 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
Dettagli12 - 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,
DettagliProgettazione! 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!
DettagliEsercitazioni 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
DettagliProgrammazione 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 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se
DettagliFunzioni 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
DettagliGESTIONE 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
DettagliDesign 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
DettagliIngegneria 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,
DettagliConsidera 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
DettagliAlcuni 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)
DettagliProtezione. 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
DettagliProgrammazione 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)
DettagliI 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
DettagliSistemi 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
DettagliMECCANISMI 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
DettagliAutomazione 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
DettagliRIFERIMENTI 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
DettagliGenerazione 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:
DettagliModulo 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
DettagliMain 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
DettagliCorso 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
DettagliEsercitazione 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
DettagliLa 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
DettagliOggetti 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
DettagliOrganizzazione 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
Dettagli7. 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
DettagliCorso 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
DettagliDatabase. 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
DettagliGenLApp 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à
DettagliCORSO 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
DettagliIntroduzione 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
DettagliObject 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
Dettaglilem 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
DettagliBrochure 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
DettagliObject 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
DettagliParola 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
DettagliCoordinazione 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,
DettagliConcetto 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
DettagliIndice. pagina 2 di 10
LEZIONE PROGETTAZIONE ORGANIZZATIVA DOTT.SSA ROSAMARIA D AMORE Indice PROGETTAZIONE ORGANIZZATIVA---------------------------------------------------------------------------------------- 3 LA STRUTTURA
DettagliTelerilevamento 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
Dettagli5.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
DettagliApproccio 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
DettagliEsercizio 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
DettagliIl 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
DettagliNOTE 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
Dettagli1. 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
DettagliSCENARIO. 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,
Dettaglidesign 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
DettagliFondamenti 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
DettagliTitolare 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
DettagliJava: 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
DettagliEVOLUZIONE 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
DettagliReflection 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
Dettagli3 - 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
DettagliSistemi 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
DettagliCorso 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
DettagliAlgoritmi 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
DettagliStrutturazione 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
Dettaglimanifatturiera 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
DettagliIntroduzione. 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,
DettagliRaccolta 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
DettagliBase 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
DettagliMANUALE 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.
DettagliArchivi 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
DettagliCOME 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
DettagliUniversità 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
DettagliFondamenti 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
DettagliIntroduzione 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
DettagliRiepilogo 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
DettagliUTILIZZATORI 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
DettagliUML 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
DettagliLa 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
DettagliStrumenti 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
DettagliSequenza 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
DettagliComunicazione 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
DettagliProgrammazione 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
DettagliInizializzazione, 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
DettagliTelematica 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
DettagliI 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
DettagliMon 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
DettagliArchitetture Applicative
Alessandro Martinelli alessandro.martinelli@unipv.it 6 Marzo 2012 Architetture Architetture Applicative Introduzione Alcuni esempi di Architetture Applicative Architetture con più Applicazioni Architetture
DettagliCorso 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
DettagliModellazione 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):
Dettagli03. 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
DettagliAnalisi 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
DettagliProgramma 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
DettagliDESIGN 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
DettagliCorso 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
DettagliTi 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
Dettagli13. 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