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.

Figura 3.4. Descrierea comportamentului obiectelor clasei BCoada<br />

Blocarea <strong>si</strong> <strong>de</strong>blocarea cozii se realizeaza prin intermediul operatiilor<br />

Blocare(), respectiv Deblocare() ale clasei nou create BCoada. Si acest caz a fost<br />

implementat folo<strong>si</strong>nd mecanismele <strong>de</strong> <strong>si</strong>ncronizare amintite. Astfel, pentru multimile<br />

<strong>de</strong> acceptare este necesara adaugarea unei noi stari, ceea ce implica aparitia<br />

anomaliilor <strong>de</strong> mostenire, dupa cum s-a vazut <strong>si</strong> la exemplul anterior. În cazul<br />

meto<strong>de</strong>lor cu garzi este necesara modificarea conditiilor din garzi pentru a fi luata <strong>în</strong><br />

con<strong>si</strong><strong>de</strong>rare noua proprietate blocat, <strong>si</strong> <strong>de</strong>ci este necesara re<strong>de</strong>finirea operatiilor<br />

Adauga() <strong>si</strong> Extrage() fara a modifica <strong>de</strong>loc functionalitatea acestora.<br />

Cla<strong>si</strong>ficarea realizata <strong>de</strong> Matsuoka <strong>si</strong> Yonezawa reprezinta o prima <strong>în</strong>cercare<br />

<strong>de</strong> <strong>de</strong>terminare <strong>si</strong>stematica a cauzelor care conduc la aparitia anomaliilor <strong>de</strong><br />

mostenire. Din pacate aceasta cla<strong>si</strong>ficare nu are un fundament teoretic, ea bazându-se<br />

strict pe testarea cazurilor <strong>în</strong> care multimea <strong>de</strong> stari abstracte a unei clase este<br />

modificata <strong>în</strong> <strong>de</strong>scen<strong>de</strong>ntii sai. Prin urmare, nu exista nici o garantie ca respectiva<br />

cla<strong>si</strong>ficare sa fie completa <strong>si</strong> corecta, realizarea ei <strong>de</strong>pinzând strict <strong>de</strong> "bunul-<strong>si</strong>mt" <strong>si</strong><br />

experienta autorilor.<br />

Mai mult, nu este surprins cazul <strong>în</strong> care se ajunge la o anomalie <strong>de</strong> mosternire<br />

fara ca multimea starilor abstracte sa fie modificata <strong>în</strong> clasa fiu. Astfel, pentru<br />

exemplul <strong>de</strong> mai sus <strong>si</strong> folo<strong>si</strong>nd anumite mecanisme <strong>de</strong> coordonare a interactiunilor<br />

concurente particulare, construirea unei subclase a clasei Coada care sa contina o<br />

operatie ce extrage ultimul element al cozii conduce la re<strong>de</strong>finirea nejustificata din<br />

puct <strong>de</strong> ve<strong>de</strong>re functional a tuturor operatiilor din superclasa (acest lucru poate fi<br />

62

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

Saved successfully!

Ooh no, something went wrong!