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.

obtinuta prin constrângerea tuturor instantelor ale aceluia<strong>si</strong> tip <strong>de</strong> a evolua prin acela<strong>si</strong><br />

numar <strong>de</strong> stari <strong>de</strong> baza (<strong>de</strong>finitia 10). Prin urmare se con<strong>si</strong><strong>de</strong>ra ca toate instantele<br />

tipului respectiv sunt implementate prin ma<strong>si</strong>ni <strong>de</strong> stari <strong>si</strong>milare. Cea <strong>de</strong>-a doua<br />

submultime <strong>de</strong> anomalii este obtinuta permitând instantelor aceluia<strong>si</strong> tip sa evolueze<br />

<strong>în</strong> stari aditionale, dar numai <strong>în</strong> cazul <strong>în</strong> care aceste stari reprezinta ver<strong>si</strong>uni restrânse<br />

ale starilor <strong>de</strong> baza (<strong>de</strong>finitia 11).<br />

Intuitiv, starea unui obiect este <strong>de</strong>terminata <strong>de</strong> valorile propriilor atribute.<br />

Acest lucru <strong>în</strong>sa nu este observabil din exterior. De aceea vom con<strong>si</strong><strong>de</strong>ra o stare ca<br />

fiind multimea secventelor <strong>de</strong> mesaje care sunt acceptabile la un moment dat. Fie p o<br />

instanta a clasei Coada. Initial, p poate accepta orice secventa din beh(p). Prin<br />

urmare starea initiala a lui p este beh(p). Dupa acceptarea mesajului Adauga,<br />

multimea secventelor <strong>de</strong> mesaje acceptabile se modifica (<strong>de</strong> exemplu secventa<br />

nu era acceptata <strong>în</strong> starea initiala dar acuma da - este secventa corespunzatoare care este acceptata din starea<br />

initiala). Vom spune astfel ca p evolueaza <strong>de</strong> la starea initiala la o noua stare. De<br />

exemplu, secventele <strong>de</strong> mesaje , , < Adauga,<br />

Extrage, Adauga> conduc toate spre accea<strong>si</strong> stare a lui p. Functia state din<br />

semanticile starilor <strong>de</strong>rivate <strong>de</strong>scrise <strong>în</strong> figura 3.7 primeste starea initiala a unei<br />

instante <strong>si</strong> returneaza starea instantei dupa acceptarea secventei <strong>de</strong> mesaje u. Functia<br />

States retunreaza pe baza starii initiale a unei instante, multimea tuturor starilor<br />

instantei (multime ce poate fi infinita).<br />

state(?)u.<br />

Propozitie 4. Fie ?, ? ? ? (Key * ) <strong>si</strong> ? T ?. Atunci, ? u ? ?, state(?)u T<br />

Demonstratie. Fie u ? ?. Deoarece ? ? ?, u ? ? <strong>si</strong> state(?)u ? ? . Fie t ?<br />

state(?)u. Atunci u^t ? ?. Deci t ? state(?)u <strong>si</strong> avem state(?)u ? state(?)u.<br />

Fie z ? state(?)u. Rezulta ca u^z ? ? <strong>si</strong> <strong>de</strong>oarece ? T ?, u^z = (u^z1)^z2 un<strong>de</strong><br />

u^z1? ? <strong>si</strong> primul <strong>si</strong>mbol din z2 nu apare niciodata <strong>în</strong> ?. Prin urmare, z1 ? state(?)u. ?<br />

Pentru a exemplifica propozitia 4 sa con<strong>si</strong><strong>de</strong>ram o instanta, p, a clasei Coada,<br />

<strong>si</strong> o instanta, q, a clasei Coada2. Dupa acceptarea unei secvente <strong>de</strong> mesaje u, p va<br />

ajunge <strong>în</strong>tr-o stare ?, iar q <strong>în</strong>tr-o stare ?. Intuitiv putem spune ca <strong>în</strong>tre cele doua stari<br />

trebuie sa existe o relatie strânsa. Propozitia 4 arata ca orice secventa <strong>de</strong> mesaje<br />

acceptabila din starea ? este <strong>de</strong> asemenea acceptabila <strong>si</strong> din starea ?. Acest lucru<br />

trebuie sa aiba loc <strong>de</strong>oarece Coada2 implementeaza un subtip al tipului implementat<br />

77

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

Saved successfully!

Ooh no, something went wrong!