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 ...
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();