Objektově orientované programování – Jak již název napovídá, používá v programování objekty. Objektově orientované programování si klade za cíl implementovat do programování entity reálného světa, jako je dědičnost, skrývání, polymorfismus atd. Hlavním cílem OOP je spojit data a funkce, které s nimi pracují, tak, aby k těmto datům neměla přístup žádná jiná část kódu kromě této funkce.
Existuje několik základních konceptů, které fungují jako stavební kameny OOP, tj.
- Třída
- Objekty
- Zapouzdření
- Abstrakce
- Polymorfismus
- Dědictví
- Dynamická vazba
- Předávání zpráv
Charakteristika objektově orientovaného programovacího jazyka
co je podání adresáře
Třída
Stavebním kamenem C++, který vede k objektově orientovanému programování, je třída. Je to uživatelsky definovaný datový typ, který obsahuje své vlastní datové členy a členské funkce, ke kterým lze přistupovat a používat je vytvořením instance dané třídy. Třída je jako plán pro objekt. Například: Zvažte třídu automobilů. Může existovat mnoho aut s různými jmény a značkami, ale všechna budou sdílet některé společné vlastnosti, jako například všechna budou mít 4 kola, rychlostní limit, dojezd atd. Takže zde je auto třída a kola, rychlostní limity , a ujeté kilometry jsou jejich vlastnosti.
- Třída je uživatelsky definovaný datový typ, který má datové členy a členské funkce.
- Datové členy jsou datové proměnné a členské funkce jsou funkce používané ke společné manipulaci s těmito proměnnými. Tyto datové členy a členské funkce definují vlastnosti a chování objektů ve třídě.
- Ve výše uvedeném příkladu třídy Car bude datovým členem rychlostní limit, ujeté kilometry atd. a funkce členů mohou použít brzdy, zvýšit rychlost atd.
Můžeme říci, že a Třída v C++ je plán představující skupinu objektů, které sdílejí některé společné vlastnosti a chování.
Objekt
Objekt je identifikovatelná entita s určitými vlastnostmi a chováním. Objekt je instancí třídy. Když je definována třída, není alokována žádná paměť, ale když je vytvořena instance (tj. je vytvořen objekt), paměť je alokována.
C++ // C++ Program to show the syntax/working of Objects as a // part of Object Oriented PProgramming #include using namespace std; class person { char name[20]; int id; public: void getdetails() {} }; int main() { person p1; // p1 is a object return 0; }> Objekty zabírají místo v paměti a mají přiřazenou adresu, jako je záznam v pascalu nebo struktura nebo spojení. Když je program spuštěn, objekty interagují tak, že si navzájem posílají zprávy. Každý objekt obsahuje data a kód pro manipulaci s daty. Objekty mohou interagovat, aniž by museli znát podrobnosti o svých datech nebo kódu, stačí znát typ přijaté zprávy a typ odezvy vrácené objekty.
Další informace o objektech a třídách C++ naleznete v tomto článku – C++ třídy a objekty
Zapouzdření
Normálně je zapouzdření definováno jako zabalení dat a informací do jedné jednotky. V objektově orientovaném programování je zapouzdření definováno jako spojení dat a funkcí, které s nimi manipulují. Vezměme si skutečný příklad zapouzdření, ve společnosti existují různé sekce, jako je účetní sekce, finanční sekce, prodejní sekce atd. Finanční sekce zpracovává všechny finanční transakce a vede záznamy o všech datech souvisejících s financemi. Obdobně úsek prodeje zajišťuje veškeré činnosti spojené s prodejem a vede evidenci všech prodejů. Nyní může nastat situace, kdy z nějakého důvodu potřebuje úředník z finančního úseku všechna data o tržbách v konkrétním měsíci. V tomto případě mu není umožněn přímý přístup k údajům prodejní sekce. Nejprve bude muset kontaktovat jiného pracovníka v prodejní sekci a poté jej požádat o poskytnutí konkrétních údajů. To je to, co je zapouzdření. Zde jsou data prodejní sekce a zaměstnanci, kteří s nimi mohou manipulovat, zabalena pod jednotný název prodejní sekce.

Zapouzdření v C++
Zapouzdření také vede k abstrakce dat nebo skrývání dat . Použití zapouzdření také skryje data. Ve výše uvedeném příkladu jsou data kterékoli ze sekcí, jako je prodej, finance nebo účty, skryta před jakoukoli jinou sekcí.
Chcete-li se dozvědět více o zapouzdření, přečtěte si tento článek – Zapouzdření v C++
velbloudí krajta
Abstrakce
Abstrakce dat je jednou z nejdůležitějších a nejdůležitějších vlastností objektově orientovaného programování v C++. Abstrakce znamená zobrazení pouze podstatných informací a skrytí detailů. Abstrakce dat se týká poskytování pouze nezbytných informací o datech vnějšímu světu, skrývání podrobností o pozadí nebo implementace. Vezměme si příklad ze skutečného života muže, který řídí auto. Muž pouze ví, že sešlápnutím plynu se zvýší rychlost auta nebo sešlápnutím brzd se auto zastaví, ale neví, jak se při sešlápnutí plynu vlastně rychlost zvyšuje, neví o vnitřním mechanismu auta, resp. implementace akcelerátoru, brzd atd. v autě. Toto je abstrakce.
- Abstrakce pomocí tříd : Abstrakce můžeme implementovat v C++ pomocí tříd. Třída nám pomáhá seskupit datové členy a členské funkce pomocí dostupných specifikátorů přístupu. Třída může rozhodnout, který datový člen bude viditelný pro vnější svět a který ne.
- Abstrakce v záhlaví souborů : Dalším typem abstrakce v C++ mohou být hlavičkové soubory. Vezměme si například metodu pow() obsaženou v záhlaví souboru math.h. Kdykoli potřebujeme vypočítat mocninu čísla, jednoduše zavoláme funkci pow() přítomnou v hlavičkovém souboru math.h a předáme čísla jako argumenty, aniž bychom znali základní algoritmus, podle kterého funkce ve skutečnosti mocninu čísel vypočítává. .
Chcete-li se dozvědět více o abstrakci C++, přečtěte si tento článek – Abstrakce v C++
Polymorfismus
Slovo polymorfismus znamená mít mnoho podob. Jednoduše řečeno, můžeme polymorfismus definovat jako schopnost zprávy zobrazovat se ve více než jedné formě. Člověk může mít zároveň různé vlastnosti. Muž je zároveň otcem, manželem a zaměstnancem. Stejná osoba se tedy v různých situacích chová jinak. Tomu se říká polymorfismus. Operace může v různých případech vykazovat různé chování. Chování závisí na typech dat použitých v operaci. C++ podporuje přetěžování operátorů a přetěžování funkcí.
- Přetížení operátora : Proces přimět operátora, aby projevoval různé chování v různých případech, je známý jako přetěžování operátora.
- Přetížení funkcí : Přetěžování funkcí je použití jediného názvu funkce k provádění různých typů úloh. Polymorfismus je široce používán při implementaci dědičnosti.
Příklad : Předpokládejme, že musíme napsat funkci pro přidání několika celých čísel, někdy jsou 2 celá čísla a někdy 3 celá čísla. Můžeme napsat Addition Method se stejným názvem s různými parametry, příslušná metoda bude volána podle parametrů.

Polymorfismus v C++
Chcete-li se dozvědět více o polymorfismu, přečtěte si tento článek – Polymorfismus v C++
Dědictví
Schopnost třídy odvozovat vlastnosti a charakteristiky z jiné třídy se nazývá Dědictví . Dědičnost je jednou z nejdůležitějších vlastností objektově orientovaného programování.
- Podtřída : Třída, která dědí vlastnosti z jiné třídy, se nazývá Sub class nebo Derived Class.
- Super třída : Třída, jejíž vlastnosti jsou zděděny podtřídou, se nazývá Základní třída nebo Nadtřída.
- Znovupoužitelnost : Dědičnost podporuje koncept opětovné použitelnosti, tj. když chceme vytvořit novou třídu a již existuje třída, která obsahuje část kódu, který chceme, můžeme naši novou třídu odvodit ze stávající třídy. Tímto způsobem znovu používáme pole a metody existující třídy.
Příklad : Pes, kočka, kráva mohou být odvozené třídy základní třídy zvířat.

Dědičnost v C++
Chcete-li se dozvědět více o dědičnosti, přečtěte si tento článek – Dědičnost v C++
nastavit v Javě
Dynamická vazba
V dynamické vazbě se o kódu, který se má provést v reakci na volání funkce, rozhoduje za běhu. C++ má virtuální funkce toto podpořit. Protože je dynamická vazba flexibilní, vyhýbá se nevýhodám statické vazby, která spojovala volání funkce a definici v době sestavení.
Příklad:
C++ // C++ Program to Demonstrate the Concept of Dynamic binding // with the help of virtual function #include using namespace std; class GFG { public: void call_Function() // function that call print { print(); } void print() // the display function { cout << 'Printing the Base class Content' << endl; } }; class GFG2 : public GFG // GFG2 inherit a publicly { public: void print() // GFG2's display { cout << 'Printing the Derived class Content' << endl; } }; int main() { GFG geeksforgeeks; // Creating GFG's object geeksforgeeks.call_Function(); // Calling call_Function GFG2 geeksforgeeks2; // creating GFG2 object geeksforgeeks2.call_Function(); // calling call_Function // for GFG2 object return 0; }> Výstup
Printing the Base class Content Printing the Base class Content>
Jak vidíme, funkce print() nadřazené třídy je volána i z objektu odvozené třídy. K vyřešení tohoto problému používáme virtuální funkce.
Výše uvedený příklad s virtuální funkcí:
C++ #include using namespace std; class GFG { public: void call_Function() // function that call print { print(); } virtual void print() // using 'virtual' for the display function { cout << 'Printing the Base class Content' << endl; } }; class GFG2 : public GFG // GFG2 inherit a publicly { public: void print() // GFG2's display { cout << 'Printing the Derived class Content' << endl; } }; int main() { GFG geeksforgeeks; // Creating GFG's object geeksforgeeks.call_Function(); // Calling call_Function GFG2 geeksforgeeks2; // creating GFG2 object geeksforgeeks2.call_Function(); // calling call_Function // for GFG2 object return 0; } //this code is contributed by Md Nizamuddin> Výstup
Printing the Base class Content Printing the Derived class Content>
Předávání zpráv
Objekty spolu komunikují odesíláním a přijímáním informací. Zpráva pro objekt je požadavek na provedení procedury, a proto vyvolá funkci v přijímajícím objektu, která generuje požadované výsledky. Předávání zpráv zahrnuje zadání názvu objektu, názvu funkce a informací, které mají být odeslány.
Příklad:
C++ #include using namespace std; // Define a Car class with a method to display its speed class Car { public: void displaySpeed(int speed) { cout << 'The car is moving at ' << speed << ' km/h.' << endl; } }; int main() { // Create a Car object named myCar Car myCar; // Send a message to myCar to execute the displaySpeed method int currentSpeed = 100; myCar.displaySpeed(currentSpeed); return 0; } //this code is contributed by Md Nizamuddin>
Související články :
- Třídy a objekty
- Dědictví
- Modifikátory přístupu
- Abstrakce