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.

3.3. Formalizarea anomaliilor <strong>de</strong> mostenire<br />

În [CRN98] a fost propus un <strong>si</strong>stem formal <strong>de</strong> cla<strong>si</strong>ficare a mecanismelor <strong>de</strong><br />

mostenire <strong>în</strong> programarea orientata-obiect concurenta. Acest <strong>si</strong>stem formal reprezinta<br />

o varianta a semanticilor <strong>de</strong>notationale pentru mostenire introduse <strong>de</strong> Cook <strong>si</strong><br />

Palsberg <strong>în</strong> [COO89] <strong>si</strong> porneste <strong>de</strong> la mo<strong>de</strong>larea unei ierarhii <strong>de</strong> mostenire<br />

incrementale. Modul <strong>în</strong> care este mo<strong>de</strong>lata mostenirea <strong>în</strong> acest <strong>si</strong>stem formal permite<br />

tratarea oricarei abordari particulare <strong>de</strong> proiectare a unui limbaj <strong>de</strong> programare<br />

orientat-obiect concurent.<br />

În ierarhia <strong>de</strong> clase din figura 3.1. superclasa Coada este complet reutilizata <strong>de</strong><br />

subclasele sale Coada2, HCoada <strong>si</strong> BCoada, <strong>de</strong>oarece nici una dintre operatiile ei nu<br />

este re<strong>de</strong>finita <strong>în</strong> aceste subclase. Prin urmare volumul <strong>de</strong> cod reutilizat este maxim.<br />

O astfel <strong>de</strong> ierarhie <strong>de</strong> mostenire, <strong>în</strong> care nici o subclasa nu re<strong>de</strong>fineste operatii ale<br />

claselor parinte poarta numele <strong>de</strong> ierarhie <strong>de</strong> mostenire incrementala.<br />

Mostenirea induce <strong>si</strong> alta relatie <strong>în</strong>tre clase: relatia <strong>de</strong> subtipizare. Am <strong>de</strong>finit<br />

tipul ca fiind o multime <strong>de</strong> instante care au aceea<strong>si</strong> interfata (sau comportament extern<br />

observabil). Vom spune ca o clasa implementeaza un tip daca fiecare instanta a clasei<br />

apartine tipului respectiv.<br />

O clasa B <strong>de</strong>rivata dintr-o clasa A va avea <strong>în</strong> componenta sa cel putin<br />

proprietatile <strong>si</strong> operatiile clasei A. Deci, o instanta a clasei B poate fi utilizata <strong>în</strong> orice<br />

context <strong>în</strong> care poate fi utilizata o instanta a clasei A, adica interfata unei instante a<br />

clasei B va inclu<strong>de</strong> operatiile ce compun interfata oricarei instante a clasei A. Aceasta<br />

relatie <strong>de</strong> incluziune <strong>în</strong>tre interfetele a doua obiecte poarta numele <strong>de</strong> relatie <strong>de</strong><br />

subtipizare (<strong>în</strong> particular, instantele clasei B reprezinta subtipuri ale instantelor clasei<br />

A). Relatia <strong>de</strong> subtipizare este o relatie <strong>în</strong>tre comportamentele externe ale instantelor,<br />

<strong>si</strong> ea nu <strong>de</strong>pin<strong>de</strong> <strong>de</strong> structura interna a unei clase cum este cazul relatiei <strong>de</strong> mostenire.<br />

Notând cu ? un tip implementat <strong>de</strong> clasa A <strong>si</strong> cu ? un tip implementat <strong>de</strong> clasa<br />

B vom nota prin ? ? ? faptul ca tipul ? este subtip al lui ?. Prin urmare o instanta<br />

care apartine unui tip ? apartine <strong>de</strong> asemenea tipului ?, iar o clasa care implementeaza<br />

tipul ? implementeaza <strong>de</strong> asemenea <strong>si</strong> tipul ?.<br />

Definitia urmatoare <strong>si</strong> cele doua afirmatii care o preced introduc o legatura<br />

<strong>în</strong>tre relatia <strong>de</strong> subtipizare <strong>si</strong> ierarhia <strong>de</strong> mostenire incrementala.<br />

Definitie 1. Un lant <strong>de</strong> tipuri reprezinta o secventa finita <strong>de</strong> tipuri ? 1 ? ... ? ? n.<br />

67

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

Saved successfully!

Ooh no, something went wrong!