4. sada domácich zadaní

Najneskorší termín odovzdania: 26.10.2014 (nedeľa) o 21:00
Odovzdávané súbory: ZadanaKorytnacka.java, TrojuholnikovaPlocha.java

Cieľom tejto sady domácich zadaní je vytvoriť triedu ZadanaKorytnacka, ktorá rozširuje triedu Turtle a ktorá obsahuje nižšie predpísané metódy, a triedu TrojuholnikovaPlocha, ktorá rozširuje triedu WinPane.

Doplňujúce požiadavky:

  • riešenia, ktoré nebude možné skompilovať (t.j. riešenia so syntaktickými chybami) nebudú hodnotené,
  • zdrojový kód správne naformátujte (CTRL+SHIFT+F),
  • očakáva sa vhodne okomentovaný zdrojový kód
  • pri riešení používajte len poznatky, ktoré boli súčasťou 4. prednášky a na ňu nadväzujúcich cvičení (napr. neodporúčame použiť regulárne výrazy),
  • odoslané triedy musia obsahovať len metódy nevyhnutné pre fungovanie metód uvedených v zadaní, t.j. nechceme vidieť metódy k riešeniam iných sád domácich zadaní.

E-mailové adresy na UPJŠ (1 bod)

Naučte korytnačky triedy ZadanaKorytnacka metódu emailovaAdresa, ktoré pre zadané meno a priezvisko zamestnanca UPJŠ vráti jeho e-mailovú adresu. E-mailová adresa zamestnanca UPJŠ má formát meno.priezvisko@upjs.sk, kde meno a priezvisko sú napísané malými písmenami. Meno a priezvisko osoby sa nachádzajú v parametri osoba a sú oddelené jednou medzerou.
Príklad:

  • emailovaAdresa("Janko HRASKO") = "janko.hrasko@upjs.sk"
  • emailovaAdresa("Peter Chemik") = "peter.chemik@upjs.sk"
  • emailovaAdresa("ALBERT MATEMATIK") = "albert.matematik@upjs.sk"
public String emailovaAdresa(String osoba)

Tip: metóda toLowerCase triedy String

Tagy preč (2 body)

Základným prvkom HTML je značkovanie textu pomocou tagov. Tag je postupnosť znakov ohraničená znakmi < a >. Príklad textu s tagmi: Zakladnym prvkom <i>html</i> je <strong>tag</strong>.

Do triedy ZadanaKorytnacka pridajte metódu odstranTagy, ktorá vráti referenciu na novovytvorený reťazec, ktorý vznikne zo zadaného reťazca odstránením všetkých tagov.

public String odstranTagy(String retazec)

Príklad:

  • odstranTagy("Zakladnym prvkom <strong>html</strong> je <b>tag</b>.") = "Zakladnym prvkom html je tag."

Jožkov šifrovač (2 body)

Existujú rôzne metódy, ako údaje „zmenšiť“ (kompresné algoritmy) alebo znemožniť ich prečítanie nežiadúcou osobou (šifrovacie algoritmy). V rámci tejto úlohy bude cieľom vytvoriť metódu, ktorá nepovolaným osobám trochu (ale naozaj iba trochu) sťaží prečítanie obsahu správy.

Do triedy ZadanaKorytnacka pridajte metódu zasifruj, ktorá zadaný reťazec transformuje na iný reťazec aplikovaním tzv. Jožkovho šifrovača. Nový reťazec zo zadaného reťazca vytvoríme preusporiadaním znakov. Prvý znak v novom reťazci bude prvý znak pôvodného reťazca, druhý znak v novom reťazci bude posledný znak pôvodného reťazca, tretí znak v novom reťazci bude druhý znak pôvodného reťazca, štvrtý znak v novom reťazci bude predposledný znak v pôvodnom reťazci, atď. Jednoducho nový reťazec vznikne striedavým pridávaním znakov zo začiatku reťazca a z konca reťazca, až kým sa „nestretneme“ v strede.

public String zasifruj(String retazec)

Príklady:

  • zasifruj("mama vari veceru") = "muarmeac evva ri"
  • zasifruj("ahoj svet") = "atheovjs "

Jožkov dešifrovač (3 body)

Samotný kódovač nie je veľmi užitočný bez dekódovača. Do triedy ZadanaKorytnacka pridajte metódu desifruj, ktorá vráti dekódovaný reťazec, t.j. taký reťazec, ktorého zakódovaním dostaneme reťazec s rovnakým obsahom ako je parametrom referencovaný reťazec.

public String desifruj(String retazec)

Má teda platiť, že s.equals(zasifruj(zakoduj(s)).

Trojuholíková plocha (4 body)

Naprogramujte triedu TrojuholnikovaPlocha rozšírujúcu triedu WinPane, ktorá klikaním do plochy bude kresliť body pospájané do trojuholníkov.

Každá trojica kliknutí do plochy vykreslí v ploche trojuholník s vrcholmi v bodoch kliknutia nasledovným spôsobom:

  • prvé kliknutie vykreslí v ploche bod s polomerom 5,
  • druhé kliknutie vykreslí v ploche bod s polomerom 5 a navyše spojí tento nový bod s prvým bodom kliknutia,
  • tretie kliknutie vykreslí v ploche bod s polomerom 5 a navyše spojí tento nový bod s druhým bodom kliknutia a zároveň s prvým bodom kliknutia (t.j. uzavrie trojuholník medzi týmito bodmi).
  • ďalšie kliknutie do plochy otvára nový klikací cyklus (t.j. je považované za prvé kliknutie v rámci ďalšieho trojuholníka).

Farba vykresleného bodu je:

  • modrá, ak bol pri kliknutí zároveň stlačený Alt,
  • zelená, ak bol stlačený Shift, a
  • červená, ak nebolo stlačené ani jedno s týchto dvoch tlačidiel.

Farba spojovacej čiary závisí od farby bodov, ktoré spája. Ak spájané body majú rovnakú farbu, ich spojnica má tiež túto farbu. Ak body majú rôznu farbu, spojnica má jednu z farieb modrá, zelená alebo červená, no táto farba sa musí líšiť od farby oboch bodov, ktoré spája. Spojnice nesmú prekrývať body, ktoré spájajú (viď obrázok).