Seminář 7
Témata
- Vnořené třídy
- Kolekce I (připomenutí základních datových struktur)
- Opakování rozhraní, dědičnost
Vnořené třídy
- Třída deklarovaná uvnitř jiné třídy
- Všeříkající dokumentace.
Úkoly
- ÚPRAVA: přidán termín, aby bylo jasné, že máte zase 14 dní a ne jen týden.
- V úkolu nepoužívejte žádné kolekce ze standardní knihovny či jiných zdrojů.
- S výjimkou bodu 4 množiny nesmí mít předem danou, fixní velikost.
- Navrhněte vhodné rozhraní pro množinu čísel typu
int
. Pojmenujte jejIntegerSet
. - Implementujte množinu čísel typu
int
pomocí binárního vyhledávacího stromu. Stačí naivně, bez vyvažování. Třídu pojmenujteBSTSet
. - Dodaný
IntegerLinkedList
rozšiřte tak, aby implementoval dodaná rozhraníIntegerSequence
aIntegerIterable
. - Implementuje třídu, jejíž instance reprezentují libovolnou podmnožinu množiny {1, 2, 3, …, 32} a to pomocí jediného čísla typu
int
. Tedy celý vnitřní stav této množiny musí být uchován v jednomint
u. Pojmenujte jiCoolSet
. - Ujistěte se, že třídy z bodu 2 a 4 implementují Vaše rozhraní
IntegerSet
. - Vše řádně zdokumentujte.
- Pro
CoolSet
napište vhodné testy. - Výsledek odevzdejte emailem s předmětem jj1-07 na tomas.urbanec@upol.cz do 21.11.2023, 14:59 CEST. Odevzdávejte pouze zdrojové kódy, nikoliv celé projekty vygenerované IDE.
Nepovinné úkoly
Ideálně nad tím přemýšlejte až po naprogramování úkolů výše.
- Promyslete si vztah mezi frontou a seznamem z ukázky? Je dobře? Dokázali byste to udělat lépe?
- Co víte o zásobníku, stromu, hashovací tabulce, poli, …?
- Jak tyto struktury souvisí s množinou? A s obecnou kolekcí prvků?