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 ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
mostenire <strong>în</strong> cadrul programarii orientate-obiect concurente. Din pacate, asa cum am<br />
vazut, studiul realizat <strong>în</strong> aceasta lucrare conduce la concluzii nesatisfacatoare. Totu<strong>si</strong>,<br />
anomaliile <strong>de</strong> rescriere fortata care <strong>în</strong>locuiesc conceptul <strong>de</strong> anomalii <strong>de</strong> mostenire <strong>si</strong><br />
care au fost introduse <strong>în</strong> [ZEN97b] are un caracter mult mai general, chiar daca acest<br />
lucru s-a realizat doar la nivel <strong>de</strong> <strong>de</strong>numire (<strong>si</strong>ngurele tipuri <strong>de</strong> anomalii <strong>de</strong> rescriere<br />
date ca exemplu au fost cele trei amintite <strong>în</strong> [MAT93]).<br />
Între clasele care <strong>de</strong>scriu la un moment dat o anumita problema pot exista<br />
patru tipuri <strong>de</strong> relatii. Un prim tip <strong>de</strong> relatie este aceea <strong>de</strong> mostenire, care permite<br />
reutilizarea structurii <strong>si</strong> functionalitatii unei clase <strong>în</strong> <strong>de</strong>finirea altei clase.<br />
Exista limbaje <strong>de</strong> programare (ca, <strong>de</strong> exemplu, SINA) care nu au implementat<br />
un mecanism pentru <strong>de</strong>scrierea unei astfel <strong>de</strong> relatii. În aceste limbaje generalizarea<br />
sau specializarea unei clase se realizeaza prin intermediul mecanismului <strong>de</strong> <strong>de</strong>legare.<br />
Relatia <strong>de</strong> <strong>de</strong>legare dintre doua clase este tot o relatie <strong>de</strong> reutilizare <strong>si</strong> ea presupune<br />
redirectarea potentiala a mesajelor receptionate <strong>de</strong> catre un obiect spre un asa-numit<br />
obiect <strong>de</strong>legat. Obiectul <strong>de</strong>legat trebuie sa faca parte efectiv din constructia primului<br />
obiect. Relatia <strong>de</strong> <strong>de</strong>legare este o relatie mult mai puternica <strong>de</strong>cât mostenirea,<br />
<strong>de</strong>oarece ea poate <strong>si</strong>mula aceasta relatie <strong>si</strong>, <strong>în</strong> plus, poate mo<strong>de</strong>la o evolutie dinamica<br />
a <strong>si</strong>stemelor (lucru pe care mostenirea, ca relatie statica dintre clase, nu îl poate<br />
realiza).<br />
O a treia relatie po<strong>si</strong>bila <strong>în</strong>tre clasele unui <strong>si</strong>stem este relatia <strong>de</strong> agregare. Ea<br />
implica existenta unei relatii <strong>de</strong> tip parte-<strong>în</strong>treg <strong>în</strong>tre instantele claselor aflate <strong>în</strong><br />
aceasta relatie.<br />
Relatia <strong>de</strong> asociere este cea <strong>de</strong>-a patra relatie po<strong>si</strong>bila <strong>în</strong> care se pot afla doua<br />
clase ale unui <strong>si</strong>stem. Aceasta relatie mai poarta numele <strong>si</strong> <strong>de</strong> relatie <strong>de</strong> utilizare<br />
<strong>de</strong>oarece, la un moment dat, un obiect unei clase se foloseste <strong>de</strong> serviciile oferite <strong>de</strong><br />
catre un obiect al clasei asociate.<br />
Cele patru relatii <strong>de</strong>scrise mai sus reprezinta tot atâtea cai <strong>de</strong> reutilizare a<br />
claselor <strong>de</strong>finite <strong>în</strong>tr-o anumita biblioteca. În cele ce urmeaza vom arata ca, <strong>în</strong>tr-un<br />
context concurent, existenta uneia dintre aceste relatii poate <strong>de</strong>termina <strong>în</strong> anumite<br />
conditii re<strong>de</strong>finiri netriviale <strong>de</strong> operatii precum <strong>si</strong> violari grave ale <strong>în</strong>capsularii. Prin<br />
urmare, au loc efectele con<strong>si</strong><strong>de</strong>rate <strong>în</strong> [MAT93] <strong>în</strong> <strong>de</strong>scrierea anomaliilor <strong>de</strong><br />
mostenire.<br />
65