Objektově orientované programování (OOP) je paradigma v programování, které se zaměřuje na organizaci a strukturu kódu pomocí konceptů jako jsou třídy, objekty, dědičnost, zapouzdření a polymorfismus.
Hlavním cílem OOP je svázat dohromady data a funkce, které s nimi pracují, tak, aby k těmto datům nemohla přistupovat žádná jiná část kódu kromě dané funkce.
Třída: Třída je šablona nebo předloha pro vytváření objektů. Definuje atributy (datové členy) a metody (funkce) společné pro objekty této třídy. Například třída "Auto" by mohla mít atributy jako "barva", "model" a metody jako "startMotor" nebo "zastavMotor".
Objekt: Objekt je instance třídy. Je to konkrétní reprezentace dané třídy se všemi atributy a metodami. Například můžeme vytvořit objekt "BMW" ze třídy "Auto".
Atribut (datový člen): Atribut je proměnná definovaná uvnitř třídy, která reprezentuje charakteristiku objektu této třídy. Každý objekt má své vlastní hodnoty atributů.
Metoda (členská funkce): Metoda je funkce definovaná uvnitř třídy, která reprezentuje akce, které může objekt provádět. Metody pracují s atributy objektu a mohou provádět různé operace.
Zapouzdření: Zapouzdření znamená skrýt interní implementaci třídy před vnějším světem a poskytnout veřejně dostupné rozhraní pro komunikaci s třídou. To se dělá pomocí veřejných, chráněných a privátních členů třídy.
Dědičnost: Dědičnost umožňuje vytvářet nové třídy na základě existujících tříd. Třída potomek (podtřída) zdědí atributy a metody třídy rodiče (nadtřídy). To umožňuje znovupoužití kódu a strukturování tříd hierarchicky.
Polymorfismus: Polymorfismus umožňuje používat jedno rozhraní (např. metodu) pro různé typy tříd. To znamená, že můžeme volat stejnou metodu na různých typech objektů a provést různé implementace.
Pokud je tělo metody krátké, můžeme jej definovat i uvnitř definice třídy,
jinak je vhodné tělo definovat mimo třídu dále v programu.
Objekt = instance třídy
Konstruktor je metoda, která se vždy automaticky volá na začátku života proměnné třídy (objektu) – ihned po jejím vytvoření.
Deklarace proměnné představuje vlastně volání konstruktoru.
Používá se k inicializaci datových položek objektu.
Defaultní konstuktor:
Konstruktor s parametrem:
Příklad:
Výstup:
Zavolan defaultni konstruktor.
Vzniklo pole.
Zavolan konstruktor s parametrem.
Vzniklo pole.
Destruktor je metoda třídy, která je automaticky vyvolána vždy, když má být objekt zničen. To znamená, že destruktor je poslední funkce, která bude zavolána před zničením objektu.
Destruktor je také speciální členská funkce jako konstruktor. Destruktor zničí objekty třídy vytvořené konstruktorem.
Destruktor má stejné jméno jako jejich název třídy, před kterým je ještě symbol tildy (~).
Není možné definovat více než jeden destruktor.
Destruktor nemá žádný argument ani nevrací žádnou hodnotu.
Je automaticky zavolán, když se objekt dostane mimo "rozsah působnosti" (např. pokud je objekt vytvořen jako lokální proměnná ve funkci, tak po provedení celého těla funkce, je zavolán destruktor objektu).
Destruktor uvolňuje paměťový prostor obsazený objekty vytvořenými konstruktorem.
V destruktoru jsou objekty zničeny v opačném pořadí než při vytvoření objektu.
Zde je třeba upozornit na to, že pokud je objekt vytvořen pomocí new nebo konstruktor pomocí new alokuje paměť, která se nachází v paměti haldy nebo ve volném úložišti, destruktor by měl k uvolnění paměti použít delete.