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: