Na univerzitě nás učí programovat v jazyku Java - snaží se tento jazyk aplikovat do všech předmětů, které souvisí s programováním. Samozřejmě v předmětu „Úvod do jazyka C“ se Java neučí. Nicméně ve druhém ročníku je mezi povinně volitelnými předmět Programovací techniky jazyka Java. Tento předmět je určen pro studenty, kteří mají zájem o hlubší poznání tohoto jazyka a se základy programování nemají problém.
Zápočet z tohoto předmětu se skládal z vypracovaní semestrální práce (program) a následné obhájení této práce.
Zadání bylo prosté – mělo se jednat buď o síťovou aplikaci, aplikaci pracující s vlákny nebo aplikaci, které zpracovává a nějak vyhodnocuje XML dokument. Já jsem zvolil síťovou aplikaci. Mnou zadaný projekt nese název Síťové kreslení. Jedná se o jednoduchou aplikaci, která umožňuje kreslení základních geometrických tvarů po síti.
Popis funkčnosti
Aplikace je triviální – funguje na principu klient/server, tj. pouze dva účastníci. Komunikace probíhá pomocí příkazů, které určují, co se má nakreslit
obecný parametr:
TYP_OBRAZCE BARVA TLOUSTKA_STETCE PARAMETRY_KRESLENI[]
Aplikace umí posílat i obrázky, i když vykreslení trochu trvá – vykresluje po řádcích. Většina operací (kreslení, komunikace a posluchači) běží ve vláknech, samotná aplikace ale není na procesor moc náročná.
Jednotlivé třídy (architektura)
DemoApp – inicializuje panel a spouští celou aplikaci
DemoFrame – samotné okno aplikace obsahující menu a instanci plátna
Platno – kreslící plátno
Client – obstarává klientskou komunikaci (poslouchací vlákno)
Server – obstarává serverou část (poslouchací vlákno)
ConnectStatus - třida, která ví, zda se komunikuje, nekomunikuje nebo jestli se náhodou nedokomunikovalo :-)
CommandsCollection – Datová struktura, která přijímá a odebírá příkazy (synchronizovaná)
Algorithm – Obsahuje pomocné algoritmy kreslení (výpočet Lagrangeho polynomu, semínkové vyplňování a XOR režim kreslení)
DrawGeometry – statická třída, která umí kreslit jednotlivé útvary
V neposlední řadě tu je pak samotný balíček obsahující třídy jako Rect, Polygon, Line a další útvary. Tyto třídy ví, jaké parametry očekávat a jak z nich cílený útvar vytvořit.
Kódu je to kupa a divím se, že to vůbec funguje, nicméně započet i zkoušku mám.
