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.

- listaElemente – lista circulara care contine elementele stocate <strong>în</strong> coada<br />

(vom con<strong>si</strong><strong>de</strong>ra un caz general <strong>de</strong> coada, <strong>în</strong> care elementele stocate sunt<br />

instante ale unei clase Element).<br />

Valorile acestor proprietati vor putea fi modificate prin intermediul a doua<br />

operatii, Adauga() <strong>si</strong> Extrage(), care adauga, respectiv extrag elemente din coada.<br />

Figura 2.1. contine o <strong>de</strong>scriere vizuala a clasei Coada, utilizând limbajul <strong>de</strong><br />

mo<strong>de</strong>lare UML (Unified Mo<strong>de</strong>ling Language). Notatiile grafice folo<strong>si</strong>te aici sunt<br />

<strong>de</strong>scrise <strong>în</strong> <strong>de</strong>taliu <strong>în</strong> cadrul Anexei B.<br />

Obiectul oCoada prezentat <strong>în</strong> figura 2.2. este un exemplu <strong>de</strong> instanta a clasei<br />

Coada. Starea obiectului oCoada la momentul surprins <strong>în</strong> figura este caracterizata <strong>de</strong><br />

valoarea numarului maxim <strong>de</strong> elemente ce pot fi stocate (10), numarul <strong>de</strong> elemente<br />

introduse (5), numarul elementelor extrase (3) <strong>si</strong> continutul vectorului listaElemente.<br />

15<br />

oCoada<br />

maxElem : 10<br />

elemIntroduse : 5<br />

elemExtrase : 3<br />

listaElemente :<br />

0 1 2 3 4 5 6 7 8 9<br />

Adauga() Extrage()<br />

Figura 2.1. Mo<strong>de</strong>lul static al clasei Coada Figura 2.2. Descriere grafica a instantei<br />

oCoada a clasei Coada<br />

Dam mai jos <strong>si</strong> un exemplu <strong>de</strong> <strong>implementare</strong> a clasei Coada folo<strong>si</strong>nd limbajul<br />

<strong>de</strong> programare C++ [STR91]. Codul prezentat va constitui o baza pentru <strong>de</strong>scrierea<br />

exten<strong>si</strong>ilor limbajului C++ pe care le vom propune pentru <strong>implementare</strong>a<br />

mecanismelor <strong>de</strong> <strong>si</strong>ncronizare a operatiilor concurente. Proprietatea listaElemente,<br />

implementata aici ca un tablou <strong>de</strong> elemente, <strong>si</strong>muleaza o lista circulara. Un nou<br />

element adaugat <strong>în</strong> coada va ocupa pozitia elemeIntroduse mod maxElem, iar<br />

extragerea unui element din coada se va realiza <strong>de</strong> pe pozitia elemeExtrase mod<br />

maxElem.<br />

class Coada{<br />

protected:<br />

Element listaElemente[]; //tablou cu elementele cozii<br />

int maxElem; //nr. maxim <strong>de</strong> elemente din coada<br />

int elemIntroduse; //nr. elementelor introduse <strong>în</strong> coada<br />

int elemExtrase; //nr. elementelor extrase din coada<br />

public:<br />

Coada();<br />

~Coada();

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

Saved successfully!

Ooh no, something went wrong!