Gyűjtemények felsorolása, algoritmus minták
Gyűjtemény és feldolgozása
A gyűjtemény egy olyan objektum, amely elemek tárolására alkalmas
Akkor virtuális, ha nem kell explicit módon eltárolni az elemeit.
Egy gyűjtemény feldolgozásán az elemek feldolgozását értjük.
Felsorolás
A feldolgozáshoz szükség van felsorolásra - Enumerátor viselkedésre
A bejárásra (enumerációra) használható műveletek
First()- Rááll al első elemre
- Elkezdi a felsorolást
Next()- Rááll a következő elemre
- Folytatja a felsorolást
Current()- Visszaadja az aktuális elemet
- Identity függvény
End()- Jelzi, hogy a végén vagyunk-e
Jónak hangz__IK__ a felsorolást a gyűjtemény metódusaival megvalósítani, viszont ez ellene megy a egyszeres felelősség elvével
Érdemes felsoroló objektummal csinálni, ami rendelkezik a First(), Next(), Current(), End().
Az E-beli elemeket felsoroló objektum jelölése enor(E)
Előnye, hogy ugyanazon a gyűjteményen egyszerre több felsorolás is folyhat egymástól függetlenül
Felsorolók osztálya
- Reprezentációja mindig tartalmaz egy hivatkozást a gyűjteményre
- Implementációja a gyűjtemény
getter-eire támaszkodik - A felsorolót a gyűjtemény hozza létre
- A gyűjtemény így értesül arról, hogy felsorolják


Felsorolás állapotai
- Indulásra kész
- Folyamatban
- Befejeződött
Felsorolás - Példa


Algoritmus minták általánosítása








Visszavezetés
- Megsejtjük a feladatot megoldó algoritmus-mintát (feladat-algoritmus párt)
- Specifikáljuk a feladatot és az algoritmus-minta közötti eltéréseket
- Felsoroló és felsorolt elemek konkrét típusát
- Függvények aktuális megfelelőit
- H halmaz műveletét, ha van ilyen
- A változók átnevezéseit
- A különbségek felírásával megkapjuk a feladatot megoldó algoritmust
Tétel:
Ha egy feladat és egy algoritmus-minta feladata megfeleltethetők egymásnak, akkor az algoritmus-minta algoritmusának ezen megfeleltetés szerint átalakított változata megoldja a kitűzött feladatot
Tesztelési stratégiák
Fekete ||Doboz||
A feladat specifikációja alapján felírt tesztesetek
- Érvényes tesztadatok
- Az előfeltételt kielégítő
- Érvénytelen tesztadatok
- Az előfeltételt megszegő
- Az utófeltétel alapján generált tesztesetek
Fehér ||Doboz||
A kód alapján felírt tesztesetek
- Az algoritmus minden utasításának kipróbálása
- Az algoritmus mionden vezérlési csomópontjának kipróbálása
Szürke ||Doboz||
Végrehajtható specifikáció által elővetített algoritmus működését ellenőrző tesztesetek
- Algoritmus-mintából származik, így azok elemei itt is érvényesek!
Algoritmus-minták tesztesetei

