29.04.2013 Views

Tehnici de proiectare software - Tipografia

Tehnici de proiectare software - Tipografia

Tehnici de proiectare software - Tipografia

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.

III.4. Iterator<br />

• Cunoscut şi ca Cursor<br />

• ProprietăŃi<br />

• Scop<br />

- Tip: comportamental -<br />

Nivel: componentă<br />

Să pună la dispoziŃie o cale <strong>de</strong> acces secvenŃial la articolele dintr-o colecŃie<br />

care este in<strong>de</strong>pen<strong>de</strong>ntă sau separată <strong>de</strong> colecŃia <strong>de</strong> bază.<br />

• Introducere<br />

Managerul personal <strong>de</strong> informaŃii utilizează multe colecŃii <strong>de</strong> vreme ce Ńine<br />

evi<strong>de</strong>nŃa unei cantităŃi mari <strong>de</strong> date. Adrese, contacte, proiecte, întâlniri, notiŃe, liste<br />

cu lucruri ce trebuie făcute - toate aceste presupun abilitatea <strong>de</strong> a se reŃine grupuri <strong>de</strong><br />

obiecte legate între ele. Pentru a se putea salva toate aceste tipuri <strong>de</strong> informaŃii, se pot<br />

crea clase care sa reŃină fiecare grup <strong>de</strong> articole în parte. în acest fel. se pot <strong>de</strong>zvolta<br />

colecŃii care să în<strong>de</strong>plinească nevoile specifice fiecărui grup <strong>de</strong> obiecte.<br />

Apare însă o problemă atunci când se doreşte parcurgerea fiecărei colecŃii.<br />

Dacă se creează clase care să în<strong>de</strong>plinească nevoile obiectelor stocate, nu există nici o<br />

garanŃie că elementele pot fi retrase şi folosite într-o modalitate uniformă. Întâlnirile<br />

pot fi organizate în subgrupuri în funcŃie <strong>de</strong> date. în timp ce contactele pot fi stocate<br />

alfabetic iar notiŃele pot fi ordonate secvenŃial.<br />

Acest lucru conduce la scrierea <strong>de</strong> cod specific fiecărei colecŃii în parte pentru<br />

a se putea naviga printre articolele fiecărui grup. precum şi copierea codului respectiv<br />

în fiecare parte a sistemului un<strong>de</strong> se foloseşte un grup. Rezultă un cod foarte<br />

complicat şi greu <strong>de</strong> întreŃinut. Mai mult. trebuie cunoscute fiecare tipuri <strong>de</strong> colecŃii<br />

folosite în <strong>de</strong>taliu pentru a menŃine obiectele în managerul personal.<br />

Şablonul Iterator rezolvă aceste probleme prin <strong>de</strong>finirea unei interfeŃe<br />

uniforme pentru parcurgerea oricărei colecŃii. Când se folosesc iteratori în sistem, se<br />

pot utiliza aceleaşi meto<strong>de</strong> <strong>de</strong> apel atunci când se navighează printr-o listă <strong>de</strong><br />

contacte, precum şi atunci când se printează o listă cu lucrurile ce trebuie făcute.<br />

• Utilizare<br />

Şablonul Iterator se foloseşte pentru:<br />

- a pune la dispoziŃie o cale uniformă şi consistentă <strong>de</strong> a parcurge elementele<br />

unei colecŃii care nu este legată <strong>de</strong> implementarea colecŃiei<br />

- a permite parcurgerea colecŃiilor multiple, lăsând mai mulŃi clienŃi să<br />

navigheze simultan în cadrul aceleaşi colecŃii <strong>de</strong> bază

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

Saved successfully!

Ooh no, something went wrong!