29.04.2013 Views

Tehnici de proiectare software - Tipografia

Tehnici de proiectare software - Tipografia

Tehnici de proiectare software - Tipografia

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

• Implementare<br />

Diagrama <strong>de</strong> clase a şablonului Interpretei" este următoarea:<br />

Client<br />

Context<br />

Şablonul Interpretei" necesită:<br />

interface Exprcssion<br />

+void interpreUContext c)<br />

TerminalExpression NonterminalExpression<br />

+void interpret(Context c) +void interpret(Context c)<br />

- Expression - interfaŃa prin intermediul căreia utilizatorul interacŃionează cu<br />

expresiile<br />

- TerminalExpression - clasa care implementează interfaŃa Expression,<br />

utilizată pentru nodurile terminale ale arborelui <strong>de</strong> sintaxă<br />

- NonterminalExpression - cealaltă implementare a interfeŃei Expression.<br />

utilizată pentru nodurile neterminale ale arborelui <strong>de</strong> sintaxă. ConŃine o referinŃă către<br />

următoarea expresie şi apelează metoda <strong>de</strong> interpretare pentru fiecare dintre copiii săi<br />

- Context - conŃine informaŃiile necesare în mai multe locuri ale<br />

interpretorului. Serveşte drept un canal <strong>de</strong> comunicare între instanŃele mai multor<br />

expresii<br />

- Client - construieşte sau primeşte o instanŃă a unui arbore <strong>de</strong> sintaxă abstract.<br />

Acest arbore <strong>de</strong> sintaxă este compus din instanŃe ale obiectelor <strong>de</strong> tip<br />

TerminalExpressions şi NonterminalExpressions<br />

• Beneficii şi inconveniente<br />

Şablonul Interpreter poate fi uşor modificat pentru a reflecta schimbările<br />

produse în gramatică. Pentru adăugarea unei noi reguli se creează o altă clasă care<br />

implementează interfaŃa Expression. O regulă se poate modifica uşor prin extin<strong>de</strong>rea<br />

clasei vechi şi suprascrierea meto<strong>de</strong>i <strong>de</strong> interpretare.<br />

Şablonul Interpreter nu este potrivit atunci când gramatica este mare. El poate<br />

conduce la un număr mare <strong>de</strong> clase în cazul în care limbajul conŃine multe reguli.<br />

Fiecare regulă adăugata limbajului necesită crearea unei noi clase în interpretor. Acest<br />

lucru poate duce în final la probleme <strong>de</strong> testare şi mentenanŃă.<br />

Se pot adăuga meto<strong>de</strong> interfeŃei Expression pentru a mari funcŃionalitatea<br />

expresiilor. Pentru o mai mare flexibilitate, se foloseşte şablonul Visitor care permite<br />

schimbarea dinamică a meto<strong>de</strong>i <strong>de</strong> interpretare.<br />

29

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

Saved successfully!

Ooh no, something went wrong!