Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Permit specificarea in detaliu a modului in care obiectele interactioneaza pentru a executa un task.
Principala utilizare a acestor diagrame este de a ilustra modul in care sistemul realizeaza un caz de utilizare sau un anumit scenariu dintr-un caz de utilizare.
UML furnizeaza doua tipuri de diagrame de interactiune: diagrame de colaborare si diagrame de secventa.
Obiectele care interactioneaza pentru a executa un task impreuna cu legaturile dintre ele formeaza o colaborare.
Cuprinde urmatoarele componente:
Obiecte: Reprezentate prin dreptunghiuri (numeObiect:NumeClasa sau :NumeClasa).
Legaturi: Reprezentate la fel ca asocierile dintre clase. Deoarece o legatura este o instanta a unei asocieri, intre clasele corespunzatoare oricaror doua obiecte care au o legatura trebuie sa existe o asociere.
Actori: Reprezentati la fel ca si in diagramele de cazuri de utilizare. In situatia in care colaborarea descrie realizarea unui caz de utilizare, actorii din colaborare vor corespunde cu actorii din diagrama cazului de utilizare corespunzator. Pot exista mai multi actori, insa numai unul singur va initia cazul de utilizare.
Mesaje: Numele mesajelor se reprezinta alaturi de liniile ce descriu legaturile dintre obiecte, iar directia de transmitere a mesajului este indicata printr-o sageata (mesajul va fi transmis de la obiectul aflat la baza sagetii catre obiectul aflat la varful sagetii).
Diagrama de interactiune contribuie la identificarea asocierilor dintre clase si a operatiilor claselor: daca un mesaj este transmis de la un obiect a:A catre obiectul b:B, obiectul destinatar (b) trebuie sa intelega mesajul, deci este necesar ca in clasa din care face parte obiectul (B) sa existe o operatie corespunzatoare mesajului.
Interactiuni procedurale: dupa transmiterea unui mesaj, obiectul care trimite mesajul asteapta raspunsul inainte de a-si continua functionarea.
Un obiect incepe sa lucreze atunci cand primeste un mesaj; se spune ca in acel moment obiectul este activat.
In cele din urma el trebuie sa trimita un raspuns celui care a trimis mesajul, iar intre timp el poate fie sa lucreze, fie poate trimite mesaje altor obiecte pentru a le face pe acestea sa lucreze.
Daca trimite un mesaj, el va fi in continuare activ, dar nu va putea sa lucreze pana cand nu va primi raspunsul la acest mesaj: mesajul este sincron, adica la transmitera unui mesaj se transmite controlul celui care primeste mesajul.
Totul poate fi imaginat ca o stiva de activari, fiecare activare fiind asociata cu un obiect care a primit un mesaj la care nu a raspuns inca.
Mesajele sunt numerotate, folosind urmatoarea regula:
Primul mesaj transmis de la un obiect la altul este numerotat cu 1, urmatorul cu 2, etc.
Cand un obiect a primeste un mesaj, numarul acelui mesaj va fi folosit ca prefix pentru toate mesajele trimise pana cand a raspunde la acest mesaj.
Diagrame de secventa
Un tip de diagrama de interactiune care pune in evidenta transmiterea mesajelor de-a lungul timpului.
Obiectele si actorii sunt reprezentati la capatul de sus al unor linii punctate, care reprezinta linia de viata a obiectelor. Scurgerea timpului este reprezentata in cadrul diagramei de sus in jos.
Un mesaj se reprezinta printr-o sageata de la linia de viata a obiectului care trimite mesajul la linia de viata a celui care-l primeste.
Timpul cat un obiect este activat este reprezentat ca un dreptunghi subtire care acopera linia sa de viata.
Optional pot fi reprezentate raspunsurile la mesaje printr-o linie punctata, dar acest lucru nu este necesar.
Diagramele de colaborare arata care obiecte sunt create si distruse in timpul interactiunii folosind stereotipurile « create » respectiv « destroy ».
Diagramele de secventa arata ca un obiect este creat prin plasarea acestuia in josul paginii, pozitia sa corespunzand cu momentul in care a fost creat obiectul. Distrugerea unui obiect este reprezentata printr-un X.
Pentru a arata ca un mesaj poate fi trimis in mod repetat se foloseste un asterisc pozitionat dupa numarul mesajului. In plus, dupa asterisc se poate indica o clauza de iteratie, care determina de cate ori va fi trimis mesajul. Clauza de iteratie poate avea diverse forme:
[n < 10] : mesajul este trimis in mod repetat atat timp cat n este mai mic decat 10 (echivalentul constructiei while);
[not x] : mesajul este trimis in mod repetat pana cand x devine adevarat;
[i := 1..10] : mesajul este trimis de 10 ori (echivalentul constructiei for);
[y in Y] : mesajul este trimis in mod repetat pentru fiecare y din colectia Y.
Interactiune procedurala: in fiecare moment lucreaza un singur obiect.
Exista insa situatii cand sistemele sunt concurente:
Un obiect trimite simultan mai multe mesaje, ducand astfel la transmiterea controlului mai multor obiecte in acelasi timp: mai multe sageti care pleaca din acelasi loc, fara a avea asociate conditii sau cu conditii care nu sunt disjuncte.
Un actor sau un obiect activ trimite un mesaj la un anumit moment desi obiectul care lucreaza in acel moment nu este el, ci un alt obiect din sistem.
Un obiect trimite un mesaj asincron, adica un mesaj care face ca alt obiect sa lucreze fara ca obiectul care a trimis mesajul sa-si inceteze lucrul.
mesaje sincrone ) : specifice functionarii procedurale: obiectul care trimite un mesaj pierde controlul pana cand primeste raspuns.
mesaje de raspuns ) : raspunsuri la mesajele sincrone; reprezentarea lor este optionala.
mesaje asincrone ) : care nu asteapta raspuns, iar cel care trimite mesajul ramane activ si poate trimite alte mesaje.
mesaje simple ) : care nu asteapta raspuns, numai ca in acest caz obiectul care trimite mesajul pierde controlul, iar urmatorul mesaj va fi trimis de catre obiectul destinatar.
Copyright © 2024 - Toate drepturile rezervate