OOP – Naučte se myslet a programovat objektově

Naposledy aktualizováno:   
2015-02-28 – 12:40:53

Objektově orientované programování pro naprosté začátečníky

Vítejte na stránce učebnice, která vznikala pod pracovním názvem Objektově orientované programování pro naprosté začátečníky (proto v záhlaví ten podtitul). Na této stránce a na stránkách odtud odkázaných budou umístěny doprovodné programy a další materiály, které jsou volně ke stažení.

Obsah

Vývojové prostředí BlueJ

K programům, bych jenom dodal, že jsou sice určeny pro práci v IDE BlueJ, ale není problém je spustit v jakémkoliv jiném IDE nebo dokonce v obyčejném editoru. Budete-li je chtít provozovat se vší parádou pod BlueJ, postupujte podle návodu zde.

Doprovodné programy ke stažení

Nejprve bych se měl omluvit za to, že jako každý člověk dělám chyby, a přes to, že knihu a její doprovodné programy kontrolovalo při jejím vzniku vedle mne okolo 10 dalších lidí, přesto se jednou za čas podaří objevit nějakou další. Neuškodí proto, když se jednou za čas podíváte na tuto stránku, jestli se mezi tím neobjevila novější verze doprovodných programů.

U archivu doprovodných programů určených ke stažení budu vždy uvádět, kdy byla daná verze vytvořena. Vám by mělo stačit hlídat si druhé číslo za počáteční jedničkou (poslední čtyřčíslí označuje číslo verze v mém správci verzí, takže stoupá skokem, protože se mezi verze doprovodných programů vkládají verze knih a dalších produktů).

Doprovodné programy jsou zabaleny ve speciálním archivu (JAR = JAva Archiv, je na většině počítačů spustitelným souborem) OOPNZ_Projekty_1.17.5210_2015-02-28.jar , jenž vám umožní zadat, které z dostupných projektů chcete vygenerovat. Tento archiv má zhruba 600 KB, avšak rozbalené projekty zaberou na disku okolo 20 MB.

Protože se poslední dobou několikrát přihlásil někdo s problémy způsobenými tím, že potřeboval používat minulou verzi Javy, tak jsem program upravil tak, aby chodil jak se starou Javou 6, která byla aktuální v době psaní knihy, tak s jejími novějšími verzemi. Stejně tak i zdrojové soubory generovaných projektů.

Oproti předchozím verzím, které na některých počítačích tu tam odmítly korektně spustit správce plátna, by již tato verze neměla zlobit. Kdyby měl někdo problémy, ozvěte se a podíváme se, kde by mohla být chyba.

Abyste mohli použít generátor projektů z archívu, musíte mít nejprve instalovanou Javu. Budete-li ji mít instalovanou správně, mělo by stačit poklepání na soubor obdobně, jako to děláte s jinými spustitelnými soubory.

Máte-li na počítači instalovaný nějaký (většinou komprimační) program, který se prohlásí za "vlastníka" JAR-souborů, nemusí vám dovolit spustit JAR poklepáním.
Bude-li váš počítač trucovat a bude odmítat spustit JAR-soubory prostým poklepáním, můžete se pokusit spustit program z příkazového řádku zadáním příkazu:

  java -jar <cesta-k-Jar-souboru>

V některých operačních systémech, např. ve Windows, nemusíte dokonce ani zadávat celou cestu k souboru, ale stačí pouze přetáhnout soubor do okna příkazového řádku a systém cestu sám doplní na konec aktuálního příkazového řádku.

Použití generátoru je jednoduché. Po spuštění souboru se otevře dialogové okno, v němž do vstupního pole Cílová složka: zadáte cílovou složku, do které se mají vygenerované projekty ukládat (složka musí existovat). Nemáte-li odkud její adresu zkopírovat a nechce-li se vám vypisovat, můžete stisknout tlačítko Procházet ... a složku najít, resp. vytvořit prostřednictvím dialogového okna.

Pod vstupním polem je seznam s názvy projektů, které je možno vygenerovat. Projekty vybírate klepnutím myši. Chcete-li jich vybrat více, můžete využít přeřaďovačů CTRL a SHIFT, které zde fungují standardně. Chcete-li vybrat všechny projekty, stačí v levém horním rohu okna stisknout tlačítko Generovat všechny.

Po zadání cílové složky a seznamu generovaných projetků stiskněte tlačítko OK a během chvilky se v zadané cílové složce požadované projekty objeví.

Odstranění diakritiky

Dopředu upozorňuji, že v projektech je používaná diakritika, protože mám vyzkoušeno, že se pak v nich začátečníci lépe vyznají, a pro začátečníky je tato učebnice určena především. Pokud náhodou někdo diakritiku v programech nesnáší, má možnost si stáhnou program Prevod_kodovani.jar a s jeho pomocí veškerou diakritiku ze souborů odstranit (případně nastavit jakékoliv jiné kódování).

Program vyžaduje pouze zadání zdrojové složky, tj. složky se soubory, které se chystáte převést do jiného kódování, a cílové složky, což je složka, do které se uloží překódované programy. Soubory, které dostanete ode mne mají kódování UTF-8. Budete-li je chtít "odháčkovat", nastavte cílové kódování ASCII (tato kombinace je přednastavena).

Převáděné soubory jsou textové soubory, u nichž chcete změnit kódování,
Kopírované soubory jsou různé obrázky, které chcete jenom zkopírovat,
Ignorované soubory bude program opravdu ignorovat a do cílového projektu se nedostanou
a Speciální soubory jsou soubory, které jsou sice v ASCII, ale skrytě používají diakritiku. Typicky jsou to soubory *.properties, bluej.pkg a package.bluej. Ty je třeba při "odháčkování" projít a tuto skrytou diakritiku z nich také odstranit.

Opravy nalezených chyb (errata)

Na knize se sice podílela celá řada lidí, ale všichni jsme chybující, tak se i přesto může stát, že v ní najdete chybu nebo vám v ní bude něco nejasné. Nejasnosti mohou vzniknout nejenom při čtení knihy, ale i při práci na programech.

Bude-li se vám zdát, že v některém ze stažených programů je chyba, podívejte se nejprve na tuto stránku (stránku, kterou právě čtete), jestli máte opravdu poslední verzi knihovny. Není vyloučeno, že chybu v doprovodných programech odhalil již někdo před vámi a že už je dávno opravena.

Protože někdy je potřeba vysvětlení, tak bude-li v sekci Správně: odpověď vysazena kurzivou, nejedná se o text, který má nahradit text v učebnici, ale pouze o text vysvětlující příslušnou chybu či její opravu.


Strana 292, 2. odstavec odspodu
V knize:
Navíc po tobě budu ještě chtít, abys ve všech našich čtyřech třídách implementovala metodu getRozměr(), která vrátí skutečný rozměr dané instance
Úkol jsem sice zadal, ale do vzorových programů zapomněl doplnit jeho řešení. To jsem doplnil až po upozornění pozorného čtenáře. Najdete je v nich od verze 1.17.5210_2015-02-28.



Nejčastější dotazy (FAQ)

Tato sekce je určena pro odpovědi na vaše nejčastější dotazy.

Na počátku jsou dotazy, které se netýkají přímo vykládané látky,
ale jsou zaměřeny na některé související záležitosti:
instalaci JDK, BlueJ, konfiguračního doplňku a doprovodných programů,
některé vlastnosti BlueJ, apod.

Za nimi jsou pak dotazy k textu knihy.
Ty jsem seřadil podle stránek, na nichž se nachází text,
při jehož studiu se objevily nejasnosti.

Budete-li mít nějaký dotaz, ať už k látce či prostředí, pošlete mi
mail s předmětem začínajícím OOP-NMPO_Dotaz:
Bude-li se dotaz týkat něčeho obecnějšího,
zveřejním zde odpověď i pro ty ostatní.



Dotaz:
Mám problémy se spuštěním programu BlueJ.

Odpověď:
Podívejte se, zda jste program program (Javu nebo BlueJ) neinstalovali do složky,
v jejíž cestě jsou nějaké paznaky (vykřičník, mezera, ...).
S mezerou se již autoři programu vyrovnali,
ale některé další znaky (např. právě vykřičník) stále vyvolávají kolize,
protože je Java interně používá k něčemu jinému.


Dotaz:
Při překladu doprovodných programů hlásí překladač chyby.

Odpověď:
Pravděpodobně budete mít instalovánu špatnou verzi Javy.
Doprovodné programy k této učebnici vyžadují nejméně verzi 6.

Tento dotaz byl položen záhy po vydání knihy. Domnívám se, že dnes má verzi 6
instalovánu téměř každý. Prozatím jsem ale programy zkoušel jenom do verze 8.
Věřím ale, že ani s pozdějšími verzemi by neměly být problémy.


Dotaz:
Rád bych změnil barvu pozadí diagramu tříd na bílou.
Jak to má udělat?

Odpověď:
Při instalaci konfiguračního doplňku se do složky <BlueJ_Home>\lib
nahrál soubor BlueJ.defs.
Na jeho konci najdete příkazy pro nastavení barev
nejrůznějších součástí aplikačního okna.


Dotaz:
Mám problém hned na straně 62 a to ten,
že když chci vytvořit novou instanci obdélníku
tak se mi po stisku pravého tlačítka nezobrazí Vámi popsaný
dialog se seznamem konstruktorů,
ale okno kde je:
Otevřít v editoru, Přeložit, Odstranit.
Jak to udělám, abych z toho dostal Vámi popsané menu konstruktorů?

Odpověď:
Důvodem je, že si čtenář zapomněl nechat třídy nejprve přeložit.
Chcete-li, aby s vámi třída komunikovala,
nesmí mít spodní část svého obdélníku v diagramu tříd šrafovanou.


Dotaz:
V projektu 101a_Tvary nejsou v grafických entitách naprogramované metody
posunVlevo(int vzdalenost) a posunVzhuru(int vzdalenost)
.

Odpověď:
Ty tam opravdu nejsou, ale ale dokumentace těchto metod,
která se při jejich volání zobrazí v dialogovém okně, v němž zadáváte hodnotu parametru,
jasně říká, že při zadání záporné vzdálenosti se vydáte opačným směrem.
Pro realizaci funkce oněch zdánlivě chybějících metod proto stačí
zadávat zápornou hodnotu vzdálenosti, o kterou se má objekt posunout.


Dotaz:
V zadani cvicenia v Lekcii 25, casti 3 je ze 4 nasich tried (Svetlo, Sipka, Semafor, Auto)
mam implementovat metodu getRozmer().
Toto cvicenie sa zacina projekte 125c_12_Spravce a ma koncit ako 125z_12_Spravce.
Nerozumiem tomu co myslite tou ulohou implementovat tu metodu.
Porovnoval som triedy medzi 125c a 125z.
a nenasiel som tam ziadnu priadanu metodu getRozmer().

To iste plati pre IPosuvny alebo INafukovaci, ktore podla textu dalej tiez mali prejst rovnakou zmenou.

Odpověď:
V první části měl pisatel pravdu: opravdu jsem zadal úkol a zapomněl uvést jeho řešení.
Jak je uvedeno v opravách, generátor projektů od verze 1.17.5210_2015-02-28
již vytváří doprovodné programy, v nichž je od konce 25. lekce tato metoda implementována.

V druhé části dotazu se ale pisatel mýlí. Změny v obou interfejsech nastaly,
jenomže jsou zapracovány od projektu 125c_12_Spravce.
Při jeho porovnání s projektem z předchozí lekce byste to odhalili.