Preskočiť navigáciu

Dokumentácia programovacieho rámca GRobot

Tento materiál bol vytvorený generovaním a úpravou Javadoc dokumentácie k programovaciemu rámcu GRobot. Tento rámec bol vytvorený na účely vyučovania predmetov programovania s použitím programovacieho jazyka Java.

Autor:Mgr. Ing. Roman Horváth, PhD.
Pre verziu:2.22 (2024-03-26)
Rozpätie vývoja:august 2010 – marec 2024

 

Úvodné slovo

Programovací rámec GRobot je v skutočnosti nástrojom, ktorý okrem vyučovania programovania našiel využitie aj pri tvorbe viacerých súkromných projektov jeho autora. V úvode by sme sa radi pozastavili nad zmyslom tvorby frameworkov. Podobne ako vyššie programovacie jazyky uzatvárajú často používané funkcie nižších programovacích jazykov do ľahšie použiteľných celkov, poskytujú frameworky možnosť jednoduchšej a rýchlejšej tvorby aplikácií určitého charakteru. Analýzou frameworkov môžeme odhaliť, koľko úsilia by programátori museli vynaložiť, keby ich nemali k dispozícii.

Jeden reprezentačný príklad z tohto rámca ukazuje metóda choďNaPoOblúku, ktorá funguje tak, že presunie robota na zadané súradnice „kráčajúc“ po kružnicovom oblúku. Úlohou autora tejto metódy bolo vyriešiť výpočet dráhy robota zo zdrojovej polohy do cieľovej tak, aby sa robot pohyboval po kružnicovom oblúku a aby sa dotyčnica ku kružnici v počiatočnom bode pohybu zhodovala so smerom robota v tomto bode.

To je dostatok parametrov na vyriešenie úlohy. Najskôr sa vypočíta polomer oblúka podľa aktuálneho smeru robota (čím je uhol medzi novými súradnicami a aktuálnym pootočením robota väčší, tým väčší bude polomer oblúka; jediný smer, ktorý v tejto súvislosti nedáva zmysel, je presne opačný smer od zadaných súradníc – doslovne vzaté z výpočtov vyplýva, že by robot mal prejsť nekonečnom; metóda to rieši vznikom výnimky). Potom sa určí stred kružnice, čím je úloha prakticky vyriešená. Ak je spustený záznam cesty, tak je vygenerovaný oblúk pridaný aj do cesty.

Na prvý pohľad by sa mohlo zdať, že je to jednoduchá úloha, lenže riešenie bolo potrebné prispôsobiť tak, aby metóda mohla využiť triedu Javy Arc2D.Double, ktorá potrebuje zadanie ohraničujúceho obdĺžnika elipsy a počiatočný a koncový uhol elipsy. Z vlastnej skúsenosti môžem povedať, že človek, ktorý nepoužíva geometriu a geometrické myslenie každý deň, potrebuje na vyriešení tohto problému intenzívne popracovať asi týždeň.

Takéto situácie nie sú pri programovaní ojedinelé. Predstavte si, že by každý programátor musel namiesto použitia pripraveného príkazu (čo je otázka niekoľkých sekúnd potrebných na napísanie príkazu) stráviť týždeň riešením nejakého problému z matematiky, fyziky alebo inej oblasti. Cieľom frameworkov s vopred vyriešenými problémami je takýmto situáciám brániť.

 

Toto je tretie vydanie dokumentácie. Predchádzajúce verzie sú umiestnené tu http://cec.truni.sk/horvath/Robot/ a tu http://cec.truni.sk/horvath/GRobot/ (kde boli priebežne aktualizované). Ďalšie podrobnosti o tejto dokumentácii aj o grafickom robotovi nájdete v úvodných pasážach najrozsiahlejšej z „kapitol“ (stránok) tohto materiálu – GRobot. Tam sú zároveň podrobnejšie vysvetlené dôvody použitia nasledujúcich symbolov:

  getter – pozri informácie v úvode triedy GRobot – časť Metódy a konštruktorygetter (z anglického „get“ – vziať/dostať) číta hodnotu vlastnosti
setter – pozri informácie v úvode triedy GRobot – časť Metódy a konštruktorysetter (z anglického „set“ – nastaviť) zapisuje hodnotu vlastnosti
alias – pozri informácie v úvode triedy GRobot – časť Metódy a konštruktoryalias – prezývka triedy, rozhrania, metódy alebo atribútu

Zoznamy, ktoré sú publikované nižšie, slúžia na vstup do jednotlivých „kapitol“ (stránok) materiálu, pričom každá z nich je v skutočnosti z veľkej časti dokumentáciou konkrétnej triedy alebo rozhrania rámca. Dokumentácia je, samozrejme, obohatená o rôzne komentáre, príklady, výsledky.

Na túto stránku sa môžete vrátiť kliknutím na odkaz Úvod, ktorý je permanentne umiestnený v hornej časti každej „kapitoly“ (stránky) tohto materiálu. Pri uvedenom odkaze zároveň nájdete odkaz na stránku Kategórie metód, ktorá zhŕňa relevantné metódy tried rámca do jedného spoločného priestoru rozdeleného podľa významových kategórií, napríklad pre samotného robota to sú: Základný pohyb robota, Vlastnosti pera (čiary), Domovská pozícia a domovské stavy a podobne.

Používanie diakritiky

Pri programovaní sa z historických dôvodov vždy tolerovalo nepoužívanie diakritiky. Java, Python a iné programovacie jazyky však v súčasnosti už prekonali bariéru nemožnosti používania diakritiky, takže je otázkou, prečo by sme sa stále mali jej používaniu brániť?

Možno si neuvedomujete, aká je diakritika v slovenčine dôležitá. Prečítajte nasledujúce slová bez diakritiky: bábka, krík, látka, pračka, párenie, koža, posuň, kópia, puška, plát, tvár, brať, zoznám, kočka, moč, šteňa, plást, špinka, zásadne, troška, uhoľ, Mačka, Maťka, Máška, Rúško. Hneď si uvedomíte rozdiel. Niektoré slová po odstránení diakritiky nemajú význam, ale zostanú dvojznačné (napríklad: nákup/nakúp, späť/spať). Skúste bez pomoci vydedukovať, čo by robila nasledujúca metóda nazvaná bez diakritiky takto: vypisNaBode? Je to vypíšNaBode (zápis) alebo výpisNaBode (čítanie)? Správna odpoveď v rámci tohto programovacieho rámca je práve tá druhá. Ďalší príklad: Z nasledujúcich štyroch variantov slov majú tri unikátny význam a jeden je obmenou jedného z trojice (ak ignorujeme homonymický význam): cela, celá, čela, čelá.

V záujme ústretovosti sme sa v tomto rámci pokúsili definovať aliasy všetkých tried, atribútov a metód aj bez diakritiky, no ich používanie neodporúčame. Niekedy nastávajú problémy s kompatibilitou. Niekedy dokonca definovanie kompatibilného aliasu nebolo možné, pretože k návratovej hodnote objektu s diakritikou (napr. Obrázok) bola prisúdená metóda, ktorá žiadnu diakritiku neobsahovala (ikona()), takže k objektu bez diakritiky (Obrazok) nemohla byť definovaná rovnomenná metóda (je to riešené bezdiakritickým „aliasom“ obrazok()).

O aliasoch a diakritike sa píše aj v spomínaných úvodných pasážach opisu triedy GRobot.

(Od verzie 1.0 vyššie je pravidelne aktualizovaný zoznam zmien.)

Preskočiť navigáciu