PO Kolekcje

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

<<< Powrót

Kolekcje

<<< Powrót

Kolekcje

Wprowadzenie

Rzadko kiedy zdarzają się tak proste programy, którym do działania wystarcza kilka zmiennych zadeklarowanych w programie. Zwykle programy muszą operować na większej liczbie wartości. Wiemy już, że możemy w tym celu użyć tablic. Często jest to wystarczające rozwiązanie, ale ma ono pewne ograniczenia. Tablice mają stały rozmiar, a często przy pisaniu programów występują sytuacje, gdy liczba przechowywanych wartości zmienia się w trakcie działania programu. Co więcej bardzo często chcemy narzucić pewną strukturę przechowywanym wartościom (na przykład chcemy, by były posortowane, albo chcemy utrzymywać powiązanie między dwoma zestawami wartości). Ponieważ takie sytuacje zdarzają się bardzo często, praktycznie wszystkie współczesne języki programowania obiektowego dostarczają zestaw kolekcji - klas służących do przechowywania obiektów.

Ponieważ kolekcje mają być uniwersalne, to znaczy maja służyć do przechowywania obiektów różnych typów, w naturalny sposób do ich tworzenia wykorzystuje się omówione przez nas wcześniej typy uogólnione. Można nawet zaryzykować stwierdzenie, że kolekcje są głównym powodem, dla którego wprowadza się do języków programowania typy uogólnione.

Inną ciekawą dla nas cechą kolekcji jest ich organizacja. Wszystkie kolekcje służą do przechowywania obiektów. Skoro tak to są zestawem podobnych do siebie klas. A zatem naturalnie i wygodnie będzie przedstawić je w postaci hierarchii. Dzięki temu nauczenie się posługiwania się kolekcjami jest dużo prostsze. Nie musimy dla każdej kolekcji od nowa uczyć się jej interfejsu - języka jakim mamy się z nią porozumiewać. Jeśli raz nauczymy się ogólnego interfejsu kolekcji, to przy kolejnych członkach tej hierarchii będziemy musieli uczyć się jedynie specyficznych dla danej kolekcji pojęć i operacji. Co więcej, mając hierarchię kolekcji możemy tworzyć bardzo abstrakcyjne programy, które działają z (nieokreślona z góry) kolekcją zadaną jako parametr i w zależności od tego jaką kolekcję otrzymają inaczej się zachowują. Klasycznym przykładem jest tu problem obchodzenia grafu: jeśli program obchodzący graf dostanie jako parametr stos, to dokona obejścia grafu wgłąb, jeśli natomiast jako parametr otrzyma kolejkę, to obejdzie graf wszerz.



Przypisy

<references/>

Przypisy =

<references/>