Předmluva ...11 // Předpoklady ...11 // Terminologie ...12 // Typografické konvence ...12 // 1. OOP pro mírně pokročilé ...13 // 2. Dědičnost ...14 // 2.1 Přístupová práva ... 18 // 2.2 Konstruktory ...23 // 2.3 Překrývání metod ...28 // 2.4 Destruktory ...32 // 2.5 Dědičnost v Object Pascalu (Delphi) ...35 // 3. Ukazatele do třídy ...37 // 3.1 Objekty a „obyčejné“ ukazatele ...37 // Ukazatele na data ...37 // Ukazatele na metody ...38 // 3.2 Ukazatele do tříd ...38 // Ukazatele na data ... 38 // Operátory a ...40 // Poznámky ...40 // Ukazatele na metody ... 41 // 3.3 Ukazatele na metody v Object Pascalu ...41 // 4. Časná a pozdní vazba ...43 // 4.1 Je nebo má ...43 // Poznámka ...46 // 4.2 Když samotná dědičnost přestane fungovat ...46 // Abstraktní třídy ...46 // První pokus o program ...47 // Program nefunguje. Proč? ...53 // Cos tím? ...54 // Řešení pomocí třídních ukazatelů v C++ ...57 // 4.3 Virtuální metody ...62 // Deklarace virtuální metody ...62 // 4.4 Nevirtuální metody ...65 // 4.5 Polymorfismus ...65 // Proč nejsou všechny metody virtuální ...65 // Abstraktní a instanční třídy ...65 // Opět grafický editor ...67 // Virtuální destruktory ...69 // Jak to funguje ...70 // 4.6 Cena polymorfismu ...71 // Kdy se pozdní vazba uplatní ...71 // Konstruktory, destruktory a virtuální metody ...72 // 4.7 Delphi: Metody pro ošetření zpráv od Windows ...76 // 5. Příklad: jednoduchý grafický editor ...77 // 5.1 Organizace objektového programu ...77 // 5.2 Zadání ...77 // 5.3 Základní schéma programu ...78 // Uživatelské rozhraní ... 80 // Znakové řetězce ...81 // Ošetření chyb ... 82 // Komunikační kanál ...82 // Výkonná část ...82 // 5.4 Další zpřesňování návrhu ...82 // Třída menu ...83 // Konstruktor ...85 // Třída mys (čti myš) ...87 //
Zvláštní klávesy ...88 // Kanál ...88 // Grafické objekty ...88 // 5.5 Dokončení ...91 // 5.6 A můžeme si kreslit ...98 // Fantazii se meze nekladou ...98 // 6. Vícenásobná dědičnost ...100 // 6.1 Jak je to s vícenásobnou dědičností ...100 // Deklarace ...100 // Význam ...100 // Instance, konstruktory a destruktory ...101 // Přetypování ukazatelů ...101 // Konflikty jmen ...103 // 6.2 Problémy s vícenásobnou dědičností: datové proudy ...105 // 6.3 Virtuální dědění ...106 // Jak vypadá potomek, který má virtuální předky ...106 // Virtuální a nevirtuální předkové ...108 // Konstruktory a destruktory při virtuálním dědění ...109 // 7. Šablony ...112 // 7.1 К čemu to? ...112 // 7.2 Trocha teorie ...115 // Deklarace šablony ...115 // 7.3 Šablony řadových funkcí ...116 // Deklarace ...116 // Instance šablony řadové funkce ...117 // Bezpečnost práce ...120 // ANSI C++: explicitní kvalifikace ...120 // 7.4 Šablony objektových typů a jejich metod ...121 // Deklarace ...121 // Instance šablony objektového typu ...123 // Vložené spřátelené funkce ...126 // 7.5 Šablony v rozsáhlých programech ...126 // Šablony v borlandských překladačích ...127 // Všechno lze zkazit ...127 // 7.6 Šablony v knihovnách ...129 // 7.7 Příklad ...129 // Třídění ...129 // Prvek seznamu ...131 // Seznam ...131 // Iterátor ...132 // 8. Datové proudy v jazyce C++ ...135 // 8.1 Soubory a proudy ...135 // 8.2 Základní informace ...136 // Hlavičkové soubory ...136 // Třída ios ...138 // Další proudové třídy ...139 // Formátování ...144 // Příklady ...146 // Konzolové proudy ...149 // Neformátované vstupy a výstupy ... 151 // 8.3 Vstup a výstup uživatelských typů ...152 // 8.4 Manipulátory ...153 // Manipulátory bez parametrů ...153 // Manipulátory s jedním parametrem ... 154 //
9. Výjimky ...160 // 9.1 O co vlastně jde ...160 // Tolerance vůči chybám ...160 // Výjimka: co to je? ...161 // Chyby v knihovnách ...161 // 9.2 Výjimky v C++ ...163 // První přiblížení ...163 // Syntax výjimek ...164 // Příklad ...166 // Když dojde к výjimce ...168 // Pošli to dál ...168 // Handler ...169 // Výjimky a bloková struktura programu ...171 // Neošetrené a neočekávané výjimky ...175 // Standardní výjimky ...175 // Standardní knihovna ...176 // Cena výjimek ...177 // 9.3 Strukturované výjimky v jazyku С ...178 // První přiblížení ...178 // Přenos informací o výjimce ...179 // Syntax strukturovaných výjimek ... 180 // Příklad ...181 // Jak vznikají strukturované výjimky ...183 // Filtrování výjimek ...184 // Koncovka bloku ...187 // Koncovky a výjimky ...189 // 9.4 Strukturované výjimky a C++ ...193 // 9.5 Výjimky v Delphi ...193 // Vznik výjimky ...193 // Výjimkové třídy ...194 // Jak výjimku zachytit ...196 // Koncovka bloku ...198 // Výjimky v konstruktorech ...199 // 10. Dynamická identifikace typů ...200 // 10.1 Dynamická identifikace typů v C++ ... 200 // Operátor typeid ...200 // typeid vrací typeinfo ...201 // Třída type info ...203 // Na co se RTTI nehodí ...204 // Borlandská rozšíření dynamické identifikace typů ...204 // rtti ...205 // Norma se vyvíjí ...205 // 10.2 Dynamická identifikace typů v Object Pascalu ...206 // 11. Operátory pro bezpečnější přetypování ...208 // 11.1 Čtveřice nových přetypovacích operátorů v C++ ...208 // Proč to? ...208 // Operátor dynamiccast ...209 // Operátor static_cast ...214 // Operátor reinterpretcast ...217 // Operátor constcast ...219 // Со s tím ...220 // 11.2 Nový přetypovací operátor v Object Pascalu ...220 // 12. Prostory jmen ...222 // 12.1 O co vlastně jde ...222 //
12.2 Deklarace prostoru jmen ...223 // Přezdívky prostoru jmen - alias ...225 // Deklarace po částech ...225 // Anonymní prostor jmen ...226 // 12.3 using ...226 // Deklarace using ...227 // Direktiva using ...227 // Prostory jmen a třídy ...228 // 12.4 Vyhledávání operátorů ...229 // 13. Dodatek ...231 // 13.1 _CLASSDEF a makra, která s ním souvisí ...231 // 13.2 O borlandské grafice ...232 // 13.3 O myši a jiných hlodavcích ...234 // Pseudoproměnné ...237 // 13.4 Dlouhý skok ...237 // 13.5 Standardní knihovna jazyka C++ ...239 // Kontejnery a iterátory ...240 // Generické algoritmy ... 242 // Příklad ...243 // Algoritmy pro setříděné kontejnery ...244 // Komplexní čísla ...244 // Řetězce ...245 // Systémové konstanty ...245 // Automatické ukazatele ...246 // 13.6 Přehled novinek v C++ ...247 // Souhrn ...247 // Deklarace v příkazech ...248 // Deklarace třídy ...250 // Datové typy ...252 // Literatura ...254 // Rejstřík ...255