echo $begrüßung;
http://de.wikipedia.org/wiki/Iterator_(Entwurfsmuster)
Klient
- die verwendete Methode, also die Methode in der ich den Iterator benutze, oder?
Nach meinem Verständnis ist das der Anwender, was wohl eher ein for/foreach ist als eine Methode, die noch jede Menge anderen Code enthalten kann.
Aggregat
- Abstrakter Datentyp - ich glaube in Java z. B. List
Das ist die Definition einer Schnittstelle, um einen Iterator zu bekommen. Also wie beim Iterator-Kästchen der rechten Seite nur ein Interface.
Konkretes Aggregat
- z. B. ArrayList oder?
Das ist der Teil, der den eigentlichen Iterator liefert, also die Implementation vom Aggregat-Interface. Welche konkrete Datenhaltung dahinter steht, also woher die Daten kommen und wieviel davon, ist unerheblich. Das kann intern eine ArrayList oder eine Datenbankabfrage oder sonstwas sein, für den Klienten spielt das keine Rolle. Dieses Implementierungsdetail bleibt ihm verborgen.
Iterator
- Interface dass lediglich Methoden festlegt, so richtig?
Ja, siehe Aggregat.
Konkreter Iterator
- Implementiertes Interface, so richtig?
Ja, das ist der Teil, der das jeweils aktuelle Element auf Anforderung hin liefert. Und gemäß Weiter() und Zurueck() seinen internen Merker auf andere Elemente setzt.
Elemement
- Einfach ein Objekt von vielen aus der Liste z. B. String, Person, Kunde...
Oder was auch immer. Ein Iterator kann beispielsweise auch einfach nur eine Zahl aus einem Bereich von m bis n liefern. Da braucht es keine Datenhaltung, der konkrete Iterator muss sich nur die aktuelle Zahl merken und bei Weiter() und Zurueck() inkrementieren oder dekrementieren. Ein Iterator könnte auch Zufallswerte zurückliefern, dann müsste er sich weder was merken noch braucht er eine Datenhaltung. Sein Ende findet er dann eben auch per Zufall. Inwieweit so ein "Zufallsiterator" außer zu Testzwecken sinnvoll ist, sei mal dahingestellt.
echo "$verabschiedung $name";