UML: Collaboration diagram Corso IS I /03 Gianna Reggio Versione 1.0
v. 1.0 Collaboration In un sistema OO le funzionalità del sistema sono realizzate dagli oggetti che lavorano assieme Per lavorare assieme gli oggetti devono comunicare tra di loro, scambiandosi messaggi Collaboration in UML indica questo lavorare assieme Esempi dal sistema Briscola on line [un sistema WEB based per permettere di organizzare dei tornei di briscola] –Un giocatore si iscrive ad un torneo –Due coppie si accordano per giocare una partita ad una certa ora in un certo giorno –Il gestore di un torneo comunica ai rappresentanti di due coppie che devono scontrarsi in un certo torneo
v. 1.0 Collaboration diagram (specification level) Presenta una collaborazione generica –tra generici ruoli per gli oggetti, può contenere alternative, cicli da eseguire un numero di volte prefissato Esempi –Come un generico giocatore si iscrive ad un generico torneo –Come due generici giocatori si accordano
v. 1.0 classe nome del ruoloanonimo Ingredienti (1) RUOLI = i partecipanti (generici) alla collaborazione :Giocatore/Campionato:Torneo Associazioni che eventualmente legano tali ruoli –mostrati come ASSOCIATION ROLE (rappresentano generici links tra i generici oggetti [ruoli]) /C1:Coppia:Torneo/C2:Coppia iscrittaA association role
v. 1.0 verso della comunicazione Ingredienti (2) MESSAGGIO = descrizione di una comunicazione/interazione tra due ruoli :Giocatore/Campionato:Torneo messaggio Messaggio guard sequence-expr return-value := message-name (argument-list) operazione o signal [prossimamente] o create o destroy opzionale argomenti operazione/ signal opzionale se operazione ritorna risultato definisce lordine relativo tra i messaggi presenti nel collaboration diagram espressione booleana deve essere vera prima di poter mandare il messaggio
v. 1.0 Ingredienti (3) Tipi di comunicazione –Sincrona (il mandante aspetta la fine dellazione che risulta dalla comunicazione) –Asincrona (il mandante non aspetta …) –Flat (non si precisa se sincrono o asincrono) –Return (esplicita il ritorno del controllo del flusso al chiamante)
v. 1.0 Esempio Collaboration Diagram iscrizione di una coppia ad un torneo /G1:Giocatore/T:Torneo 1: nuovoTorneo(\T,descr) /G2:Giocatore/C:Coppia primo secondo 3: si(\T,descr) 2: interessa(\T,descr) 4: attivatiPer(\T) 5: iscrivi(\C) 6: ok(\C) 7: ok(\T) 8: ok(\T)
v. 1.0 Esercizio Completare il class diagram della briscola in modo che tutte le operazioni usate nel collaboration della slide precedente siano definite Dare i collaboration diagram corrispondenti ai casi –il partner non è interessato al torneo –la coppia tenta di iscriversi quando il torneo è già completo
v. 1.0 Sequence-expr numeri ordinati (es., 1: 2: …..) *interazioni eseguite una dopo laltra –interazioni annidate (esguite nel body di un metodo/operazione) *es. 2.1: 2.2: 2.3: 2.2.1: 2.2.2: 2.2.3: a qualunque livello
v. 1.0 Esempio2 Collaboration Diagram accordarsi per giocare una partita in un torneo /T:Torneo/C2:Coppia/C1:Coppia 3: contropropsta(P,D1) 2: proposta(P,D) 4: fissaData(P,D1) 1.2: giocate(P,\C1) 1.1: giocate(P,\C2) ritenete accettabile questo procedimento? in caso negativo, modificarlo 1: fissaPartita(P,\C1,\C2)
v. 1.0 Collaboration diagram (instance level) Come quelli a specification level, ma –oggetti invece di class role –link [istanziazioni di associazioni] invece di association role –stimuli [istanziazioni di messaggi] invece di messaggi :GiocatoreCampionato:Torneo stimulus nome delloggettoanonimo Oggetti possono essere marcati {new} per quelli creati e {destroyed} quelli terminati nella collaborazione