Zpo-2-lab: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
=Ćwiczenie | =Ćwiczenie 2: Kolekcje w języku Java= | ||
==Informacje wstępne== | ==Informacje wstępne== | ||
Linia 6: | Linia 6: | ||
Celem ćwiczenia jest praktyczne zapoznanie się z możliwościami biblioteki Java Collections a także wykorzystanie istniejącego projektu biblioteki do jej rozszerzenia. | Celem ćwiczenia jest praktyczne zapoznanie się z możliwościami biblioteki Java Collections a także wykorzystanie istniejącego projektu biblioteki do jej rozszerzenia. | ||
Ćwiczenie składa się z dwóch zadań. | Ćwiczenie składa się z dwóch zadań. | ||
==Instalacja== | |||
Przygotowanie do ćwiczenia polega na zainstalowaniu [http://java.sun.com/javase/downloads/index.jsp JDK 5.0] oraz środowiska [http://www.eclipse.org/downloads Eclipse] w wersji 3.2 | |||
Po uruchomieniu środowiska i wyborze przestrzeni roboczej należy zaimportować (menu File->Import->Existing projects into workspace) projekt [[media:zpo-2-lab.zip|zpo-2-lab.zip]] z szablonami plików pomocnymi w rozwiązaniu zadań. | |||
==Zadanie 1== | ==Zadanie 1== | ||
W załączonym | W załączonym projekcie znajduje się szkielet implementacji klasy ''CollectionSet'' - zbioru, który przechowuje jedynie kolekcje. | ||
Klasa ta obecnie implementuje interfejs ''java.util.Set'' oraz definiuje wszystkie niezbędne metody jako delegacje do zawartego w tej klasie obiektu ''java.util.HashSet''. | Klasa ta obecnie implementuje interfejs ''java.util.Set'' oraz definiuje wszystkie niezbędne metody jako delegacje do zawartego w tej klasie obiektu ''java.util.HashSet''. | ||
Linia 20: | Linia 25: | ||
* metoda ''iterator()'' ma działać w sposób opisany powyżej | * metoda ''iterator()'' ma działać w sposób opisany powyżej | ||
* pozostałe metody w klasie ''CollectionSet'' mają być delegowane wewnętrznej instancji klasy ''java.util.HashSet'' | * pozostałe metody w klasie ''CollectionSet'' mają być delegowane wewnętrznej instancji klasy ''java.util.HashSet'' | ||
Schemat klas przedstawiono na diagramie: | |||
[[image:zpo-02-collectionset.png]] | |||
==Zadanie 2== | ==Zadanie 2== | ||
Linia 25: | Linia 34: | ||
* wg nazwiska, potem wg imienia - rosnąco | * wg nazwiska, potem wg imienia - rosnąco | ||
* wg roku urodzenia, potem wg nazwiska, potem wg imienia - rosnąco | * wg roku urodzenia, potem wg nazwiska, potem wg imienia - rosnąco | ||
Definicja klasy Student oraz przykładowe dane do posortowania znajdują się się w załączonym projekcie [[media:zpo-2-2-lab.zip|zpo-2-2-lab.zip]] dla środowiska Eclipse w pakiecie ''elearning.zpo.z2'' | Definicja klasy Student oraz przykładowe dane do posortowania znajdują się się w załączonym projekcie. | ||
==Zadanie 3== | |||
Zaprojektuj i zaimplementuj mechanizm (w postaci implementacji interfejsu ''java.util.Comparator'') wyznaczania kolejności zespołów w grupie w rundzie międzykontynentalnej Ligi Światowej (opis znajduje się [[Liga Światowa|tutaj]]). | |||
Napisz komparatory umożliwiające sortowanie według: | |||
* liczby punktów, następnie stosunku piłek wygranych do piłek straconych | |||
* liczby punktów, następnie różnicy setów wygranych do setów przegranych | |||
Szkielet aplikacji znajduje się w załączonym projekcie [[media:zpo-2-2-lab.zip|zpo-2-2-lab.zip]] dla środowiska Eclipse w pakiecie ''elearning.zpo.z2'' | |||
==Literatura== | ==Literatura== | ||
# Tutorial oferowany przez Sun Microsystems. http://java.sun.com/docs/books/tutorial/collections/index.html | # Tutorial oferowany przez Sun Microsystems. [http://java.sun.com/docs/books/tutorial/collections/index.html Sun Microsystems] | ||
# D. Becker, "Get started with Java Collections". http://www.javaworld.com/javaworld/jw-11-1998/jw-11-collections.htmls | # D. Becker, "Get started with Java Collections". [http://www.javaworld.com/javaworld/jw-11-1998/jw-11-collections.htmls JavaWorld] | ||
# JGuru FAQ. http://www.jguru.com/faq/Collections | # JGuru FAQ. [http://www.jguru.com/faq/Collections JGuru] |
Wersja z 14:05, 7 wrz 2006
Ćwiczenie 2: Kolekcje w języku Java
Informacje wstępne
Ćwiczenie jest realizowany w języku Java w środowisku Eclipse 3.2. Przed przystąpieniem do realizacji ćwiczenia należy zapozanać się z wykładem. Celem ćwiczenia jest praktyczne zapoznanie się z możliwościami biblioteki Java Collections a także wykorzystanie istniejącego projektu biblioteki do jej rozszerzenia. Ćwiczenie składa się z dwóch zadań.
Instalacja
Przygotowanie do ćwiczenia polega na zainstalowaniu JDK 5.0 oraz środowiska Eclipse w wersji 3.2
Po uruchomieniu środowiska i wyborze przestrzeni roboczej należy zaimportować (menu File->Import->Existing projects into workspace) projekt zpo-2-lab.zip z szablonami plików pomocnymi w rozwiązaniu zadań.
Zadanie 1
W załączonym projekcie znajduje się szkielet implementacji klasy CollectionSet - zbioru, który przechowuje jedynie kolekcje. Klasa ta obecnie implementuje interfejs java.util.Set oraz definiuje wszystkie niezbędne metody jako delegacje do zawartego w tej klasie obiektu java.util.HashSet.
Różnica w zachowaniu tej klasy ma polegać na rozszerzonym iteratorze. Należy zaimplementować metodę Iterator iterator(), która będzie zwracała nie bezpośrednio kolekcje, które są jej elementami, ale elementy, które są w nich zawarte (korzystając z iteratorów tej klasy).
Podczas implementacji uwzględnij następujące ograniczenia:
- klasa CollectionSet jest implementacją interfejsu java.util.Set oraz spełnia ograniczenia dotyczące zbiorów (unikatowość elementów)
- niemożliwe jest dodanie do kolekcji elementu, który nie jest kolekcją; próba dodania takiego elementu powoduje zgłoszenie wyjątku java.lang.IllegalArgumentException
- metoda toString() zwraca napis będący opisem wszystkich zbiorów i ich elementów zawartych w obiekcie CollectionSet
- metoda iterator() ma działać w sposób opisany powyżej
- pozostałe metody w klasie CollectionSet mają być delegowane wewnętrznej instancji klasy java.util.HashSet
Schemat klas przedstawiono na diagramie:
Zadanie 2
Zaprojektuj i zaimplementuj komparatory (implementacje interfejsu java.util.Comparator) pozwalające sortować listę obiektów klasy Student według następujących kryteriów:
- wg nazwiska, potem wg imienia - rosnąco
- wg roku urodzenia, potem wg nazwiska, potem wg imienia - rosnąco
Definicja klasy Student oraz przykładowe dane do posortowania znajdują się się w załączonym projekcie.
Zadanie 3
Zaprojektuj i zaimplementuj mechanizm (w postaci implementacji interfejsu java.util.Comparator) wyznaczania kolejności zespołów w grupie w rundzie międzykontynentalnej Ligi Światowej (opis znajduje się tutaj). Napisz komparatory umożliwiające sortowanie według:
- liczby punktów, następnie stosunku piłek wygranych do piłek straconych
- liczby punktów, następnie różnicy setów wygranych do setów przegranych
Szkielet aplikacji znajduje się w załączonym projekcie zpo-2-2-lab.zip dla środowiska Eclipse w pakiecie elearning.zpo.z2
Literatura
- Tutorial oferowany przez Sun Microsystems. Sun Microsystems
- D. Becker, "Get started with Java Collections". JavaWorld
- JGuru FAQ. JGuru