Pakiet programów do zdalnego nauczania Programowania Orientowanego Obiektowo
Dzisiaj jest
Środa, 18 Lipiec 2018
Zarejestrowanych użytkowników: 4
Dostępnych pytań testowych: 102
HOME
Strona tytułowa pracy dyplomowej
NAUKA
Materiały dydaktyczne związane z OOP
TESTY
Sprawdzenie poziomu zdobytej wiedzy
ZASOBY
Literatura i zasoby sieciowe o OOP
ŹRÓDŁA
Zbiór projektów dydaktycznych z OOP
KONTO
Możliwość śledzenia własnych postępów
INFO



Interfejs iteratorów

Interfejs iteratora (także ten przedstawiony w przykładzie, bowiem metodę pobierzIterator() można uznać za odpowiednik metod: x() i y()) przybiera zwykle następującą formę:

class iterator {
public:
	double pobierzIterator() const;
			void nastepny ();
			bool czyKoniec () const;
		}

Jest to standardowo przedstawiany w literaturze interfejs iteratora umożliwiający sekwencyjne przechodzenie danego kontenera. Nierzadko zdarza się, że jest uzupełniony o dodatkowe metody. Jedną z nich może być metoda naPoczatek(), który pozwala iteratorowi powrócić do pierwotnego stanu po inicjalizacji (np. w celu powtórnego przejścia). Kolejną metodą może być metoda usun() pozwalająca na usunięcie wskazywanego przez iterator elementu z kontenera. Poza tym – jak widać na przykładzie – metoda pobierz() może zostać zastąpiona w przypadku skomplikowanych struktur modeli danych przez większą liczbę metod umożliwiającą dostęp do pojedynczych elementów struktury.

Kolejnym aspektem iteratorów na który należy zwrócić uwagę jest implementacja mechanizmu zakończenia iteracji. Przedstawiony przykład opiera się na wykonywaniu testów przez metodę czyKoniec(), ale istnieje również alternatywne rozwiązanie (stosowane zresztą w bibliotece STL języka C++). Iteratory biblioteki STL nie posiadają metody czyKoniec(). Zamiast tego posiadają przedefiniowany operator porównania, którego używa się do zakończenia iteracji. Zwykle porównanie wywołuje się w parze z tzw. iteratorem pustym, który nie odnosi się do żadnego elementu w kontenerze i służy do zapewnienia informacji o końcu iteracji (w języku STL takim iteratorem jest dowolny typ iterator otrzymywany przez metodę kontener.end() lub kontener.rbegin()).

Adamik Łukasz, Politechnika Śląska w Gliwicach (AEiI) - 2010/11