logo

Objektinis programavimas C++ kalba

Objektinis programavimas – kaip rodo pavadinimas, programuodami naudoja objektus. Objektiniu programavimu siekiama programuojant įgyvendinti realaus pasaulio esybes, tokias kaip paveldėjimas, slėpimas, polimorfizmas ir kt. Pagrindinis OOP tikslas yra sujungti duomenis ir su jais veikiančias funkcijas, kad jokia kita kodo dalis negalėtų pasiekti šių duomenų, išskyrus tą funkciją.

Yra keletas pagrindinių sąvokų, kurios veikia kaip OOP sudedamosios dalys, t.y.



  1. Klasė
  2. Objektai
  3. Inkapsuliavimas
  4. Abstrakcija
  5. Polimorfizmas
  6. Paveldėjimas
  7. Dinaminis įrišimas
  8. Pranešimas perduodamas

Objektinės programavimo kalbos charakteristikos

OOPS koncepcija C++

rūšiavimas kortelių python

Klasė

C++ elementas, vedantis į objektinį programavimą, yra klasė. Tai vartotojo apibrėžtas duomenų tipas, turintis savo duomenų narius ir narių funkcijas, kuriuos galima pasiekti ir naudoti sukūrus tos klasės egzempliorių. Klasė yra tarsi objekto planas. Pavyzdžiui: apsvarstykite automobilių klasę. Gali būti daug skirtingų pavadinimų ir markių automobilių, tačiau visi jie turės bendrų savybių, pavyzdžiui, visi turės 4 ratus, greičio apribojimą, ridos diapazoną ir tt Taigi čia automobilis yra klasė, o ratai, greičio apribojimai , o rida yra jų savybės.

  • Klasė yra vartotojo apibrėžtas duomenų tipas, turintis duomenų narius ir narių funkcijas.
  • Duomenų nariai yra duomenų kintamieji, o narių funkcijos yra funkcijos, naudojamos manipuliuoti šiais kintamaisiais kartu. Šie duomenų elementai ir narių funkcijos apibrėžia klasės objektų savybes ir elgesį.
  • Aukščiau pateiktame automobilio klasės pavyzdyje duomenų elementas bus greičio apribojimas, rida ir pan., o nario funkcijos gali stabdyti, padidinti greitį ir pan.

Galime pasakyti, kad a Klasė C++ yra planas, vaizduojantis objektų grupę, kuriai būdingos tam tikros bendros savybės ir elgesys.



Objektas

Objektas yra identifikuojamas subjektas, turintis tam tikrų savybių ir elgesio. Objektas yra klasės pavyzdys. Kai apibrėžiama klasė, atmintis nepaskirstoma, bet kai ji sukuriama (t. y. sukuriamas objektas), atmintis paskirstoma.

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; }>

Objektai užima vietą atmintyje ir turi susietą adresą, pvz., Pascal įrašą, struktūrą ar sąjungą. Kai programa vykdoma, objektai sąveikauja siųsdami pranešimus vieni kitiems. Kiekviename objekte yra duomenys ir kodas, skirtas manipuliuoti duomenimis. Objektai gali sąveikauti nežinant detalių vienas kito duomenų ar kodo, pakanka žinoti priimto pranešimo tipą ir objektų grąžinamo atsakymo tipą.

Norėdami sužinoti daugiau apie C++ objektus ir klases, skaitykite šį straipsnį – C++ klasės ir objektai



Inkapsuliavimas

Įprastomis sąlygomis inkapsuliavimas apibrėžiamas kaip duomenų ir informacijos sujungimas į vieną vienetą. Objektiniame programavime inkapsuliavimas apibrėžiamas kaip duomenų ir jais manipuliuojančių funkcijų susiejimas. Apsvarstykite realų inkapsuliavimo pavyzdį: įmonėje yra įvairių skyrių, tokių kaip sąskaitų skyrius, finansų skyrius, pardavimo skyrius ir tt Finansų skyrius tvarko visas finansines operacijas ir saugo visus su finansais susijusius duomenis. Panašiai pardavimo skyrius tvarko visą su pardavimu susijusią veiklą ir tvarko visų pardavimų įrašus. Dabar gali susidaryti situacija, kai finansų skyriaus pareigūnui dėl kažkokių priežasčių prireikia visų duomenų apie pardavimus konkretų mėnesį. Tokiu atveju jam neleidžiama tiesiogiai prieiti prie pardavimo skyriaus duomenų. Pirmiausia jis turės susisiekti su kitu pardavimo skyriaus pareigūnu ir paprašyti jo pateikti konkrečius duomenis. Štai kas yra kapsuliavimas. Čia pardavimo skyriaus duomenys ir darbuotojai, galintys jais manipuliuoti, yra suvynioti į vieną pavadinimą pardavimų skyrelyje.

Inkapsuliavimas C++ su pavyzdžiais

Inkapsuliavimas C++

Inkapsuliavimas taip pat veda prie duomenų abstrakcija arba duomenų slėpimas . Naudojant inkapsuliavimą, duomenys taip pat paslepiami. Anksčiau pateiktame pavyzdyje bet kurios skilties, pvz., pardavimo, finansų ar sąskaitų, duomenys yra paslėpti nuo bet kurios kitos skilties.

Norėdami sužinoti daugiau apie kapsuliavimą, skaitykite šį straipsnį - Inkapsuliavimas C++

Abstrakcija

Duomenų abstrakcija yra viena iš svarbiausių ir svarbiausių objektinio programavimo C++ kalboje savybių. Abstrakcija reiškia tik esminės informacijos rodymą ir detalių slėpimą. Duomenų abstrakcija reiškia tik esminės informacijos apie duomenis pateikimą išoriniam pasauliui, paslepiant pagrindines detales arba įgyvendinimą. Apsvarstykite realų pavyzdį, kai vyras vairuoja automobilį. Vyras žino tik tai, kad paspaudus akceleratorių padidės automobilio greitis arba nuspaudus stabdžius automobilis sustos, bet nežino, kaip paspaudus akceleratorių greitis iš tikrųjų didėja, nežino apie automobilio vidinį mechanizmą ar akceleratoriaus, stabdžių ir kt. įdiegimas automobilyje. Štai kas yra abstrakcija.

  • Abstrakcija naudojant klases : Abstrakciją galime įdiegti C++ kalboje naudodami klases. Klasė padeda mums sugrupuoti duomenų narius ir narių funkcijas naudojant turimus prieigos specifikatorius. Klasė gali nuspręsti, kuris duomenų narys bus matomas išoriniam pasauliui, o kuris ne.
  • Abstrakcija antraštės failuose : Kitas C++ abstrakcijos tipas gali būti antraštės failai. Pavyzdžiui, apsvarstykite pow() metodą, esantį math.h antraštės faile. Kai reikia apskaičiuoti skaičiaus galią, tiesiog iškviečiame funkciją pow(), esančią math.h antraštės faile, ir perduodame skaičius kaip argumentus, nežinodami pagrindinio algoritmo, pagal kurį funkcija iš tikrųjų apskaičiuoja skaičių galią. .

Norėdami sužinoti daugiau apie C++ abstrakciją, skaitykite šį straipsnį – Abstrakcija C++

Polimorfizmas

Žodis polimorfizmas reiškia turėti daug formų. Paprastais žodžiais tariant, polimorfizmą galime apibrėžti kaip pranešimo gebėjimą rodyti daugiau nei viena forma. Asmuo tuo pačiu metu gali turėti skirtingas savybes. Vyras tuo pačiu metu yra ir tėvas, ir vyras, ir darbuotojas. Taigi tas pats asmuo skirtingose ​​situacijose elgiasi skirtingai. Tai vadinama polimorfizmu. Skirtingais atvejais operacijos elgesys gali skirtis. Elgesys priklauso nuo operacijos metu naudojamų duomenų tipų. C++ palaiko operatoriaus perkrovą ir funkcijų perkrovimą.

  • Operatoriaus perkrova : Procesas, kai operatorius skirtingais atvejais elgiasi skirtingai, yra žinomas kaip operatoriaus perkrova.
  • Funkcijų perkrovimas : Funkcijos perkrovimas – tai vieno funkcijos pavadinimo naudojimas įvairių tipų užduotims atlikti. Polimorfizmas plačiai naudojamas įgyvendinant paveldėjimą.

Pavyzdys : Tarkime, kad turime parašyti funkciją, kad pridėtume keletą sveikųjų skaičių, kartais yra 2 sveikieji skaičiai, o kartais - 3 sveikieji skaičiai. Papildymo metodą galime parašyti tuo pačiu pavadinimu su skirtingais parametrais, atitinkamas metodas bus iškviestas pagal parametrus.

Polimorfizmas C++ kalboje su pavyzdžiu

Polimorfizmas C++ kalboje

nginx

Norėdami sužinoti daugiau apie polimorfizmą, skaitykite šį straipsnį - Polimorfizmas C++ kalboje

Paveldėjimas

Klasės gebėjimas išvesti savybes ir charakteristikas iš kitos klasės vadinamas Paveldėjimas . Paveldėjimas yra viena iš svarbiausių objektinio programavimo savybių.

  • Subklasė : Klasė, kuri paveldi savybes iš kitos klasės, vadinama poklase arba išvestine klase.
  • Super klasė : Klasė, kurios savybes paveldi poklasis, vadinama bazine klase arba superklase.
  • Pakartotinis naudojimas : Paveldėjimas palaiko pakartotinio naudojimo koncepciją, t. y. kai norime sukurti naują klasę ir jau yra klasė, apimanti tam tikrą kodą, kurio mes norime, galime sukurti naują klasę iš esamos klasės. Tai darydami mes pakartotinai naudojame esamos klasės laukus ir metodus.

Pavyzdys : Šuo, katė, karvė gali būti išvestinė gyvūnų bazės klasė.

Paveldėjimas C++ su pavyzdžiu

Paveldėjimas C++

Norėdami sužinoti daugiau apie paveldėjimą, skaitykite šį straipsnį - Paveldėjimas C++

turi kitą java

Dinaminis įrišimas

Dinaminio susiejimo metu kodas, kuris turi būti vykdomas reaguojant į funkcijos iškvietimą, nusprendžiamas vykdymo metu. C++ turi virtualios funkcijos tai paremti. Kadangi dinaminis susiejimas yra lankstus, išvengiama statinio susiejimo, kuris sujungė funkcijos iškvietimą ir apibrėžimą kūrimo metu, trūkumų.

Pavyzdys:

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; }>

Išvestis
Printing the Base class Content Printing the Base class Content>

Kaip matome, pagrindinės klasės funkcija print() iškviečiama net iš išvestinio klasės objekto. Norėdami tai išspręsti, naudojame virtualias funkcijas.

Aukščiau pateiktas pavyzdys su virtualia funkcija:

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>

Išvestis
Printing the Base class Content Printing the Derived class Content>


Pranešimas perduodamas

Objektai bendrauja vienas su kitu siųsdami ir gaudami informaciją. Objekto pranešimas yra užklausa atlikti procedūrą, todėl iškvies funkciją priimančiame objekte, kuri generuoja norimus rezultatus. Pranešimo perdavimas apima objekto pavadinimo, funkcijos pavadinimo ir siunčiamos informacijos nurodymą.

Pavyzdys:

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>


susiję straipsniai :