UML: DIAGRAMMA DI SEQUENZA

Размер: px
Начинать показ со страницы:

Download "UML: DIAGRAMMA DI SEQUENZA"

Транскрипт

1 UML: DIAGRAMMA DI SEQUENZA UC n. 4: Basi di dati

2 2 UML e diagrammi di interazione Abbiamo visto il diagramma delle classi in UML Utilizzato per rappresentare strutturalmente il dominio del problema da risolvere Mostra associazioni e dipendenze statiche tra classi di oggetti Non riesce a catturarne il comportamento e le interazioni Modello statico del sistema Diagrammi di interazione Il loro scopo è mostrare come istanze specifiche di Classi (individuate nel modello statico) collaborano ed interagiscono per raggiungere il loro scopo progettuale Realizzare le funzionalità del sistema Realizzare una sotto/mini funzionalità di una parte del sistema

3 3 Tipi di diagrammi di interazione in UML 2 Diagramma di sequenza Enfatizza la sequenza temporale di scambio di messaggi (invocazione di operazioni) tra oggetti utilizzata per raggiungere un obiettivo Diagramma di comunicazione Enfatizza i collegamenti di comunicazione tra oggetti piuttosto che la sequenza in sé Diagramma di sintesi dell interazione Unisce una rappresentazione delle interazioni tra oggetti ad una comportamentale (vedi diagrammi delle attività) Diagramma dei tempi Notazione ripresa dall ambito elettronico. Utile per mostrare specifiche e vincoli temporali esistenti nelle interazioni tra oggetti.

4 4 Diagramma di sequenza: esempio atreno stazionebologna : Stazione stazionerimini : Stazione getpartenza() partenza getarrivo() arrivo calcola() durata

5 5 Diagramma di sequenza: esempio atreno stazionebologna : Stazione stazionerimini : Stazione arrivo : Orario partenza : Orario getpartenza() partenza getarrivo() arrivo minutidamezzanotte() minutidamezzanotte() Message2 diff() durata

6 6 Diagrammi di sequenza: livello di astrazione Come per il diagramma delle classi (in realtà come per ogni diagramma UML) il livello di dettaglio da usare in un diagramma di sequenza dipende Dallo scopo comunicativo Dalla fase del processo di sviluppo in cui ci si trova Fase di analisi Interazione fra oggetti che rappresentano istanze di alto livello del dominio del problema Si sacrificano i dettagli a vantaggio di chiarezza comunicativa (e grafica) Fase di progettazione Si rappresentano le interazioni più dettagliate fra componenti/istanze di oggetti del sistema che si andrà ad implementare Si privilegia il dettaglio che in casi estremi può essere anche massimo (blueprint)

7 7 Diagramma di sequenza Un po di teoria nome : Classe Partecipante Rappresentato nel diagramma come un rettangolo Indica il più delle volte un oggetto di una classe (una istanza) modellata nei diagrammi statici. All interno del rettangolo vale la seguente sintassi: nome : Classe Solo il nome è obbligatorio Se quello che si rappresenta è un istanza della classe, allora il testo nel box è sottolineato

8 8 Diagramma di sequenza Un po di teoria nome : Classe Lifeline Rappresentata come linea tratteggiata sotto il box del partecipante Indica l esistenza del partecipante all interno del sistema.

9 9 Diagramma di sequenza Un po di teoria nome : Classe Attivazione Indica che l istanza corrispondente è attiva Normalmente corrisponde al fatto che si sta eseguendo un operazione sull istanza.

10 10 Diagramma di sequenza Un po di teoria sorgente target Messaggi o1 messaggio() o2 Partecipanti in un diagramma possono scambiarsi messaggi Tipicamente, corrispondono all invocazione di operazioni Esistono diversi tipi di messaggio che possono essere scambiati

11 11 Tipi di Messaggio: Messaggio Sincrono o1 messaggio() o2 Invocazione sincrona Stessa semantica dell invocazione di metodo in Java Un oggetto invia un messaggio (richiesta di operazione) al target e aspetta la sua risposta

12 12 Tipi di Messaggio: Risposta Messaggio di risposta Messaggio di rispsta ad una richiesta precedente Tipicamente, valore di ritorno dell esecuzione di una operazione

13 13 Tipi di Messaggio: Messaggio Asincrono o1 messaggio() o2 Invocazione asincrona Indicato con una freccia dalla punta «a metà» o, in altre notazione, da una freccia dalla punta vuota Indica che il chiamante può proseguire la propria esecuzione senza attendere l esecuzione dell operazione e la relativa risposta Meccanismo diverso dal tipo di chiamate a metodi in Java (sempre sincrono) Esistono tecniche per ottenere l effetto di invocazioni asincrone anche in Java Non lo vedremo in questo corso

14 14 Invocazione sincrona vs asincrona Invocazione sincrona o1 o2 o3 messaggio1() messaggio2()

15 15 Invocazione sincrona vs asincrona Invocazione sincrona o1 o2 o3 messaggio1() La sorgente del messaggio deve aspettare la risposta prima di poter fare altro messaggio2()

16 16 Invocazione sincrona vs asincrona Invocazione asincrona o1 o2 o3 messaggio1() messaggio2()

17 17 Invocazione sincrona vs asincrona Invocazione asincrona o1 messaggio1() o2 o3 La sorgente del messaggio non deve aspettare la risposta prima di poter fare altro messaggio2() Nell esempio manda un altro messaggio ad un altro oggetto ATTENZIONE: Non è detto che le risposte vengano ricevute in ordine

18 18 Parametri nei messaggi Nei messaggi che rappresentano invocazione di operazioni sull oggetto target si possono specificare parametri nella forma nome : tipo Parametri possono essere omessi Il tipo dei parametri è spesso omesso I parametri corrispondono ai cosidetti «parametri attuali» passati nell invocazione dell operazione, non ai «parametri formali»

19 19 Found messages Found Message (messaggio «trovato») Messaggi per i quali la sorgente non è specificata Spesso rappresentano il messaggio che innesca la sequenza di interazioni rappresentata nel diagramma Il loro scopo è di mostrare che il messaggio può essere inviato da oggetti/component/sottosistemi logicamente esterni al componente di cui si mostra l interazione Complementari ai found messages sono i lost messages

20 20 Lost messages Lost Message (messaggio «perduto») Messaggi per i quali il target non è specificato Spesso rappresentano il messaggio che si restituisce al partecipante che ha innescato l interazione Il loro scopo è di mostrare che il messaggio può essere ricevuto da oggetti/component/sottosistemi logicamente esterni al componente di cui si mostra l interazione

21 21 Messaggi di creazione Indicano che un oggetto istanzia un altro oggetto Si utilizza il nome del messaggio new La freccia non punta alla lifeline ma al box che rappresenta l istanza appena creata

22 22 Messaggi di distruzione Indicano che un oggetto elimina intenzionalmente un altro oggetto In C++ può corrispondere ad una chiamata al distruttore In Java non c è un operazione esplicita: garbage collector Si può utilizzare comunque per rappresentare un intenzione piuttosto che l azione esplicita

23 23 Strutture di controllo Nei linguaggi di programmazione con il termine struttura di controllo si indicano le istruzioni (e la loro modalità d uso) che alterano il flusso puramente sequenziale del programma Istruzioni condizionali (if-then-else,?: ) Iterazioni ( for, while, do-while ) Anche UML definisce dei simboli grafici equivalenti utilizzabili nei diagrammi di sequenza Basati sul concetto di Combined Fragment (letteralmente, «frammento combinato»)

24 Combined Fragment 24

25 25 Combined Fragments: Operatore Operatore

26 26 Combined Fragments: Tipo di Operatore Come vedremo subito, l operatore di un combined fragment stabilisce il significato delle interazioni rappresentate al suo interno Esistono diversi tipi di operatori. Alcuni esempi: alt: alternativa opt: interazione opzionale loop: iterazione break: interazione da interrompere

27 27 Combined Fragment: Operandi Operando1 Operando2

28 28 Combined Fragments: Operandi Operando1 Operando interno ad un combined fragment individua a sua volta un frammento di interazione, i.e., una sequenza specifica di scambio di messaggi Operando2 Notazione Diversi operandi all interno di un combined fragment sono separati da linee orizzontali tratteggiate

29 29 Combined Fragment: Guardie Guardia Guardia

30 30 Combined Fragments: Guardie Guardia Rappresentata nell ambito di un operando di un combined fragment E una condizione logica racchiusa tra parentesi quadre (es, [ saldo >= prezzo ]) Abilita l esecuzione dell operando a cui si riferisce nel caso in cui la condizione logica sia verificata Il significato specifico dipende dal tipo di operatore

31 Combined fragment: «alt» 31

32 32 Combined fragment: «alt» Accetta due o più operandi e rappresenta l esecuzione alternativa del framento di interazione di uno di questi Al più uno tra gli operandi viene eseguito: quello con la guardia verificata Le condizioni delle guardie devono essere mutuamente esclusive

33 33 Combined fragment: «alt» if ( saldo >= prezzo ) { boolean ok = unconto.preleva(); return ok; } else { return false; }

34 Combined fragment: «opt» 34

35 35 Combined fragment: «opt» Accetta un solo operando che viene eseguito se e solo se la sua guardia viene valutata vera E equivalente ad un alt con due operanti in cui il secondo operando è vuoto

36 36 Combined fragment: «opt» if ( saldo >= prezzo ) { boolean ok = unconto.preleva(); return ok; }

37 Combined fragment: «loop» 37

38 38 Combined fragment: «loop» Accetta un solo operando che viene eseguito fin quando la guardia viene valutata vera Informalmente, spesso possono essere utilizzate anche espressioni più semplici ma di più comodo uso (es. [ 5 volte ], [ i <- 0 to 5 ], )

39 39 Combined fragment: «loop» while ( saldo > 0 ) { unconto.preleva(); saldo = unconto.richiestasaldo(); }

40 Combined fragment: «break» 40

41 41 Combined fragment: «break» Accetta un solo operando che viene eseguito quando la guardia viene valutata vera Quando l operando del brake viene eseguito, tutte le interazioni successive al combine fragment vengono ignorate!

42 42 Combined fragment: «loop» if ( saldo <= 0 ){ equitalia.segnala( ); return; } if ( saldo <= 0 ){ equitalia.segnala( ) throw new Exception(); }

43 43 Un esempio Pagamento in un supermercato *da

44 *da 44

45 45 Esercizio Ordinazioni in un negozio Avete salvato il modello statico UML del problema del negozio studiato la scorsa lezione? Creiamo insieme il diagramma di sequenza che descrive lo scambio di messaggi necessario per portare a termine un ordine tramite quel modello.

46 46.. ed ora ++SnowTrain

Ingegneria del Software 4. Introduzione a UML. Dipartimento di Informatica Università di Pisa A.A. 2014/15

Ingegneria del Software 4. Introduzione a UML. Dipartimento di Informatica Università di Pisa A.A. 2014/15 Ingegneria del Software 4. Introduzione a UML Dipartimento di Informatica Università di Pisa A.A. 2014/15 e per i modelli iterativi analisi peliminare analisi e progettazione realizzazione Necessità di

Подробнее

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Подробнее

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Подробнее

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Подробнее

Istruzioni Condizionali

Istruzioni Condizionali Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 6 Istruzioni Condizionali Carla Limongelli Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Istruzioni condizionali

Подробнее

DIAGRAMMI DI SEQUENZA

DIAGRAMMI DI SEQUENZA DIAGRAMMI DI SEQUENZA Francesco Poggi [email protected] A.A. 2015-2016 Premessa As always, there is never a correct solution to any modelling problem. It s more that some models are more precise, and

Подробнее

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema

Подробнее

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema

Подробнее

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione

Подробнее

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Подробнее

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Подробнее

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Подробнее

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Подробнее

Fondamenti di Informatica

Fondamenti di Informatica Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile

Подробнее

Le funzioni in JavaScript. Modularizzazione

Le funzioni in JavaScript. Modularizzazione Modularizzazione Quando abbiamo a che fare con un problema complesso spesso lo suddividiamo in problemi più semplici che risolviamo separatamente, per poi combinare insieme le soluzioni dei sottoproblemi

Подробнее

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura

Подробнее

Alcuni diagrammi. OCL (Object Constraint Language)

Alcuni diagrammi. OCL (Object Constraint Language) UML e Java UML Alcune discipline ingegneristiche dispongono di validi mezzi di rappresentazione (schemi, diagrammi di prestazioni e consumi,...) Il software non dispone ancora di tecniche efficaci per

Подробнее

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

Подробнее

Automa a Stati Finiti (ASF)

Automa a Stati Finiti (ASF) Automa a Stati Finiti (ASF) E una prima astrazione di macchina dotata di memoria che esegue algoritmi Introduce il concetto fondamentale di STATO che informalmente può essere definito come una particolare

Подробнее

Informatica (A-K) 5. Algoritmi e pseudocodifica

Informatica (A-K) 5. Algoritmi e pseudocodifica Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Подробнее

Modello a scambio di messaggi

Modello a scambio di messaggi Modello a scambio di messaggi Aspetti caratterizzanti il modello Canali di comunicazione Primitive di comunicazione 1 Aspetti caratterizzanti il modello modello architetturale di macchina (virtuale) concorrente

Подробнее

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Подробнее

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

Подробнее

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE 1 ALGORITMO, PROGRAMMA, PROCESSO Algoritmo Procedimento logico che deve essere eseguito per risolvere un determinato problema. Programma Descrizione di un

Подробнее

STRUTTURE DI CONTROLLO DEL C++

STRUTTURE DI CONTROLLO DEL C++ STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto

Подробнее

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio C: le funzioni. Introduzione e sintassi ISIS "Guido Tassinari" di Pozzuoli Indirizzo Informatico - Articolazione Informatica Informatica Prof. A.S. 2012/2013 Linguaggio C: le funzioni. Introduzione e sintassi 21/10/2012 Introduzione Spesso alcuni

Подробнее

Programmazione con Java

Programmazione con Java Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:

Подробнее

Modello a scambio di messaggi

Modello a scambio di messaggi Modello a scambio di messaggi PRIMITIVE PER LO SCAMBIO DI MESSAGGI Un messaggio si può considerare costituito da: origine, destinazione e contenuto type messaggio = record origine:. ; destinazione:. ;

Подробнее