C Vývojové triedy a dedičstvo
Všetko, čo ste sa dozvedeli v predchádzajúcich tutoriáloch, bolo už samozrejme súčasťou programovacieho jazyka C ++. Napriek tomu vývoj programu C ++ vyzerá zvyčajne inak, ako ste to doteraz videli v príkladoch.

Doteraz ste poznali veľkú časť základnej slovnej zásoby C ++ a aplikovali ste ju elementárnym spôsobom. V praxi sa programy C ++ zvyčajne skladajú predovšetkým z tried. Vývojári sa zameriavajú na vytváranie tried prispôsobených konkrétnym potrebám danej úlohy. Po vytvorení tried sa použijú ako dátové typy na definovanie premenných. Tieto premenné sa nazývajú objekty a potom sa používajú v rámci programu.
Potom, čo sme vytvorili nový, prázdny projekt s main.cpp, ako vždy, vytvoríme hlavičkový súbor s názvom class.
Trieda je deklarovaná iba v hlavičkovom súbore. Kompilátor teda vie, že neskôr bude existovať trieda zvaná závodné autá. Kľúčové slovo public znamená, že to, čo nasleduje ďalej, je prístupné zvonku. Súkromné na druhej strane znamená, že kód uvedený nižšie je možné volať iba v samotnej triede. Stále existuje ochrana, ktorá však zohráva iba úlohu v dedičstve. Pre triedu samotnú je chránený ekvivalent súkromného. V príklade je definovaná celočíselná premenná kmh. Malo by sa to čítať zvonku pomocou metódy getra (int speed (void);). Metódy rennwagen (); a závodné auto (int kmh); sú 2 konštruktéri triedy. Tu bol konštruktor preťažený ako pri funkciách. V závislosti od parametrov, s ktorými je inštancia inštancie, kompilátor rozhodne, ktoré z týchto dvoch sa majú volať. Konštruktér závodné auto (int kmh); nielen naštartuje vozík, ale priamo stlačí pedál a zrýchli na 200 km/h. Deštruktor
závodné auto(); sa volá, keď je inštancia zničená programom delete alebo je program ukončený. Pri metódach neplatí zrýchlenie (int kmh);, neplatné brzdy (neplatné); a int rýchlosť (neplatnosť); platia rovnaké pravidlá ako pre bežné funkcie. Ďalej vytvoríme súbor klasse.cpp v časti Zdrojové súbory. Tu prichádza na rad samotný kód triedy.
Najskôr je definovaný konštruktor rennwagen: rennwagen () <>. Pretože vždy vracia objekt (menovite seba), nie je pred ním umiestnený žiadny dátový typ. V konštruktore je interná premenná kmh adresovaná kľúčovým slovom this a nastaveným na 0. Toto je vždy ukazovateľ na vašu vlastnú triedu a k premenným a metódam je možné v rámci triedy pristupovať. Na konzole sa tiež zobrazí text.
Potom je definovaný deštruktor triedy. Spoznáte to podľa toho, že má úplne rovnaké meno ako konštruktor, s tým rozdielom, že je jedna vlnovka
stojí vpredu. Musí byť prítomný, iba ak je tiež v deklarácii hlavičky. Pred destructur nie je umiestnený žiadny dátový typ. V tomto prípade je premenná kmh nastavená na 0.
Ostatné metódy by mali byť samozrejmé a mali by sa na ne vzťahovať pravidlá pre funkcie.
Ďalej musíme prispôsobiť main.cpp.
Tu je dôležité, aby bol zahrnutý hlavičkový súbor klasse.h. Ak toto zabudnete, kompilátor nemôže nájsť triedu deklarovanú v súbore. Pri vytváraní inštancie triedy máme teraz k dispozícii 2 konštruktory. V príklade bol volaný konštruktor rennwagen (). Týmto sa košík iba spustí. Druhý konštruktér sa naopak javí ako „na úteku“, pretože naštartuje motor a akceleruje priamo na 199 km/h. Po vytvorení inštancie triedy máme v premennej Bmw objekt triedy závodných automobilov. Premenné triedy (nazývané vlastnosti) a metódy sú teraz prístupné cez Bmw, za ktorým nasleduje bodka (ak sú premenné alebo metódy definované ako verejné). Bmw.kmh nie je povolené mimo triedy, pretože bolo vyhlásené za súkromné.
Samozrejme je možné použiť aj ukazovateľ.
Triedne dedičstvo
Metódy a premenné (vlastnosti) tried možno preniesť (zdediť) do iných tried. Vo vyššie uvedenom príklade bolo vytvorené triedne závodné auto. Patria sem metódy ako akcelerácia (), brzda () a rýchlosť (). V zásade tieto metódy zapadajú do každého automobilu, a preto môže byť trieda použitá ako druh základnej triedy.
V nasledujúcom príklade vytvoríme nové triedy caprio, ktoré zdedí metódy rennwagen a ktoré má malé špeciálne vybavenie.
Nasledujúci príklad ukazuje, ako to funguje. Najprv však musíte vytvoriť hlavičkový súbor s názvom vererbung.ha nový zdrojový súbor (vererbung.cpp).
Trieda caprio je vyhlásená za triedu caprio. The : verejné závodné auto znamená, že trieda caprio dedí všetky metódy a premenné (vlastnosti) z triedy závodných automobilov. Predpokladom je samozrejme to, aby metódy a premenné (vlastnosti), ktoré sú v závodných automobiloch a majú sa používať v capriu, boli verejné alebo chránené. V samotnej triede caprio deklarujeme 2 konštruktory a metódu verdeck () v súbore cpp.
Zaujímavý je konštruktor caprio (int kmh). Predtým sme v triede závodných automobilov preťažovali normálneho konštruktéra aj závodnými autami (int kmh). Bolo by teda výhodou, keby sa preťažený konštruktor caprio (int kmh) zavolal tak, že by sa potom nenačítal štandardný nadradený konštruktor, ale parent (int kmh). Aby bolo niečo také možné, musí byť v hlavičkovom súbore definovaný zodpovedajúci konštruktor: caprio (int kmh): závodné auto (kmh)
Konštruktor nadradenej triedy, ktorá sa má volať, vrátane požadovaných parametrov, je jednoducho uvedený za dvojbodkou a pred telom funkcie.
Vo vererbung.cpp je definovaná iba metóda verdeck (), inak máme iba konštruktory a tie sú už definované.
Pretože teraz máme novú triedu, musíme samozrejme zmeniť aj kód main.cpp.
Po vytvorení inštancie novej triedy sa vždy najskôr vykoná materský konštruktér závodných automobilov, pretože od nej je odvodená trieda caprio. Potom sa zavolá konštruktér caprio, ktorý následne zavolá metódu verdeck ().
Reťazové volanie metódy
Kľúčové slovo toto je vlastný ukazovateľ triedy. Tento ukazovateľ možno tiež definovať ako návratový typ. To znamená, že metódy možno nazvať priamo prepojené. Tu je samostatný príklad, ktorý nemá nič spoločné so zvyškom stránky:
S definičnou triedou & rCall (); vráti sa vlastný objekt. Ak metóda vráti svoj vlastný objekt, k inej metóde je možné pristupovať priamo prostredníctvom operátora výberu komponentu (v tomto prípade bodka). Metódy však musia byť definované ako verejné.
S definičnou triedou * pCall (); vráti sa aj vlastný objekt, ale ako ukazovateľ. K inej metóde je možné pristupovať priamo aj prostredníctvom operátora výberu komponentov (v tomto prípade šípky ->). Metódy musia byť opäť verejné. Osobne si myslím, že variant -> je krajší, pretože PHP som vyvíjal 10 rokov predtým.:)