Cieľom cvičení je pozrieť sa na praktické využitie rozhraní, abstraktných tried a metód a modifikátorov viditeľnosti.
Vytvorte triedu sk.upjs.umv.Zlomok, ktorá reprezentuje zlomok (dvojicu čitateľ a menovateľ). Podobne ako u objektov triedy String, aj obsah objektu triedy Zlomok nech je určený pri jeho vytvorení.
toString, equals a hashCode pre objekty triedy Zlomok (nezabudnite, že zlomok 1/2 a 2/4 reprezentujú ten istý zlomok).
Zlomok pridajte metódu pripocitaj, ktorá vráti zlomok, ktorý vznikne pripočítaním parametrom zadaného zlomku k danému zlomku:
Zlomok tak, aby rozširovala triedu java.lang.Number
Zlomok tak, aby implementovala rozhranie Comparable<Zlomok>. Vyskúšajte utriediť zlomky pomocou statickej metódy Collections.sort().
Zlomok statickú metódu, ktorá spočíta súčet zlomkov.
Zlomok zlomkovú konštantu, ktorá bude reprezentovať jednu polovicu:
Roundable s metódou roundValue. Každá trieda implementujúca tento interface bude schopná vrátiť zaokrúhlenú hodnotu. Pre triedu zlomok metódu implementujte tak, aby vrátila hodnotu zlomku po zaokrúhlení.
PorovnavacZlomkov, ktorá bude implementovať rozhranie Comparator<Zlomok>. Zlomky nech sú zoradené podľa vzdialenosti od 1/2 od najväčšej po najmenšiu. Príklad: [3/4, 0/1, 8/2]->[8/2, 0/1, 3/4], príslušné vzdialenosti od 1/2: [3.5, 0.5, 0.25]. Využite triedu PorovnavacZlomkov na utriedenie zoznamu zlomkov a tiež ako parameter v konštruktore triedy TreeSet.
Vytvorte triedu sk.upjs.Zlomkar, ktorá bude poskytovať základné algoritmy na prácu so zlomkami.
Zlomkar pridajte metódu sucet, ktorá vráti súčet zlomkov v zozname zlomkov:
Zlomkar pridajte metódu maximum, ktorá vráti najväčšiu hodnotu v zozname zlomkov (porozmýšľajte, ako využiť metódu Collections.max).
PlochaTvarov) by mali byť zmenené na abstraktné a prečo.
abstract:
Vytvorte (alebo spomeňte si) triedu Bod, ktorá uchováva súradnice nejakého bodu (double x, double y). Metóda nech má jeden konštruktor: public Bod(double x, double y). Okrem karteziánskeho súradnicového systému však existuje aj tzv. polárny súradnicový systém. V ňom je poloha bodu určená 2 parametrami:
x.
Navrhnite spôsob, ako pomocou statickej metódy vytvárať objekty triedy Bod na základe určenia jeho súradníc v polárnom súradnicovom systéme. Prediskutujte, či je možné takéto vytváranie bodov realizovať preťažením konštruktorov.
String) v poli nie lexikograficky, ale podľa dĺžky reťazca - v prípade reťazcov rovnakej dĺžky rozhoduje lexikografické porovnanie.
Arrays.sort) vypísali dvojice, ktoré sa porovnávajú.
resetujPocitadlo() a getPocetPorovnani())
Na jednom z predošlých cvičení sme implementovali triedu Bod uchovávajúcu x-ovú a y-ovú súradnicu bodu.
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)
sk.upjs.ReverznyBodovyPorovnavac, ktorá bude implementovať rozhranie Comparator<Bod> a v rámci konštruktora dostane referenciu na nejaký Comparator<Bod>. Reverzný porovnávač pri metóde compare bude vracať opačnú hodnotu, ako by vrátil v konštruktore referencovaný komparátor.
Pre fajnšmekrov:
List<Entry<Character, Integer>>)
TreeMap a komparátora? (Odpoveď je záporná, prečo?)
V úlohách venovaných polymorfizmu sme vytvárali triedu Tvar a jej rozšírenia. Vytvorte statickú metódu, ktorá bude na základe reťazca (formát: názov tvaru a medzerami oddelené parametre) vytvárať požadované objekty.
Pre fajnšmekrov: