Zpo-2-lab: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Bwalter (dyskusja | edycje)
 
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika)
Linia 1: Linia 1:
=Ćwiczenie 1: Kolekcje w języku Java=
=Ć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 [[media:zpo-02-1-lab.zip|projekcie]] znajduje się szkielet implementacji klasy ''CollectionSet'' - zbioru, który przechowuje jedynie kolekcje.
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.
 
 


==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]

Aktualna wersja na dzień 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.


Literatura

  1. Tutorial oferowany przez Sun Microsystems. Sun Microsystems
  2. D. Becker, "Get started with Java Collections". JavaWorld
  3. JGuru FAQ. JGuru