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



Konfiguracja iteratorów

Interfejsy kontenerów nie muszą być ograniczone do zwracania iteratora, którego zadaniem jest całościowe przechodzenie sekwencyjne danego kontenera. Kontener może udostępniać znacznie bardziej rozbudowany mechanizm tworzenia iteratorów, które będą działały na ograniczonym, zdefiniowanym podzbiorze danych kontenera bądź poprzez mechanizm filtracji będą udostępniać tylko te elementy kontenera, które spełnią określone warunki.

Przedstawiony wcześniej przykład z klasą reprezentującą model danych zostanie uzupełniony o nowe metody tworzące umożliwiające tworzenie iteratorów pozwalających na przechodzenie ograniczonego zakresu danych. W przykładzie nie będzie tworzona wielopoziomowa hierarchia iteratorów – wspomniane ograniczenia można nadać nieznacznie przekształcając tylko deklarację klasy iterator.

Uzupełniona deklaracja wzorca Iterator oraz metod tworzących różne konfiguracje iteratora wygląda teraz następująco:

class ModelDanych {
public:
	// (...)

	class iterator {
	private:
		iterator (const std::map<int, double> & model);
		iterator (int start, int koniec, const std::map<int, double> & model);
	public:
		int x() const;
		double y() const;
		void nastepny ();
		bool czyKoniec () const;
	private:
		typedef std::map<int, double> TypModelu;
		const TypModelu &s_model;
		TypModelu::const_iterator s_iter;
		TypModelu::const_iterator s_iterKoniec;

		friend class ModelDanych;
	};

	iterator pobierzIterator() const;
	iterator pobierzIteratorOdDo (int M, int N) const;
	iterator pobierzIteratorOstatnieN (int N) const;
private:
	std::map<int, double> s_impl;
};

Jeśli chodzi o zmiany w interfejsie klasy ModelDanych zostały udostępnione dwie metody iteratorOdDo() oraz iteratorOstatnieN (), które umożliwiają odpowiednio pobranie iteratora do przeglądu próbek z zakresu oraz przeglądu ostatnich N próbek.

W klasie Iterator został zdefiniowany dodatkowy, przeładowany konstruktor oraz nowy składnik prywatny s_iterKoniec określający warunek stopu dla iteracji.

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