Úloha číslo 6

Abstract

Cílem této úlohy je naučit se základní práci s různými typy kolekcí.


Table of Contents
Co je potřeba znát
Zadání
Několik rad
Odevzdání úlohy
Metodické pokyny
Pokyny pro opravování
Základní kolekce v Javě

Co je potřeba znát

Pro vyřešení této úlohy je třeba


Zadání

V této úloze implementujeme část knihovního systému. Vaším úkolem bude vytvořit třídy BookImpl, ReaderImpl a ReadersRegisterImpl, které budou implementovat příslušná rozhraní. Význam tříd a popis jejich chování naleznete v komentářích JavaDoc u rozhraní. Konstruktor třídy ReadersRegisterImpl nebude mít žádný konstruktor (tj. bude mít implicitní), ostatní dvě třídy budou mít po jednom konstruktoru podle následující JavaDoc specifikace. Všechny kontruktory vyhodí vhodnou výjimku, pokud je některý ze vstupních argumentů nastaven na null.


    /**
     * @param author Autor knihy
     * @param title Nazev knihy
     * @param id Jednoznacny identifikator
     * @param reg Odkaz na registr ctenaru
     */
    public BookImpl(String author, String title, int id, ReadersRegister reg)

    /**
     * @param name Jmeno ctenare
     * @param id Jednoznacny identifikator
     */
    public ReaderImpl(String name, String id)
    

Několik rad

Každá kniha by si měla pamatovat výpůjčky jako posloupnost čtenářů. Čtenáři se mohou v posloupnosti objevit vícekrát.

Registr čtenářů si pamatuje všechny čtenáře a neměl by obsahovat duplicity. Tomu by měl odpovídat i výběr kolekce.

Uspořádaný seznam jmen čtenářů získáte tak, že všechna jména uložíte do seznamu a seznam necháte uspořádat pomocí třídy java.util.Collections

Pro úspěšné vyřešení úlohy tak, aby prošla všemi testy, je nuté dodržet několik zásad a pravidel. Možná se Vám některá z nich budou jevit jako zbytečná, nicméně jsou velmi důležitá a jejích dodržování Vám v budoucnu velmi usnadní programování a zejména řešení různých problémových situací.

Další rady a návody jak řešit některé z potenciálních problémů Vám poskytnou cvičící v příslušném cvičení.


Odevzdání úlohy

Před odevzdáním úlohy si zkontrolujte:

  1. Zda jde úloha přeložit a zda jdou přeložit i všechny testy.

  2. Zdali všechny testy projdou bez chyby.

  3. Zda jste nezapomněli správně vyplnit hlavičky všech tříd ve formátu JavaDoc (popis třídy, autor, popis všech metod, apod.)


Metodické pokyny

Je vhodné zopakovat základní typy kolekcí, jejich vlastnosti a vhodnost použit v konkrétním případě. Dále připomeňte základní principy práce s výjimkami a generickými typy. Užitečné je také připomenout obecný kontrakt metod Object.hashCode() a Object.equals() a jak takové metody implementovat.


Pokyny pro opravování