Cvičenia: 13. týždeň

Cieľom cvičení je precvičiť si vlastné výnimky a statické metódy/premenné.

Výnimky a statické metódy

Vytvorte triedu sk.upjs.paz.UzitocneMetody, ktorá bude obsahovať:

  • statickú metódu double sucetZoznamu(List<Double> zoznam), ktorá vráti súčet prvkov zoznamu (trieda List takú metódu nemá). Metóda vyhodí nekontrolovanú výnimku sk.upjs.paz.ZoznamPrazdnyException keď príde null alebo prázdny zoznam.
  • statickú metódu List<Double> poleStringovNaListDoublov(String[] pole), ktorá prekonvertuje každý prvok poľa na číslo a vráti zoznam prekonvertovaných hodnôt. Metóda vyhodí kontrolovanú výnimku sk.upjs.paz.NepodariloSaVsetkoSkonvertovatException v prípade, že niektorý z prvkov poľa sa nepodarilo skonvertovať. Na konverziu použite metódu statickú metódu parseDouble triedy Double.
    • Pre fajnšmekrov: Vo vyhodenej výnimke pribaľte aj zoznam neskonvertovateľných hodnôt zo vstupného poľa. V testovacej metóde túto výnimku odchyťte a vypíšte slová, ktoré sa nepodarilo skonvertovať.

Vytvorte testovaciu triedu (Launcher), v ktorej v statickej metóde main vhodne demonštrujete funkčnosť metód triedy sk.upjs.paz.UzitocneMetody.

Buildujeme

  • Pridajte JavaDoc komentáre do triedy sk.upjs.paz.UzitocneMetody a vygenerujte dokumentáciu.
  • Vytvorte spustiteľné jarko a spustite ho z príkazového riadku príkazom: java -jar VytvoreneJarko.jar
  • Upravte metódu main tak, aby jej prvý riadok obsahoval:
System.out.println(Arrays.toString(args));
  • Prebuildujte projekt a vytvorené jarko spustite príkazom: java -jar VytvoreneJarko.jar Slovo1 Slovo2
  • Na čo slúži parameter args metódy main?
  • Vytvorte mavenovský projekt využitím archetypu maven-archetype-quickstart (na čo slúžia veci v src/test sa dozviete na PAZ1c). Inšpirujúc sa pom.xml projektov vytvorených archetypmi pre JPAZ, nastavte:
    • kompilátor na verziu 1.8
    • pridajte JPAZ2 ako závislosť (dependency) projektu
    • upravte buildovanie tak, aby sa vytvorilo spustiteľné jar-ko so spúšťacou triedou App

Body a polárny súradnicový systém

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:

  • jeho vzdialenosťou od stredu súradnicového systému
  • uhlom, ktorý zviera polpriamka prechádzajúca stredom súradnicového systému a daným bodom s osou 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.

public static Bod zPolarnych(double r, double u)

Zlomky a static

Pridajte do triedy Zlomok z prechádzajúcich cvičení statickú metódu, ktorá spočíta súčet zlomkov.

public static Zlomok sucet(List<Zlomok> zlomky)

Pridajte do triedy Zlomok zlomkovú konštantu, ktorá bude reprezentovať jednu polovicu:

List<Zlomok> zoznam = new ArrayList<Zlomok>();
for (int i=0; i<10; i++)
       zoznam.add(Zlomok.polovica);

System.out.println(Zlomok.sucet(zoznam));

Továreň na tvary

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.

public static Tvar vytvorTvar(String popis)

Pre fajnšmekrov:

  • Ako by ste naprogramovali triedu, ktorej inštancie by bolo možné vytvárať iba cez statickú metódu (cez "továreň" na objekty)?
  • Skombinujte vyššie uvedené úlohy s výnimkami.

Na záver

Vyriešte (doriešte) akékoľvek z minuloročných záverečných praktických písomiek.