Cvičenia: 12. týždeň

Cieľom cvičení jedenásteho týždňa 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 (napr. Spustac), v ktorej v statickej metóde main vhodne demonštrujete funkčnosť metód triedy sk.upjs.paz.UzitocneMetody.

Príkazový riadok

Spustite testovaciu metódu k predchádzajúcej úlohe z príkazového riadku.

Vyrobte novú spustiteľnú triedu, v ktorej načítate vstupné čísla z argumentov v príkazovom riadku (argumenty uvedené v príkazovom riadku za názvom triedy odídu do vstupnej premennej args metódy main) a vypíšte ich súčet.

  • Vytvorte dva spustiteľné jar súbory používajúce prvú resp. druhú spustiteľnú triedu a skúste ich spustiť z príkazového riadku.
  • Pre fajnšmekrov:' Modifikujte predchádzajúce príklady tak, aby sa výpis výsledného súčtu vypísal vo WinPane frameworku JPAZ2 (vytvorenie spustiteľného jar súboru s inou jar knižnicou).

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));

Classpath

Diskutujte o tom, čo je to classpath a o mechanizme, ako Java hľadá a načítava triedy.

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.