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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

momentul <strong>în</strong> care obiectul trece dintr-o clasa <strong>în</strong> alta. De asemenea, constructor<br />

implicit este <strong>de</strong>finit doar pentru clasa Coada_Goala pentru <strong>si</strong>mplitate. Se poate<br />

observa din aceasta <strong>implementare</strong> ca pentru clasa Coada_Plina nu este <strong>de</strong>finita<br />

operatia Adauga(), respectiv pentru clasa Coada_Goala operatia Extrage(). Pentru a<br />

realiza schimbarea clasei pentru un actor am folo<strong>si</strong>t, ca <strong>si</strong> <strong>în</strong> cazul mecanismului <strong>de</strong><br />

interactiune concurenta prin abstractizarea comportamentului, intructiunea become.<br />

Privite <strong>în</strong> context orientat-obiect mecanismele bazate pe mo<strong>de</strong>lul Actor au<br />

doua mari neajunsuri. În primul rând mostenirea este dificil <strong>de</strong> implementat, <strong>de</strong>oarece<br />

<strong>în</strong> momentul <strong>în</strong> care se doreste <strong>de</strong>finirea unei subclase cu un comportament<br />

specializat, este necesara re<strong>de</strong>finirea fiecarui actor ce corespun<strong>de</strong> unei stari <strong>în</strong> parte.<br />

Mai mult, <strong>în</strong> timpul executiei un actor se poate transforma <strong>în</strong>tr-un altul cu un<br />

comportament total diferit. Aceste neajunsuri au <strong>de</strong>terminat ca majoritatea limbajelor<br />

<strong>de</strong> programare bazate pe actori sa nu implementeze conceptul <strong>de</strong> mostenire.<br />

În al doilea rând, asa cum se poate observa <strong>si</strong> din exemplul cu <strong>implementare</strong>a<br />

unei cozi limitate, nu este clar ce se <strong>în</strong>tâmpla <strong>în</strong> momentul <strong>în</strong> care un actor se afla <strong>în</strong><br />

starea Coada_Plina <strong>si</strong> receptioneaza mesaj Adauga(). În general nu se ofera nici o<br />

indicatie <strong>în</strong> ceea ce priveste faptul ca <strong>în</strong>tr-o alta stare actorul respectiv ar putea<br />

raspun<strong>de</strong> acestui mesaj. Prin urmare majoritatea limbajelor cu actori nu realizeaza<br />

introducerea mesajelor <strong>în</strong>tr-o coada <strong>de</strong> asteptare.<br />

Si pentru acest mecanism principiul orientarii pe obiectul apelat al codului <strong>de</strong><br />

interactiune este respectat, iar principiile izolarii <strong>si</strong> separarii acestui cod nu. De<br />

asemenea, mo<strong>de</strong>lul Actor este un mo<strong>de</strong>l bazat pe principiul "o <strong>si</strong>ngura activitate<br />

executata la un moment dat". Totu<strong>si</strong> o concurenta intra-obiect mai restrânsa poate fi<br />

mo<strong>de</strong>lata folo<strong>si</strong>nd post-procesarea discutata <strong>în</strong> sectiunea 2.3. Astfel, imediat dupa<br />

executarea unei instructiuni become poate fi acceptat apelul unei alte operatii, <strong>în</strong> timp<br />

ce operatia curenta î<strong>si</strong> continua executia. Din pacate, pentru a fi pastrata con<strong>si</strong>stenta<br />

starii actorului, operatia care eventual se va executa <strong>în</strong> paralel cu cea curenta trebuie<br />

sa fie o operatie ce nu modifica <strong>în</strong> nici un mod starea obiectului (<strong>în</strong> acest context prin<br />

starea obiectului am <strong>în</strong>teles un tuplu <strong>de</strong> valori corespunzatoare tuturor proprietatilor<br />

actorului, asa cum a fost ea <strong>de</strong>finita <strong>în</strong> sectiunea 2.2, <strong>si</strong> nu starea abstracta <strong>de</strong>finita mai<br />

<strong>de</strong>vreme <strong>în</strong> cadrul mecanismului <strong>de</strong> abstractizare a comportamentului).<br />

44

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

Saved successfully!

Ooh no, something went wrong!