Cieľom cvičení desiateho týždňa je pozrieť sa na praktické využitie rozhraní, abstraktných tried a metód, balíkov a modifikátorov viditeľnosti.
Abstraktné metódy a triedy
- Diskutujte, ktoré z metód a tried z predchádzajúcich cvičení (napr. v projekte 
PlochaTvarov) by mali byť zmenené na abstraktné a prečo.
 - Prediskutujte vzťah abstraktných metód a abstraktných tried a nasledovné "pravidlá" na ľahké zapamätanie si použitia slovíčka 
abstract:
- abstraktná metóda je metóda bez implementácie - tela (na čo sa to využíva?)
 - abstraktná trieda je trieda, ktorej inštanciu nemožno vytvoriť (na čo sa to využíva?)
 - ak trieda obsahuje aspoň jednu abstraktnú metódu, potom musí byť abstraktná
 
 
Využitie rozhraní
- Navrhnite a implementujte spôsob, ako možno pomocou komparátorov utriediť reťazce (referencie na objekty triedy 
String) v poli nie lexikograficky, ale podľa dĺžky reťazca - v prípade reťazcov rovnakej dĺžky rozhoduje lexikografické porovnanie.
- Upravte komparátor tak, aby sa počas triedenia (
Arrays.sort) vypísali dvojice, ktoré sa porovnávajú.
 - Upravte komparátor tak, aby ste vedeli spočítať, koľko porovnaní zrealizoval komparátor (metódy: 
resetujPocitadlo() a getPocetPorovnani())
 
 
Rozhrania a balíčky
- Na jednom z cvičení sme vytvárali triedu 
Bod, ktorá uchovávala dvojicu súradníc bodu. Vytvorte túto triedu v defaultnom balíčku.
 - Navrhnite triedu 
sk.upjs.BodovyPorovnavac implementujúcu porovnávanie bodov podľa vzdialenosti od zadaného bodu (b1 < b2 ak bod b1 je k nejakému bodu [x, y] bližšie ako bod b2)
- Aký problém sa objavil v dôsledku toho, že trieda 
Bod je v defaultnom balíčku a trieda sk.upjs.BodovyPorovnavac nie? Ako ho môžeme vyriešiť?
 
 
Vlastné rozhrania
- Diskutujte a navrhnite, kde a ako by ste vedeli využiť vlastné rozhrania. Niektorý z príkladov skúste implementovať.
 
Príprava na záverečný test