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.
vom avea ca impT(R) = impT(Q). Însa, prin constructie, clasa R nu re<strong>de</strong>fineste cod<br />
functional din P. Prin urmare anomalia <strong>de</strong> mostenire are loc doar la nivelul codului<br />
<strong>de</strong> <strong>de</strong>scriere a constrângerilor <strong>de</strong> <strong>si</strong>ncronizare. ?<br />
Propozitia 9 <strong>de</strong>monstreaza faptul ca specificarea <strong>si</strong> mostenirea separata a<br />
codului <strong>de</strong> <strong>implementare</strong> a constrângerilor <strong>de</strong> <strong>si</strong>ncronizare conduce la ameliorarea<br />
anomaliilor <strong>de</strong> mostenire prin directionarea efectului acesteia doar asupra operatiilor<br />
care implementeaza acest cod. Prin urmare codul <strong>de</strong> <strong>de</strong>scriere a functionalitatii<br />
obiectelor active nu nece<strong>si</strong>ta rescriere. Limbajele <strong>de</strong> programare care implementeaza<br />
o notiune <strong>de</strong> tip TypesT <strong>si</strong> respecta <strong>în</strong>tocmai conditiile <strong>de</strong>finitiei 12 sunt limbajele cu<br />
mecanisme <strong>de</strong> <strong>si</strong>ncronizare cu control reflectiv. Limbajele cu mecanisme <strong>de</strong><br />
<strong>si</strong>ncronizare cu control mixt ofera <strong>în</strong> general suport pentru respectarea <strong>de</strong>finitie 12,<br />
<strong>în</strong>sa ele nu garanteaza respectarea acesteia (<strong>de</strong>finitia 12 poate fi respectata doar<br />
urmând o anumita disciplina <strong>de</strong> programare).<br />
3.5. Concluzii<br />
Rezultatele formalizarii anomaliilor <strong>de</strong> mostenire din sectiunea 3.3.<br />
<strong>de</strong>mostreaza faptul ca nu exista un mo<strong>de</strong>l obiect i<strong>de</strong>al, <strong>în</strong> care sa nu fie prezente<br />
anomalii <strong>de</strong> reutilizare. Efectul acestor anomalii poate fii <strong>în</strong>sa ameliorat.<br />
Respectarea principiile enuntate <strong>în</strong> cadrul capitolului doi <strong>si</strong> mo<strong>de</strong>late formal <strong>în</strong><br />
cadrul acestui capitol conduc la o astfel <strong>de</strong> ameliorare. Din acest punct <strong>de</strong> ve<strong>de</strong>re<br />
principiul separarii codului <strong>de</strong> interactiune concurenta este cel mai important. Astfel<br />
partea care tine exclu<strong>si</strong>v <strong>de</strong> concurenta va putea fi reutilizata separat <strong>de</strong> partea care<br />
<strong>de</strong>scrie functionalitatea. Deoarece separarea acestor notiuni duce la cresterea<br />
po<strong>si</strong>bilitatii <strong>de</strong> reutilizare, am <strong>analiza</strong>t modul <strong>în</strong> care aceasta conduce la reducerea<br />
efectelor anomaliilor <strong>de</strong> mostenire. Trebuie specificat faptul ca nimic nu constrânge<br />
programatorul <strong>în</strong> a nu amesteca codul corespunzator functionalitatii cu cel pentru<br />
<strong>de</strong>scrierea constrângerilor <strong>de</strong> <strong>si</strong>ncronizare. De exemplu, <strong>în</strong> cazul utilizarii<br />
mecanismului <strong>de</strong> meto<strong>de</strong> cu garzi, datorita faptului ca garzile au acces la proprietatile<br />
obiectelor ele <strong>de</strong>pind <strong>în</strong> general <strong>de</strong> <strong>de</strong>taliile <strong>de</strong> <strong>implementare</strong> ale operatiilor. Prin<br />
urmare, re<strong>implementare</strong>a unei operatii poate conduce <strong>si</strong> la re<strong>implementare</strong>a codului<br />
<strong>de</strong> <strong>si</strong>ncronizare. Reciproca este <strong>de</strong> asemenea a<strong>de</strong>varata.<br />
86