Další názvový údaj na obalce: vynikající úvod do světa objektově orientovaného programování v jazyku programátorů webu, podrobný výklad základů Javy, doplněný předvedením pokročilých možností, přes 100 fungujících programů s více než 5000 řádky kódu, pro začátečníky i zkušené programátory, vysvětluje aplikaci principů objektově orientovaného programování v Javě
Předmluva ...19 // Úvod ...24 // Java 2 ...22 // Předpoklady ...24 // Studium Javy ...25 // Záměry ...25 // Dokumentace online ...26 // Kapitoly ...27 // Praktická cvičení // Multimediální CD ROM // Zdrojový kód // Standardy, dodržované při vytváření zdrojového kódu ...34 // Verze jazyka Java // Semináře a poradenství ...35 // ... Poznámky k návrhu obálky ...35 // Poděkování // Spolupracovníci v síti Internet ...38 // 1. Úvod do objektů ...39 // 1.1. Postup při zobecňování ...39 // 1.2. Objekt má svoje rozhraní ...41 // 1.3. Ukrytá implementace ...43 // 1.4. Opětné používání implementace ...44 // 1.5. Dědičnost - opětně použití rozhraní ...45 // Vztahy typu je ...versus podobá se ...49 // Zaměnitelné objekty a polymorfizmus ...50 // 1.6. Abstraktní bázové třídy a rozhraní ...54 // 1.7. Obor platnosti a životnost objektu ...54 // Kolekce a jejich procházení // Hierarchie s jedním kořenovým objektem ...57 // Knihovny kolekcí a podpora snadného používání kolekcí ...58 // Přetypování směrem dolů versus obecné šablony ...58 // Dilema hospodaření: kdo by měl uklidit? ...59 // Sběrače neplatných objektů versus efektivita a pružnost programového kódu ...59 // 1.8. Ošetření výjimek: zacházení s chybami ...60 // 1.9. Multithreading ...61 // 1.10. Trvalé objekty (persistence) ...62 // 1.11. Java a Internet ...62 // Co je to síť WWW? ...no // Architektura klient/server ...63 // Síť WWW jako obří server ...63 // Programování na straně klienta ...64 // Doplňky ...65 // Skriptovací jazyky ...66 // Java ...66 // ActiveX ...67 // Zabezpečení ...68 // Internet versus intranet ...69 // Programování na straně serveru ...70 // Samostatná aréna: aplikace ...70 // 1.12. Analýza a návrh ...71 // Fáze 0: Vytvořte si plán ...73 // Fáze 1: Co vytváříte? ...73 //
Fáze 2: Jak budeme své řešení tvořit? ...76 // Pět vývojových stupňů návrhu objektů ...78 // Metodické pokyny pro projektování objektů ...79 // Fáze 3: Sestavení jádra ...80 // Fáze 4: Procházení případů užití ...80 // Fáze 5: Evoluce ...81 // Plánovat se vyplatí ...82 // 1.13. Extrémní programování ...83 // Nejdříve napiš test ...83 // Programování ve dvojicích ...84 // 1.14. V čem vězí úspěch Javy ...85 // Snadnější vyjadřování a porozumění systémům ...85 // Maximální využití knihoven ...85 // Ošetřování chyb ...86 // Programování ve velkém ...86 // 1.15. Strategie přechodu ...86 // Metodické pokyny ...87 // Překážky ze strany vedení ...88 // Počáteční náklady ...88 // Otázky výkonu ...89 // Běžné chyby doby návrhu ...89 // 1.16. Java versus C++? ...90 // 1.17. Shrnutí ...91 // 2. Všechno je objekt ...93 // 2.1. S objekty se manipuluje pomocí odkazů ...93 // 2.2. Všechny objekty musíte vytvořit ...94 // Kde je úložiště ...95 // Zvláštní případ: primitivní typy ...96 // Pole v Jávě ...97 // 2.3. Už nikdy nemusíte mazat objekty ...98 // Obor platnosti ...98 // Obor platnosti objektů ...99 // 2.4. Vytváření nových datových typů: třída ...99 // Datové položky (fields) a metody ...100 // Implicitní hodnoty primitivních datových členů ...101 // 2.5. Metody, argumenty a návratové hodnoty ...102 // Seznam argumentů ...102 // 2.6. Vytvoření programu v jazyce Java ...104 // Viditelnost názvu ...104 // Používání ostatních komponent ...104 // Klíčové slovo static ...105 // 2.7. Váš první program v jazyce Java ...107 // Překlad a spouštění ...108 // 2.8. Komentáře a vložená dokumentace ...109 // Poznámková dokumentace ...110 // Syntaxe // Vložený HTML // @see: odkazy na ostatní třídy ...112 //
Značky v dokumentaci třídy ...112 // Značky dokumentace proměnných ...113 // Značky dokumentace metod ...113 // Příklad dokumentace ...114 // 2.9. Styl zápisu kódu // 2.10. Shrnutí // 2.11. Cvičení // 3. Řízení toku programu ...117 // 3.1. Používání operátorů jazyka Java ...117 // Priorita // Přiřazení // Přezdíváni při volání metod ...119 // Matematické operátory ...120 // Zkrácené vyhodnocování ...126 // Časté chyby při používání operátorů ...133 // Přehled operátorů // 3.2. Řízení běhu programu ...147 // true a false // Cykly ...IIl49 // 3.3. Shrnutí // 3.4. Cvičení ...161 // 4. Inicializace a úklid ...162 // 4.1. Zaručená inicializace pomocí konstruktoru ...162 // 4.2. Přetěžování metod ...164 // Rozlišování přetížených metod ...166 // Přetěžování s primitivními datovými typy ...166 // Přetěžování a návratové hodnoty ...170 // Implicitní konstruktéry ...170 // Klíčové slovo this ...171 // Volání konstruktorů z konstruktorů ...173 // Význam klíčového slova static ...174 // 4.3. Úklid: finalizace a shromažďování neplatných objektů ...174 // ? čemu je vlastně metoda finalized dobrá? ...176 // Musíte si po sobě uklidit ...176 // Pozůstalostní podmínky ...180 // Jak funguje sběrač neplatných objektů ...181 // 4.4. Inicializace datových složek ...184 // Stanovení inicializace ...185 // Inicializace pomocí konstruktoru ...187 // Pořadí inicializace ...187 // Inicializace statických datových členů ...188 // Explicitní inicializace statického členu ...191 // Inicializace nestatické instance ...192 // 4.5. Inicializace pole ...193 // Vícerozměrná pole ...197 // 4.6. Shrnutí ...200 // 4.7. Cvičení ...200 // 5. Ukrývání implementace // 5.1. package: knihovní jednotka // Vytváření balíčků s jedinečnými názvy //
Konflikty // Knihovna vlastních nástrojů // Používání importu ke změně chování // Námitky proti balíčkům // 5.2. Specifikátory přístupu v jazyce Java. // Přátelský // public: přístup pro rozhraní // Implicitní balíček // private: ruce pryč! // protected: určitý druh přátelského členu // 5.3. Rozhraní a implementace // 5.4. Přístup ke třídám // 5.5. Shrnutí // 5.6. Cvičení // 6. Opětné použití tříd // 6.1. Syntaxe skládání // 6.2. Syntaxe dědičnosti // Inicializace bázové třídy // Konstruktory s argumenty // Zachyceni výjimek implicitního konstruktoru // 6.3. Kombinování mechanismů skládání a dědičnosti // Záruky náležitého úklidu // Pořadí při shromažďování neplatných objektů // Ukrývání názvů // 6.4. Volba mezi skládáním a dědičností // 6.5. Klíčové slovo protected // 6.6. Vývoj po částech // 6.7. Přetypování na předka // Proč se říká „přetypování směrem nahoru"? // Ještě jednou o skládání ve vztahu ? dědičnosti // 6.8. Klíčové slovo final // Konstantní data // Prázdné konstanty // Konstantní’argumenty // Konečné metody // Konečné třídy // Opatrnost při používání klíčového slova final // 6.9. Inicializace a zavádění třídy // Inicializace a dědičnost // 6.10. Shrnutí // 6.11. Cvičení // 7. Polymorfizmus čili mnohotvárnost // 7.1. Ještě jednou o konverzi na obecnější datový typ // Jak zapomenout na typ objektu // 7.2. Malý úskok // Vazby volání metod // ... // ... // 9.2. Úvod do kontejnerů ...356 // Tisk obsahu kontejneru ...357 // Zaplnění kontejneru ...358 // 9.3. Nevýhoda kontejneru: neznámý typ ...364 // Někdy to však stejně funguje ...366 // Vytvoření typově zaměřeného kontejneru ArrayList ...368 // Parametrizované typy ...369 // 9.4. Iterátoty ...369 //
Nezamýšlená rekurze ...371 // 9.5. Taxonomie neboli systematika kontejnerů ...372 // 9.6. Co kolekce umějí ...375 // 9.7. Co umí rozhraní List ...378 // Zřetězený seznam jako zásobník ...381 // Zřetězený seznam jako fronta ...382 // 9.8. Co umí rozhraní Set ...383 // Rozhraní SortedSet ...386 // 9.9. Co umí rozhraní Map ...386 // Rozhraní SortedMap ...390 // Hešování a hešový kód ...391 // Význam metody hashCode() ...393 // Různé faktory ovlivňující výkon struktury HashMap ...398 // Překrytí metody hashCodeQ ...398 // 9.10. Ukládání odkazů ...401 // Struktura WeakHashMap ...403 // 9.11. Ještě jednou iterátory ...404 // 9.12. Volba implementace ...405 // Volba druhu seznamu ...406 // Volba mezi kontejnery typu Set ...409 // Volba mezi typy map ...411 // 9.13. Řazení a prohledávání seznamů ...413 // 9.14. Nástroje ...414 // Vytváření neměnných kolekcí a map ...415 // Synchronizace kolekcí a map ...416 // 9.15. Rychlé selhání ...417 // 9.16. Nepodporované operace ...418 // 9.17. Kontejnery jazyka Java verze 1.1 a 1.0 ...420 // Třídy Vector a Enumeration ...420 // Třída Hashtable ...421 // Třída Stack ...421 // Třída BitSet ...422 // 9.18. Shrnutí ...424 // 9.19. Cvičení ...424 // Rejstřík ...429