Zadanie 2
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.221207Na 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.66400547453Výstup pre utvary2.in :
n=10001 o=247733.38912009058 s=579900.5176629717Ukáž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.66400547453Alebo:
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 )