18.04.2013 Views

Tehnici de implementare a concurentei în analiza si proiectarea ...

Tehnici de implementare a concurentei în analiza si proiectarea ...

Tehnici de implementare a concurentei în analiza si proiectarea ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

atunci o <strong>si</strong>gura substare a sa poate fi activa la un moment dat. În cazul <strong>concurentei</strong><br />

vor fi active toate subregiunile starii compuse.<br />

În diagramele <strong>de</strong> stari din UML exista trei modalitati prin care o sub-stare<br />

<strong>de</strong>vine activa <strong>în</strong> cazul unei tranzitii <strong>în</strong>tr-o stare compusa: implicit, explicit <strong>si</strong> prin<br />

intermediul pseudostarii istoric. În figura 4.10 sunt reprezentate grafic toate aceste<br />

cazuri, cu remarca suplimentara ca <strong>în</strong> cazul <strong>în</strong> care sub-starile sunt la rândul lor stari<br />

compuse, activarea se va face analog recur<strong>si</strong>v. Indiferent <strong>de</strong> modalitatea <strong>în</strong> care se<br />

realizeaza tranzitia <strong>în</strong> cadrul unei stari compuse se va executa secventa <strong>de</strong> actiuni<br />

entry() specificata pentru aceasta stare. Un caz <strong>de</strong>osebit este cel <strong>în</strong> care starea<br />

compusa contine mai multe componente concurente (ortogonale). În acest caz se va<br />

utiliza o tranzitie complexa cu ajutorul pseudostarii fork, <strong>si</strong> fiecare regiune<br />

(componenta) concurenta <strong>în</strong> care va intra o astfel <strong>de</strong> tranzitie va activa o substare a sa<br />

dupa mo<strong>de</strong>lul starilor compuse prezentat anterior. Pentru regiunile <strong>în</strong> care nu intra<br />

nici o tranzitie se va activa starea implicita (care este <strong>de</strong>stinatie a unei tranzitii<br />

initiale).<br />

Se <strong>de</strong>fineste tranzitia <strong>de</strong> terminare ca fiind o tranzitie a carei sursa este o stare<br />

<strong>si</strong>mpla sau stare compusa <strong>si</strong> care este neetichetata. O astfel <strong>de</strong> tranzitie este activata<br />

atunci când starea sursa a atins o stare finala. De asemenea, se <strong>de</strong>fineste termenul <strong>de</strong><br />

tranzitie <strong>de</strong> nivel <strong>în</strong>alt ca fiind acea tranzitie a carei sursa este o stare compusa.<br />

neetichetate:<br />

Sun mai multe cazuri distincte <strong>în</strong> care putem avea <strong>în</strong>tr-un mo<strong>de</strong>l tranzitii<br />

- tranzitii din stari initiale care nu apartin starii compuse <strong>de</strong> la nivelul unu<br />

(optional poate apare ca eticheta o expre<strong>si</strong>e booleana),<br />

- tranzitii <strong>de</strong> terminare,<br />

- tranzitii spre stari finale aflate <strong>în</strong> cadrul starii compuse <strong>de</strong> nivel unu care<br />

sugereaza <strong>si</strong>mpla distrugere a obiectului prin apelul <strong>de</strong>structorului<br />

(optional – pot apare ca etichete nume <strong>de</strong> evenimente care <strong>de</strong>termina<br />

distrugerea obiectului),<br />

- tranzitii care ies din pseudostarile istoric <strong>si</strong> fork <strong>si</strong> care intra <strong>în</strong><br />

pseudostarea join.<br />

Ie<strong>si</strong>rea din cadrul unei stari compuse este tratata foarte pe scurt <strong>în</strong><br />

documentatia UML, nein<strong>si</strong>stându-se prea mult cu explicatii pe marginea tranzitiilor <strong>de</strong><br />

terminare.<br />

107

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!