Tehnici de proiectare software - Tipografia
Tehnici de proiectare software - Tipografia
Tehnici de proiectare software - Tipografia
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ă