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-12-23) |
Rozpätie vývoja: | august 2010 – september 2024 |
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 (z anglického „get“ – vziať/dostať) číta hodnotu vlastnosti | ||
– | setter (z anglického „set“ – nastaviť) zapisuje hodnotu vlastnosti | ||
– | alias – 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.
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.)
Rozhranie | Opis |
---|---|
Farebnost |
Alias pre
Farebnosť . |
Farebnosť |
Rozhranie slúži na implementáciu metódy slúžiacej na zistenie farby
objektu a obsahuje definície konštánt farieb.
|
Konstanty |
Alias pre
Konštanty . |
Konštanty |
Toto rozhranie zhromažďuje všetky konštanty používané v programovacom
rámci.
|
KreslenieTvaru |
Rozhranie používané na kreslenie (vlastných) tvarov robota, začiatočných a koncových značiek spojníc
robotov, definíciu kreslenia a export prvkov roja do
formátu SVG, prípadne na ďalšie zákaznícky definované účely.
|
Poloha |
Rozhranie slúži na implementáciu metód slúžiacich na zistenie polohy
objektu.
|
Priehladnost |
Alias pre
Priehľadnosť . |
Priehľadnosť |
Rozhranie slúži na implementáciu metódy slúžiacej na zistenie aktuálnej
úrovne priehľadnosti a na definíciu konštánt priehľadnosti.
|
Rozmer |
Rozhranie slúži na implementáciu metód slúžiacich na zistenie
a nastavenie rozmeru (šírky a výšky) objektu.
|
Smer |
Rozhranie slúži na implementáciu metód slúžiacich na zistenie aktuálnej
orientácie (smeru/uhla) objektu a na definíciu konštánt pre základné smery.
|
Spojenie.Ladenie |
Sieťová komunikácia je zložitá, preto bolo 7. 7. 2023 implementované
toto rozhranie ladenia.
|
Svet.PríkazovýRiadok.PresmerovanieVýstupu |
Toto rozhranie slúži na presmerovanie výstupov a denníkov
inštancií príkazového riadka.
|
ZmenaCelejObrazovky |
Toto rozhranie slúži na obsluhu zmeny režimu celej obrazovky.
|
Trieda | Opis |
---|---|
Archiv |
Alias pre
Archív . |
Archív |
Táto trieda slúži na prácu s údajovými archívmi vo formáte ZIP.
|
Bod | |
Castica |
Alias pre
Častica . |
Častica |
Toto je pomocná trieda určená na tvorbu časticových simulácií.
|
Farba |
Trieda je určená na prácu s farbami v rámci programovacieho rámca
GRobot.
|
Filtre |
Táto trieda zoskupuje a zjednodušuje prácu s regulárnymi výrazmi.
|
Filtre.Filter |
Táto vnorená trieda je trieda prvkov zoznamu triedy
Filtre a zároveň môže slúžiť na sprostredkovanie jednoduchších úkonov
s regulárnymi výrazmi. |
GRobot |
Ústredná trieda definujúca všetky metódy grafického robota (ktoré reprezentujú jeho funkcionalitu) a viaceré konštanty, ktoré sú pri práci s programovacím rámcom s výhodou využiteľné.
|
GRobot.Spojnica |
Táto trieda slúži na uchovávanie a prístup k vlastnostiam
čiarových spojníc, ktoré sú definovateľné medzi robotmi.
|
GRobotException.Dennik |
Alias pre
Denník . |
GRobotException.Denník |
Trieda zoznamu chybových hlásení a evidencie výnimiek vypísaných
a/alebo vzniknutých počas činnosti programovacieho rámca.
|
GRobotException.Chyba |
Trieda uchovávajúca záznam denníka.
|
Klaves |
Alias pre
Kláves . |
Kláves |
Trieda je určená na použitie s udalosťami klávesnice (
KeyEvent ). |
KontextovaPolozka |
Alias pre
KontextováPoložka . |
KontextováPoložka |
Trieda
KontextováPonuka spolu s triedou
KontextováPoložka umožňujú používanie kontextových ponúk. |
KontextovaPonuka |
Alias pre
KontextováPonuka . |
KontextováPonuka |
Trieda
KontextováPonuka spolu s triedou KontextováPoložka umožňujú používanie kontextových
ponúk. |
Oblast |
Alias pre
Oblasť . |
Oblasť |
Trieda je rozšírením triedy Javy
Area . |
Obrazok |
Alias pre
Obrázok . |
Obrázok |
Obrázok je rozšírením triedy Javy
BufferedImage
nielen o funkcionalitu bežne používanú vo svete grafického robota |
ObsluhaUdalosti |
Alias pre
ObsluhaUdalostí . |
ObsluhaUdalostí |
Trieda obsluhy udalostí slúži na obsluhu rozmanitých udalostí.
|
Okno |
Táto trieda je určená na tvorbu a manipuláciu s doplnkovými oknami
aplikácie.
|
Pismo |
Alias pre
Písmo . |
Písmo |
Trieda obaľuje triedu Javy
Font . |
Platno |
Alias pre
Plátno . |
Plátno | |
Plazma |
Táto trieda generuje pixelovú simuláciu horiacej plazmy v zadanom
obrázku.
|
PolozkaPonuky |
Alias pre
PoložkaPonuky . |
PoložkaPonuky |
Táto trieda umožňuje vo svete grafického robota používať položky
ponuky aplikácie.
|
PoznamkovyBlok |
Alias pre
PoznámkovýBlok . |
PoznámkovýBlok |
Trieda
PoznámkovýBlok dovoľuje vytvárať v aplikácii
používajúcej robot textové bloky, ktoré sú zobrazované nad plátnom
(t. j. nie sú jeho súčasťou) a dovoľujú zobraziť alebo upraviť väčšie
množstvo textu. |
Rad |
Trieda
Rad umožňuje vytvárať inštancie generujúce pílové
číselné postupnosti. |
Roj |
Táto trieda umožňuje definovať a pracovať so sériou bodov (zvaných roj)
umiestnených v trojrozmernom priestore.
|
Roj.Bod |
Trieda uchovávajúca údaje o jednom bode roja.
|
Roj.Smerník |
Pomocná trieda na riadené vkladanie bodov do roja.
|
RolovaciaLista |
Alias pre
RolovaciaLišta . |
RolovaciaLišta |
Trieda
RolovaciaLišta uzatvára a rozširuje funkciu triedy
Javy JScrollBar . |
Rozmery |
Táto trieda uchováva rozmery (šírku a výšku) objektu, pričom súčasne
reprezentuje inštanciu rozmeru Javy
Dimension2D
a implementuje rozhranie Rozmer programovacieho rámca
GRobot. |
Schranka |
Alias pre
Schránka . |
Schránka |
Táto trieda pokrýva základné činnosti so schránkou operačného
systému.
|
Skript |
Táto abstraktná trieda vnútorne implementuje celý mechanizmus
interpretácie skriptov programovacieho rámca GRobot.
|
Skript.PremenneSkriptu |
Alias pre
PremennéSkriptu . |
Skript.PremennéSkriptu |
Táto trieda uchováva a pracuje s mapami premenných skriptov.
|
Spojenie |
Táto trieda slúži na vytvorenie a udržiavanie komunikácie so
serverom.
|
Subor |
Alias pre
Súbor . |
Súbor |
Trieda na prácu so súbormi.
|
Svet |
Trieda, ktorá spája metódy obsluhujúce hlavné okno so statickými
metódami rôzneho významu.
|
Svet.PrikazovyRiadok |
Alias pre
PríkazovýRiadok . |
Svet.PríkazovýRiadok |
Hlavná časť implementácie jednoduchého príkazového riadka
operačného systému.
|
SVGPodpora |
Táto trieda slúži na komunikáciu programovacieho rámca s okolím
prostredníctvom základov štandardu SVG.
|
SVGPodpora.Transformacia |
Alias pre
Transformácia . |
SVGPodpora.Transformácia |
Táto trieda slúži na uchovanie pôvodných informácií
o transformáciách rozpoznávaných z textovej podoby podľa
špecifikácie SVG.
|
Tlac |
Alias pre
Tlač . |
Tlacidlo |
Alias pre
Tlačidlo . |
Tlač |
Trieda prepájajúca kresliace funkcie robota s rozhraniami tlačového
výstupu.
|
Tlačidlo |
Trieda
Tlačidlo dovoľuje vytvárať v aplikácii používajúcej
programovací rámec robota tlačidlá, ktoré sú zobrazované nad plátnom (avšak
nie sú jeho súčasťou). |
UdajeUdalosti |
Alias pre
ÚdajeUdalostí . |
ÚdajeUdalostí |
Toto je statická trieda disponujúca informáciami o rôznych udalostiach
sveta.
|
Uhol |
Táto trieda uchováva hodnotu uhla použiteľnú na rôznych miestach
programovacieho rámca.
|
Vlnenie |
Táto trieda slúži na oživenie vlnenia obrázkov, plátien i sveta.
|
Zoznam<Typ> |
Zoznam je použiteľný na vytvorenie zoznamu ľubovoľných objektov.
|
Zoznam.ObratenyIterator<Typ> |
Alias pre
ObrátenýIterátor . |
Zoznam.ObrátenýIterátor<Typ> |
Táto trieda slúži na vytvorenie obráteného iterátora zoznamu.
|
Zvuk |
Táto trieda dovoľuje programátorovi podrobnejšie pracovať so zvukom,
ktorý prečítal pomocou metódy
čítajZvuk . |
Výnimka | Opis |
---|---|
GRobotException |
Výnimka generovaná programovacím rámcom so slovenským textom opisujúcim
udalosť a univerzálnym jazykovým identifikátorom umožňujúcim preklad do
ľubovoľného jazyka.
|