logo

Objektovo orientované programovanie v C++

Objektovo orientované programovanie – Ako už názov napovedá, používa v programovaní objekty. Objektovo orientované programovanie sa zameriava na implementáciu entít reálneho sveta, ako je dedičnosť, skrývanie, polymorfizmus atď. Hlavným cieľom OOP je spojiť dáta a funkcie, ktoré s nimi pracujú, aby žiadna iná časť kódu nemala prístup k týmto dátam okrem tejto funkcie.

Existuje niekoľko základných konceptov, ktoré fungujú ako stavebné kamene OOP, t.j.



  1. Trieda
  2. Objekty
  3. Zapuzdrenie
  4. Abstrakcia
  5. Polymorfizmus
  6. Dedičnosť
  7. Dynamická väzba
  8. Odovzdanie správy

Charakteristika objektovo orientovaného programovacieho jazyka

OOPS koncept v C++

unix vs windows

Trieda

Stavebným kameňom C++, ktorý vedie k objektovo orientovanému programovaniu, je trieda. Je to užívateľsky definovaný dátový typ, ktorý obsahuje svoje vlastné dátové členy a členské funkcie, ku ktorým možno pristupovať a používať ich vytvorením inštancie danej triedy. Trieda je ako plán pre objekt. Napríklad: Zvážte triedu automobilov. Môže existovať veľa áut s rôznymi názvami a značkami, ale všetky budú mať spoločné vlastnosti, napríklad všetky budú mať 4 kolesá, rýchlostný limit, dojazd atď. Takže tu je auto trieda a kolesá, rýchlostné limity , a najazdené kilometre sú ich vlastnosťami.

  • Trieda je používateľom definovaný dátový typ, ktorý má dátové členy a členské funkcie.
  • Dátové členy sú dátové premenné a členské funkcie sú funkcie používané na manipuláciu s týmito premennými spoločne, tieto dátové členy a členské funkcie definujú vlastnosti a správanie objektov v triede.
  • Vo vyššie uvedenom príklade triedy Car bude dátovým členom rýchlostný limit, počet najazdených kilometrov atď. a členské funkcie môžu použiť brzdy, zvýšiť rýchlosť atď.

Môžeme povedať, že a Trieda v C++ je plán predstavujúci skupinu objektov, ktoré zdieľajú niektoré spoločné vlastnosti a správanie.



Objekt

Objekt je identifikovateľná entita s určitými vlastnosťami a správaním. Objekt je inštanciou triedy. Keď je definovaná trieda, nie je pridelená žiadna pamäť, ale keď sa vytvorí inštancia (t. j. vytvorí sa objekt), pamäť sa pridelí.

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 zaberajú miesto v pamäti a majú priradenú adresu ako záznam v pascal alebo štruktúra alebo spojenie. Keď je program spustený, objekty interagujú tak, že si navzájom posielajú správy. Každý objekt obsahuje údaje a kód na manipuláciu s údajmi. Objekty môžu interagovať bez toho, aby museli poznať podrobnosti o svojich údajoch alebo kóde, stačí poznať typ prijatej správy a typ odpovede vrátenej objektmi.

Ak sa chcete dozvedieť viac o objektoch a triedach C++, pozrite si tento článok – C++ triedy a objekty



Zapuzdrenie

V normálnych podmienkach je zapuzdrenie definované ako balenie údajov a informácií do jednej jednotky. V objektovo orientovanom programovaní je zapuzdrenie definované ako spojenie dát a funkcií, ktoré s nimi manipulujú. Zoberme si skutočný príklad zapuzdrenia, v spoločnosti existujú rôzne sekcie ako účtovná sekcia, finančná sekcia, predajná sekcia atď. Finančná sekcia spracováva všetky finančné transakcie a vedie záznamy o všetkých údajoch týkajúcich sa financií. Obdobne oddelenie predaja zabezpečuje všetky činnosti súvisiace s predajom a vedie evidenciu všetkých predajov. Teraz môže nastať situácia, keď z nejakého dôvodu úradník z finančného úseku potrebuje všetky údaje o tržbách v konkrétnom mesiaci. V tomto prípade mu nie je umožnený priamy prístup k údajom sekcie predaja. Najprv bude musieť kontaktovať iného úradníka v oddelení predaja a potom ho požiadať o poskytnutie konkrétnych údajov. Toto je zapuzdrenie. Tu sú údaje predajnej sekcie a zamestnanci, ktorí s nimi môžu manipulovať, zabalené pod jednotný názov predajná sekcia.

Zapuzdrenie v C++ s príkladmi

Zapuzdrenie v C++

Zapuzdrenie tiež vedie k abstrakcia údajov alebo skrytie údajov . Použitie zapuzdrenia tiež skryje údaje. Vo vyššie uvedenom príklade sú údaje ktorejkoľvek sekcie, ako je predaj, financie alebo účty, skryté pred akoukoľvek inou sekciou.

Ak sa chcete dozvedieť viac o zapuzdrení, pozrite si tento článok – Zapuzdrenie v C++

Abstrakcia

Abstrakcia údajov je jednou z najdôležitejších a najdôležitejších vlastností objektovo orientovaného programovania v C++. Abstrakcia znamená zobraziť len podstatné informácie a skryť detaily. Abstrakcia údajov sa vzťahuje na poskytovanie iba nevyhnutných informácií o údajoch vonkajšiemu svetu, skrytie podrobností o pozadí alebo implementácie. Uvažujme o skutočnom príklade muža, ktorý riadi auto. Muž vie len to, že stlačenie plynu zvýši rýchlosť auta alebo brzdenie zastaví auto, ale nevie ako sa pri stlačení plynu rýchlosť v skutočnosti zvyšuje, nevie o vnútornom mechanizme auta resp. implementácia akcelerátora, bŕzd atď. do auta. Toto je abstrakcia.

mapa vs
  • Abstrakcia pomocou tried : Abstrakciu môžeme implementovať v C++ pomocou tried. Trieda nám pomáha zoskupovať dátové členy a členské funkcie pomocou dostupných špecifikátorov prístupu. Trieda môže rozhodnúť, ktorý dátový člen bude viditeľný pre vonkajší svet a ktorý nie.
  • Abstrakcia v hlavičkových súboroch : Ďalším typom abstrakcie v C++ môžu byť hlavičkové súbory. Zvážte napríklad metódu pow() prítomnú v hlavičkovom súbore math.h. Kedykoľvek potrebujeme vypočítať mocninu čísla, jednoducho zavoláme funkciu pow() prítomnú v hlavičkovom súbore math.h a čísla odošleme ako argumenty bez toho, aby sme poznali základný algoritmus, podľa ktorého funkcia v skutočnosti počíta silu čísel. .

Ak sa chcete dozvedieť viac o abstrakcii C++, pozrite si tento článok – Abstrakcia v C++

Polymorfizmus

Slovo polymorfizmus znamená mať mnoho podôb. Jednoducho povedané, polymorfizmus môžeme definovať ako schopnosť správy zobraziť sa vo viac ako jednej forme. Osoba môže mať zároveň rôzne vlastnosti. Muž je zároveň otcom, manželom a zamestnancom. Takže tá istá osoba má rôzne správanie v rôznych situáciách. Toto sa nazýva polymorfizmus. Operácia môže v rôznych prípadoch vykazovať rôzne správanie. Správanie závisí od typov údajov použitých v operácii. C++ podporuje preťaženie operátorov a preťaženie funkcií.

  • Preťaženie operátora : Proces, pri ktorom sa operátor v rôznych prípadoch správa rôzne, je známy ako preťaženie operátora.
  • Preťaženie funkcií : Preťažovanie funkcií používa jeden názov funkcie na vykonávanie rôznych typov úloh. Polymorfizmus sa vo veľkej miere používa pri implementácii dedičnosti.

Príklad : Predpokladajme, že musíme napísať funkciu na sčítanie nejakých celých čísel, niekedy sú tam 2 celé čísla a niekedy 3 celé čísla. Môžeme napísať metódu sčítania s rovnakým názvom s rôznymi parametrami, príslušná metóda sa bude volať podľa parametrov.

Polymorfizmus v C++ s príkladom

Polymorfizmus v C++

Ak sa chcete dozvedieť viac o polymorfizme, prečítajte si tento článok – Polymorfizmus v C++

Dedičnosť

Schopnosť triedy odvodiť vlastnosti a charakteristiky z inej triedy sa nazýva Dedičnosť . Dedičnosť je jednou z najdôležitejších vlastností objektovo orientovaného programovania.

  • Podtrieda : Trieda, ktorá zdedí vlastnosti od inej triedy, sa nazýva Sub class alebo Derived Class.
  • Super trieda : Trieda, ktorej vlastnosti sú zdedené podtriedou, sa nazýva Základná trieda alebo Nadtrieda.
  • Opätovná použiteľnosť : Dedičnosť podporuje koncept opätovnej použiteľnosti, t.j. keď chceme vytvoriť novú triedu a už existuje trieda, ktorá obsahuje časť kódu, ktorý chceme, môžeme odvodiť našu novú triedu z existujúcej triedy. Týmto spôsobom znova používame polia a metódy existujúcej triedy.

Príklad : Pes, mačka, krava môžu byť odvodené zo základnej triedy zvierat.

Dedičnosť v C++ s príkladom

Dedičnosť v C++

Ak sa chcete dozvedieť viac o dedičstve, pozrite si tento článok – Dedičnosť v C++

nastaviť v jave

Dynamická väzba

V dynamickej väzbe sa kód, ktorý sa má vykonať ako odpoveď na volanie funkcie, rozhoduje za behu. C++ má virtuálne funkcie na podporu tohto. Pretože dynamická väzba je flexibilná, vyhýba sa nevýhodám statickej väzby, ktorá spájala volanie funkcie a definíciu v čase zostavovania.

Prí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ýkon
Printing the Base class Content Printing the Base class Content>

Ako vidíme, funkcia print() rodičovskej triedy sa volá aj z objektu odvodenej triedy. Na vyriešenie tohto problému používame virtuálne funkcie.

Vyššie uvedený príklad s virtuálnou funkciou:

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ýkon
Printing the Base class Content Printing the Derived class Content>


Odovzdanie správy

Objekty medzi sebou komunikujú odosielaním a prijímaním informácií. Správa pre objekt je žiadosťou o vykonanie procedúry, a preto vyvolá funkciu v prijímajúcom objekte, ktorá generuje požadované výsledky. Odovzdávanie správ zahŕňa zadanie názvu objektu, názvu funkcie a informácií, ktoré sa majú odoslať.

Prí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>


Súvisiace články :