logo

Objektno usmerjeno programiranje v C++

Objektno usmerjeno programiranje – kot že ime pove, uporablja objekte pri programiranju. Cilj objektno usmerjenega programiranja je v programiranje implementirati entitete iz resničnega sveta, kot so dedovanje, skrivanje, polimorfizem itd. Glavni cilj OOP je povezati podatke in funkcije, ki z njimi delujejo, tako da noben drug del kode ne more dostopati do teh podatkov, razen te funkcije.

Obstaja nekaj osnovnih konceptov, ki delujejo kot gradniki OOP-jev, tj.



  1. Razred
  2. Predmeti
  3. Enkapsulacija
  4. Abstrakcija
  5. Polimorfizem
  6. Dedovanje
  7. Dinamična vezava
  8. Posredovanje sporočil

Značilnosti objektno orientiranega programskega jezika

OOPS Koncept v C++

vrsta tipkopisnega datuma

Razred

Gradnik C++, ki vodi v objektno usmerjeno programiranje, je razred. Je uporabniško definiran podatkovni tip, ki vsebuje lastne podatkovne člane in članske funkcije, do katerih je mogoče dostopati in jih uporabljati z ustvarjanjem primerka tega razreda. Razred je kot načrt za predmet. Na primer: Razmislite o razredu avtomobilov. Morda je veliko avtomobilov z različnimi imeni in blagovnimi znamkami, vendar bodo vsi imeli nekaj skupnih lastnosti, kot so vsi bodo imeli 4 kolesa, omejitev hitrosti, doseg itd. Tukaj je torej avto razred, kolesa pa omejitve hitrosti , in kilometrina sta njihovi lastnosti.

  • Razred je uporabniško definiran podatkovni tip, ki ima podatkovne člane in članske funkcije.
  • Podatkovni člani so podatkovne spremenljivke in članske funkcije so funkcije, ki se uporabljajo za manipulacijo teh spremenljivk skupaj. Ti podatkovni člani in članske funkcije definirajo lastnosti in obnašanje objektov v razredu.
  • V zgornjem primeru razreda Car bo podatkovni član omejitev hitrosti, kilometrina itd., članske funkcije pa lahko zavirajo, povečajo hitrost itd.

Lahko rečemo, da a Razred v C++ je načrt, ki predstavlja skupino objektov, ki imajo nekatere skupne lastnosti in vedenje.



Objekt

Objekt je prepoznavna entiteta z nekaterimi značilnostmi in obnašanjem. Objekt je primerek razreda. Ko je razred definiran, se pomnilnik ne dodeli, ko pa je instanciran (tj. ustvarjen objekt), se pomnilnik dodeli.

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

Objekti zasedajo prostor v pomnilniku in imajo povezan naslov, kot je zapis v pascalu ali struktura ali unija. Ko se program izvaja, objekti medsebojno delujejo tako, da drug drugemu pošiljajo sporočila. Vsak objekt vsebuje podatke in kodo za manipulacijo podatkov. Objekti lahko medsebojno delujejo, ne da bi morali poznati podrobnosti o podatkih ali kodah drug drugega, dovolj je poznati vrsto sprejetega sporočila in vrsto odgovora, ki ga vrnejo objekti.

Če želite izvedeti več o objektih in razredih C++, preberite ta članek – C++ razredi in objekti



Enkapsulacija

Običajno je enkapsulacija opredeljena kot zavijanje podatkov in informacij v eno enoto. V objektno usmerjenem programiranju je enkapsulacija definirana kot povezovanje podatkov in funkcij, ki z njimi manipulirajo. Razmislite o resničnem primeru enkapsulacije, v podjetju obstajajo različni oddelki, kot so oddelek za račune, oddelek za finance, oddelek za prodajo itd. Oddelek za finance obravnava vse finančne transakcije in vodi evidenco vseh podatkov, povezanih s financami. Podobno tudi prodajna služba skrbi za vse prodajne aktivnosti in vodi evidenco vseh prodaj. Zdaj lahko pride do situacije, ko uradnik iz finančne službe iz nekega razloga potrebuje vse podatke o prodaji v določenem mesecu. V tem primeru nima neposrednega dostopa do podatkov prodajnega dela. Najprej se bo moral obrniti na kakšnega drugega referenta v komerciali in nato od njega zahtevati konkretne podatke. To je tisto, kar je enkapsulacija. Tu so podatki prodajnega oddelka in zaposleni, ki lahko manipulirajo z njimi, zaviti pod eno samo ime prodajni oddelek.

Enkapsulacija v C++ s primeri

Enkapsulacija v C++

Enkapsulacija vodi tudi do abstrakcija podatkov ali skrivanje podatkov . Uporaba enkapsulacije tudi skrije podatke. V zgornjem primeru so podatki katerega koli razdelka, kot so prodaja, finance ali računi, skriti pred katerim koli drugim razdelkom.

Če želite izvedeti več o enkapsulaciji, glejte ta članek – Enkapsulacija v C++

Abstrakcija

Abstrakcija podatkov je ena najpomembnejših in najpomembnejših lastnosti objektno usmerjenega programiranja v C++. Abstrakcija pomeni prikaz le bistvenih informacij in skrivanje podrobnosti. Abstrakcija podatkov se nanaša na zagotavljanje samo bistvenih informacij o podatkih zunanjemu svetu, pri čemer se skrijejo podrobnosti o ozadju ali implementacija. Razmislite o resničnem primeru moškega, ki vozi avto. Človek ve le, da bo s pritiskom na plin povečala hitrost avtomobila ali z zaviranjem se bo avto ustavil, vendar ne ve, kako se s pritiskom na plin hitrost dejansko poveča, ne pozna notranjega mehanizma avtomobila oz. vgradnjo plina, zavor itd. v avto. To je tisto, kar je abstrakcija.

  • Abstrakcija z uporabo razredov : Abstrakcijo lahko implementiramo v C++ z uporabo razredov. Razred nam pomaga združiti podatkovne člane in članske funkcije z uporabo razpoložljivih specifikatorjev dostopa. Razred se lahko odloči, kateri podatkovni član bo viden zunanjemu svetu in kateri ne.
  • Abstrakcija v datotekah glave : Še ena vrsta abstrakcije v C++ so lahko datoteke glave. Na primer, razmislite o metodi pow(), ki je prisotna v datoteki glave math.h. Kadarkoli moramo izračunati potenco števila, preprosto pokličemo funkcijo pow(), ki je prisotna v datoteki glave math.h, in posredujemo števila kot argumente, ne da bi poznali osnovni algoritem, po katerem funkcija dejansko izračuna potenco števil .

Če želite izvedeti več o abstrakciji C++, glejte ta članek – Abstrakcija v C++

Polimorfizem

Beseda polimorfizem pomeni imeti veliko oblik. Preprosto povedano, polimorfizem lahko definiramo kot sposobnost sporočila, da se prikaže v več kot eni obliki. Oseba ima lahko hkrati različne lastnosti. Moški je hkrati oče, mož in zaposleni. Torej se ista oseba v različnih situacijah obnaša različno. To se imenuje polimorfizem. Operacija se lahko v različnih primerih vede različno. Vedenje je odvisno od vrste podatkov, uporabljenih v operaciji. C++ podpira preobremenitev operaterjev in preobremenitev funkcij.

kako prenesti niz v int v Javi
  • Preobremenitev operaterja : Postopek, zaradi katerega se operater različno obnaša v različnih primerih, je znan kot preobremenitev operaterja.
  • Preobremenitev funkcij : Preobremenitev funkcij je uporaba enega imena funkcije za izvajanje različnih vrst nalog. Polimorfizem se v veliki meri uporablja pri izvajanju dedovanja.

Primer : Recimo, da moramo napisati funkcijo za seštevanje nekaterih celih števil, včasih sta 2 celi števili, včasih pa 3 cela števila. Metodo seštevanja lahko napišemo z istim imenom z različnimi parametri, zadevna metoda bo poklicana glede na parametre.

Polimorfizem v C++ s primerom

Polimorfizem v C++

Če želite izvedeti več o polimorfizmu, glejte ta članek – Polimorfizem v C++

Dedovanje

Imenuje se zmožnost razreda, da izpelje lastnosti in karakteristike iz drugega razreda Dedovanje . Dedovanje je ena najpomembnejših lastnosti objektno orientiranega programiranja.

  • Podrazred : Razred, ki podeduje lastnosti drugega razreda, se imenuje podrazred ali izpeljani razred.
  • Super razred : Razred, katerega lastnosti podeduje podrazred, se imenuje osnovni razred ali nadrazred.
  • Ponovno uporabnost : Dedovanje podpira koncept ponovne uporabnosti, tj. ko želimo ustvariti nov razred in že obstaja razred, ki vključuje nekaj kode, ki jo želimo, lahko naš novi razred izpeljemo iz obstoječega razreda. S tem ponovno uporabimo polja in metode obstoječega razreda.

Primer : Pes, Mačka, Krava so lahko izpeljani razred osnovnega razreda živali.

Dedovanje v C++ s primerom

Dedovanje v C++

Če želite izvedeti več o dedovanju, glejte ta članek – Dedovanje v C++

naključno število gen java

Dinamična vezava

Pri dinamičnem povezovanju se koda, ki naj se izvede kot odgovor na klic funkcije, določi med izvajanjem. C++ ima virtualne funkcije podpirati to. Ker je dinamično povezovanje prilagodljivo, se izogne ​​pomanjkljivostim statičnega povezovanja, ki povezuje klic funkcije in definicijo v času gradnje.

primer:

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

Izhod
Printing the Base class Content Printing the Base class Content>

Kot lahko vidimo, se funkcija print() nadrejenega razreda kliče celo iz predmeta izpeljanega razreda. Za rešitev tega problema uporabljamo virtualne funkcije.

Zgornji primer z virtualno funkcijo:

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>

Izhod
Printing the Base class Content Printing the Derived class Content>


Posredovanje sporočil

Objekti med seboj komunicirajo s pošiljanjem in prejemanjem informacij. Sporočilo za objekt je zahteva za izvedbo postopka in bo zato priklicalo funkcijo v prejemnem objektu, ki ustvari želene rezultate. Posredovanje sporočila vključuje določanje imena predmeta, imena funkcije in informacij, ki jih je treba poslati.

primer:

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>


povezani članki :