Zadanie 2

Napíšte program, ktorý dokáže vypočítať obsahy a obvody rôznych geometrických útvarov. Použite objektovo-orientovaný prístup (dedenie a polymorfizmus).
Podrobnejší popis zadania: Máte definovanú abstraktnú triedu GeomTvar, ktorá obsahuje spoločné chránené (protected) atribúty a metódy pre všetky zadefinované geometrické útvary. V triede pre jednotlivé geometrické útvary potrebujete mať preťažené implementované telá metód na výpočet obvodu a obsahu. Ďalej máte definovanú triedu Platno, ktorej súkromným (private) atribútom je kolekcia (List) geometrických útvarov. V triede Platno potrebujete mať verejné implementované metódy na výpočet súčtu obvodov, obsahov a metódu na pridávanie geometrických tvarov do kolekcie geometrických útvarov. Konkrétne geometrické útvary so všetkými potrebnými atribútmi sú zapísané v textovom súbore v tomto formáte.

	číslo_útvaru;x;y;šírka;dĺžka;
	číslo_útvaru;x;y;polomer;
	číslo_útvaru;x;y;šírka;
	číslo_útvaru;x;y;dĺžka;
	......
	číslo_útvaru;x;y;šírka;
	číslo_útvaru;x;y;polomer;	
	číslo_útvaru;x;y;dĺžka;	
    
číslo_útvaru - určuje druh geometrického útvaru na riadku
  • 0 - obdĺžnik (šírka;dĺžka)
  • 1 - kruh (polomer)
  • 2 - štvorec (šírka)
  • 3 - rovnostranný trojuholník (dĺžka)

x;y - súradnice kde sa útvar na plátne nachádza

V súbore môže byť takto definovaný ľubovoľný počet rôznych geometrických tvarov, kde každý tvar je na jednom riadku.
Po spustení program vypíše počet geometrických útvarov v kolekcii a ich súčet obsahov, súčet obvodov.
PRÍKLAD VSTUPNÉHO SÚBORU:

	
	1;0;0;23;
	1;0;2;24;
	0;30;20;400;21;
	1;10;30;12.4;
	
Ukážka výstupu na obrazovku (System.out):
	
        n=4
        o=12354.51117
        s=1215.221207
	
Na System.out nebude nič iné vypísané ako tieto 3 riadky v ukážkovom výstupe.
n - je počet útvarov na plátne
o - Výsledný obvod = 12354.51117
s - Výsledný obsah = 1215.221207

Nezabudnite ošetriť nekorektné vstupy, t.j. je musí sedieť počet atribútov v závislosti od čísla tvaru(geometrického tvaru). Inak program vypíše chybu. Jednotlivé triedy nesmú byť definovane v tej istej triede, ktorá je považovaná za hlavnú triedu (tam kde je main). Inými slovami, nechceme, aby ste využili tzv. vnorenú triedu.
https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

Testovacie súbory

Nižšie sú uvedené testovacie súbory, pre kontrolu správnosti výpočtu obsahov a obvodov útvarov.

Výstup pre utvary1.in :
	
n=10
o=1934.8849013323177
s=33306.66400547453
	
Výstup pre utvary2.in :
	
n=10001
o=247733.38912009058
s=579900.5176629717
	
Ukážkový výstup pre utvary3.in :
	
CHYBA pri načítaní útvarov. Skontrolujte vstupný súbor.
	
Výstup pre utvary4.in :
	
n=10
o=1934.8849013323177
s=33306.66400547453
	
Alebo:
	
CHYBA pri načítaní útvarov. Skontrolujte vstupný súbor.
	

Odovzdanie

Do AIS odovzdajte [vase_AIS_ID]_zad2.zip do 3.4. 2016, 23:59. Program MUSÍ byť spustiteľný v jave 1.6 a viac. Inak je zadanie hodnotené za 0 bodov

Súbor [vase_AIS_ID]_zad2.zip musí obsahovať

  • src/ - priečinok so zdrojovými súbormi
  • dist/[vase_AIS_ID]_zad2.jar - spustiteľny súbor .jar

Program musí pracovať s

  • utvary.in - súbor, ktorý program berie ako vstup v zadanom formáte
  • dist/utvary.in - súbor, ktorý program berie ako vstup v zadanom formáte

Súbor [vase_AIS_ID]_zad2.zip môže obsahovať

  • lib/ - priečinok kde sú uložené všetky používané knižnice
  • dist/lib/ - priečinok s používanými knižnicami (totožný obsahovo s lib/ )
    
UPOZORNENIE !!! Ak v archíve .zip budú chýbať niektoré povinné uvedené priečinky/súbory alebo .jar sa nebude dať spustiť alebo zdrojové súbory sa nebudú dať skompilovať zadanie je hodnotené 0 bodmi !!! Program nesmie fungovať výhradne len pre daný vstup ale pre ľubovoľný vstup, keďže obsah súboru utvary.in budeme počas kontroly meniť. V prípade, že vstupné matice nemôžu byť vynásobené tak program to používateľovi oznámi na chybovom výstupe. ( System.err )