Začínáme programovat v jazyku Java
Naposledy aktualizováno:
2024-01-19
Zpět na přehled knih.
Obsah
Účel a cíl publikace
Tato publikace uvádí čtenáře do světa programování prostřednictvím jazyka Java,
jenž je v současné době nejpoužívanějším jazykem pro tvorbu rozsáhlých programů a aplikací.
Postupně čtenáře seznamuje s jednotlivými konstrukcemi jazyka a přitom se neomezuje pouze na to,
jak navržený program zakódovat, ale učí čtenáře doopravdy programovat.
Nesoustředí se proto na výuku syntaxe jazyka a práce s knihovnami, ale učí,
jak program v daném programovacím jazyce navrhnout. Učí čtenáře, jak má při programování myslet.
Kniha je sice primárně určena začátečníkům, ale ohlasy recenzentů ukázaly,
že v ní najdou poučení i zkušení programátoři.
Kniha vznikla na základě dlouholetých zkušeností autorů nejen s výukou programování na univerzitě,
ale i s výukou na středních školách a vedením doplňujících kurzů pro profesionální programátory.
Autoři v ní uvádějí čtenáře krok za krokem do tajů návrhu programů v jazyce Java a ukazují mu,
jak možnosti této moderní technologie co nejlépe využít a kde si dát naopak pozor na její úskalí.
Přitom je paralelně seznamují se zásadami moderního programování a učí se je naplňovat v praxi.
Soubory ke stažení
Pokud vám nebude ve stažených programech něco fungovat, podívejte se sem,
jestli na podobný problém nenarazil už někdo před vámi,
a jestli proto není k dispozici novější verze.
Verzi poznáte podle data a případně podle jemu předcházejícího čísla verze.
K dispozici jsou následující soubory:
-
67_Prilohy_z1.02.8888_2021-11-26.pdf
Přílohy, které nejsou součástí papírové verze učebnice.
-
67_PGM_v1.02.8888_2021-11-26.zip
Archiv s doprovodnými programy, který obsahuje následující virtuální podsložky.
-
67_INP
Složka se soubory obsahujícími příkazy zadávanými v interaktivním režimu
včetně těch chybných, jejichž zadání vyvolá výjimku.
Každá kapitola zde má svůj vlastní soubor.
-
67_Java
Složka se soubory obsahujícími zdropjové kódy programů zadávanými
v samostatných souborech.
Definované třídy jsou umístěny v balíčcích eu.pedu.b67._XX
,
kde XX
je číslo kapitoly, v níž je daná třída poprvé zmíněna.
-
67_WRD
Složka se soubory obsahujícími výpisy programů z učebnice i s čísly řádků.
Tento soubor slouží k tomu, abyste si mohli výpisy vytisknout,
a položit si vytištěný text vedle knihy či obrazovky,
abyste nemuseli v učebnici neustále listovat při pročítání komentářů
k některým z těchto výpisů.
-
67_LIB
Složka s JAR-soubory používaných knihoven.
-
67_Robot_SRC
Složka se zdrojovými soubory robota Karla (pro zájemce).
-
67_Guess
Složka se zdrojovými soubory i přeloženými soubory jednoduché demonstrační aplikace
vytvářené ve 28. kapitole.
-
BlueJ++_3.1.7.zip
Verze programu BlueJ používaná v učebnici.
Tato verze vznikla úpravou původní verze 3.1.7 a rozšířením jejích možností vytváření a zobrazování
UML diagramů. Tyto možnosti totiž autoři BlueJ v dalších verzích postupně osekávali,
tak jsem se rozhodl využít uvolnění licence a upravit se svými studenty verzi, což je poslední verze,
ve které autoři ještě nezačali podporu UML diagramů osekávat.
Další výhodou naší úpravy je, že chodí pod libovolnou verzí Javy počínaje verzí 9.
Naproti poslední oficiální verze BlueJ chodil v době vydání knihy nejvýše pod verzí 11
a pod verzemi 12–18 už ne.
Po stažení tohoto archivu a rozbalení jeho obsahu spustíte program zadáním příkazu
java -jar XXX/BlueJ++_3.1.7/bluej.jar
kde XXX
zastupuje název složky, do níž jste obsah archivu rozbalili.
BlueJ je podle mne nejlepší nástroj pro rychlý návrh základního UML diagramu ze zdrojového kódu
pro relativně jednoduché projekty obsahující řádově desítky tříd.
Navíc se jedná o nástroj, který je (na rozdíl od ostatních nástrojů s touto funkcionalitou) zdarma.
Doplňkové texty (co se do knihy nevešlo)
Většinou to jsou podrobnější vysvětlení některých pasáží výkladu
doplněná jako reakce na dotazy čtenářů,
kterým některá pasáž nepřipadala dostatečně srozumitelná.
Tak, jak budou postupně přicházet žádosti o upřesnění výkladu,
budou se postupně rozšiřovat i tato upřesňující vysvětlení.
Obsah
Tato sekce je určena pro odpovědi na vaše nejčastější dotazy.
Budete-li mít nějaký dotaz nebo upozornění na chybu, pošlete mi
mail
s předmětem začínajícím 67_JAVA_NZ_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ém při zadávání příkazu z výpisu 5.3 (vytváření nových objektů).
Když zadám příkaz
/open s05a_Karel.jsh
tak mi JShell hlásí chybu. Konkrétně:
File 's05a_Karel.jsh' for '/open' is not found.
Odpověď:
Příčinou neúspěchu je většinou to, že jste JShell spustili v jiné složce, než v té,
v níž máte uložené stažené soubory. To si musíte vždy ohlídat.
Problém je možno řešit několika způsoby:
-
Zadáte absolutní cestu k otevíranému souboru.
Toto řešení je zdánlivě nejjednodušší, ale potřebujete-li postupně načítat
těch skriptů více, tak vás za chvíli začne obtěžovat.
-
Zabezpečíte, aby se JShell spustil ve správné složce.
-
Zadáním příkazu
new File("").getAbsolutePath()
vyrobte string s názvem aktuální složky.
Je-li to ta, v níž je uložený daný soubor, měl by příkaz /open
bez problému proběhnout.
-
Je-li to jiná složka (a to jistě je, protože píšete, že příkaz neproběhl), tak:
-
Zadáním příkazu
/exit
opusťte JShell a vraťte se
ke komunikaci s operačním systémem.
-
Zadáním příkazu
cd cesta_k_cílové_složce
se přesuňte do složky, v níž máte nahrány soubory s doprovodnými programy.
-
V této složce spusťte znovu JShell.
-
Doplníte potřebnou složku do seznamu složek v proměnné
classpath
.
Přitom ale nesmíte zapomenout zadávat celý seznam najednou, tj. např. včetně knihovny Karla.
Domnívám se však, že to asi nebude optimální řešení a nejlepší bude to,
které jsem popsal v předchozím bodě, tj. otevřít JShell ve správné složce.
Dotaz:
Jsem naprostý začátečník a mám obavy, že nejsem na BlueJ připraven.
Nejsem si jistý, jestli mi přechod na BlueJ napomůže k pochopení.
Například, jsem v kapitole 5.4, kde mám vytvořit svět robota Karla.
Uváděné příkazy jsou v JShell a já nevím jak je vložit do BlueJ,
případně jak je pak i spustit.
Odpověď:
Nesnažte se předbíhat. Výhoda JShell tkví v tom, že k tomu,
abyste mohl vytvářet jednoduché funkční programy, nepotřebujete znát řadu věcí,
bez jejichž znalosti standardní program nerozběhnete.
.
Když v 10. kapitole zkompletujeme výklad potřebných základů,
tak pak začneme vytvářet standardní programy.
Ty navíc můžete vytvářet v libovolném vývojovém prostředí, nejen v BlueJ.
BlueJ používám hlavně proto, že je ze všech běžných IDE nejjednodušší,
takže s ním mají naprostí začátečníci nejméně problémů.
Navíc maximálně usnadňuje přepínání mezi diagramem tříd a vyvíjeným programem.
Dotaz:
Poté, co jsem si z internetových diskuzí nastudoval, jsem přišel na to,
že BlueJ 3.1.7 si pravděpodobně nainstaluje openJDK 8, který vzápětí využívá,
nehledě na nainstalované novější verze JDK.
Bohužel pak tato verze BlueJ má problém s překladem vašeho projektu.
Odpověď:
BlueJ 3.1.7 si žádnou knihovnu neinstaluje, ale na druhou stranu nechodí nad Javou 9+.
Proto jsem vám doporučil stáhnout si modifikované BlueJ++_3.1.7,
které chodí na jakoukoliv novější verzí Javy.
V jejích diagramech tříd se sice občas objeví značky na třídách, z jejichž zdrojového kódu je zmatená,
ale vzhledem k tomu, že používá verzi překladače té Javy, nad kterou jste je spustili,
tak všechny korektně napsané programy bez problému přeloží.
Jak jsem ale napsal: používání BlueJ není pro čtenáře povinné.
Můžete používat libovolné IDE, nejlépe takové, s jehož používáním vám někdo pomůže.
Já se v textu zmiňuji o BlueJ pouze proto, že je nejjednodušší, a tím pádem také
pro začátečníky nejsnadněji zvládnutelné.
Errata – opravy odhalených chyb
Sekce je prozatím prázdná