logo

Olio-ohjelmointi C++:ssa

Olio-ohjelmointi – Kuten nimestä voi päätellä, käyttää olioita ohjelmoinnissa. Olio-ohjelmoinnin tavoitteena on toteuttaa ohjelmointiin reaalimaailman kokonaisuuksia, kuten perinnöllisyys, piiloutuminen, polymorfismi jne. OOP:n päätavoite on sitoa tiedot ja niillä toimivat toiminnot yhteen siten, että mikään muu koodin osa ei pääse käsiksi näihin tietoihin kuin kyseinen toiminto.

On olemassa joitain peruskäsitteitä, jotka toimivat OOP:n rakennuspalikeina, ts.



  1. Luokka
  2. Objektit
  3. Kapselointi
  4. Abstraktio
  5. Polymorfismi
  6. Perintö
  7. Dynaaminen sidonta
  8. Viestiä ohitetaan

Olio-ohjelmointikielen ominaisuudet

OOPS-konsepti C++:ssa

palauttaa taulukon java

Luokka

C++:n rakennuspalikka, joka johtaa olio-ohjelmointiin, on luokka. Se on käyttäjän määrittämä tietotyyppi, joka sisältää omat tietojäsenensä ja jäsenfunktionsa, joita voidaan käyttää ja joita voidaan käyttää luomalla kyseisen luokan esiintymä. Luokka on kuin suunnitelma esineelle. Esimerkki: Harkitse autoluokkaa. Autoja voi olla monia eri nimillä ja merkeillä, mutta niillä kaikilla on joitain yhteisiä ominaisuuksia, kuten kaikissa on 4 pyörää, nopeusrajoitus, kilometrimäärä jne. Joten tässä auto on luokka ja pyörät, nopeusrajoitukset , ja mittarilukema ovat niiden ominaisuuksia.

  • Luokka on käyttäjän määrittämä tietotyyppi, jossa on datajäseniä ja jäsentoimintoja.
  • Datajäsenet ovat datamuuttujia ja jäsenfunktiot ovat toimintoja, joita käytetään näiden muuttujien käsittelemiseen yhdessä. Nämä datajäsenet ja jäsenfunktiot määrittävät luokan objektien ominaisuudet ja käyttäytymisen.
  • Yllä olevassa Auto-luokan esimerkissä tietojäsenenä on nopeusrajoitus, kilometrimäärä jne., ja jäsentoiminnot voivat jarruttaa, lisätä nopeutta jne.

Voimme sanoa, että a Luokka C++ on suunnitelma, joka edustaa ryhmää esineitä, joilla on yhteisiä ominaisuuksia ja käyttäytymistä.



Esine

Objekti on tunnistettavissa oleva kokonaisuus, jolla on joitain ominaisuuksia ja käyttäytymistä. Objekti on luokan esiintymä. Kun luokka määritellään, muistia ei varata, mutta kun se instantoidaan (eli objekti luodaan), muisti varataan.

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

Objektit vievät tilaa muistista, ja niihin liittyy osoite, kuten tietue pascalissa tai rakenteessa tai unionissa. Kun ohjelma suoritetaan, objektit ovat vuorovaikutuksessa lähettämällä viestejä toisilleen. Jokainen objekti sisältää dataa ja koodia tietojen käsittelemiseksi. Objektit voivat olla vuorovaikutuksessa ilman, että niiden tarvitsee tietää yksityiskohtia toistensa tiedoista tai koodista, riittää, kun tietää hyväksytyn viestin tyypin ja objektien palauttaman vastauksen.

Lisätietoja C++-objekteista ja -luokista saat tästä artikkelista - C++-luokat ja objektit



Kapselointi

Normaalisti kapselointi määritellään tietojen ja informaation käärimiseksi yhteen yksikköön. Olio-ohjelmoinnissa kapselointi määritellään datan ja niitä käsittelevien toimintojen sitomiseksi yhteen. Ajatellaanpa tosielämän esimerkkiä kapseloinnista, jossa yrityksessä on erilaisia ​​osioita, kuten kirjanpitoosio, rahoitusosio, myyntiosio jne. Rahoitusosasto käsittelee kaikki rahoitustapahtumat ja pitää kirjaa kaikista rahoitukseen liittyvistä tiedoista. Vastaavasti myyntiosasto hoitaa kaikki myyntiin liittyvät toiminnot ja pitää kirjaa kaikista myynneistä. Nyt voi syntyä tilanne, kun talousosaston virkamies jostain syystä tarvitsee kaikki tiedot tietyn kuukauden myynnistä. Tässä tapauksessa hänellä ei ole oikeutta päästä suoraan myyntiosion tietoihin. Hänen on ensin otettava yhteyttä johonkin muuhun myyntiosaston virkailijaan ja pyydettävä sitten häntä antamaan kyseiset tiedot. Tätä on kapselointi. Täällä myyntiosion tiedot ja niitä käsittelevät työntekijät on kääritty yhden nimen myyntiosion alle.

Kapselointi C++-kielellä esimerkein

Kapselointi C++:ssa

Kapselointi johtaa myös tietojen abstraktio tai tietojen piilottaminen . Kapseloinnin käyttö myös piilottaa tiedot. Yllä olevassa esimerkissä minkä tahansa osion tiedot, kuten myynti, talous tai tilit, on piilotettu kaikista muista osioista.

Jos haluat lisätietoja kapseloinnista, katso tämä artikkeli - Kapselointi C++:ssa

Abstraktio

Tietojen abstraktio on yksi C++:n olioohjelmoinnin tärkeimmistä ja tärkeimmistä ominaisuuksista. Abstraktio tarkoittaa vain olennaisten tietojen näyttämistä ja yksityiskohtien piilottamista. Tiedon abstraktiolla tarkoitetaan vain olennaisen tiedon välittämistä tiedosta ulkomaailmalle, taustatietojen tai toteutuksen piilottamista. Harkitse tosielämän esimerkkiä miehestä, joka ajaa autoa. Mies tietää vain, että kaasupolkimen painaminen lisää auton nopeutta tai jarruttaminen pysäyttää auton, mutta hän ei tiedä kuinka kaasupoljinta painettaessa nopeus todellisuudessa kasvaa, hän ei tiedä auton sisämekanismista tai kaasupolkimen, jarrujen jne. käyttöönotto autossa. Tämä on sitä, mitä abstraktio on.

  • Abstraktio luokkien avulla : Voimme toteuttaa Abstractionin C++:ssa luokkien avulla. Luokka auttaa meitä ryhmittelemään datajäseniä ja jäsentoimintoja käytettävissä olevien pääsymääritteiden avulla. Luokka voi päättää, mikä datajäsen näkyy ulkomaailmalle ja mikä ei.
  • Abstraktio otsikkotiedostoissa : Toinen abstraktiotyyppi C++:ssa voi olla otsikkotiedostot. Harkitse esimerkiksi math.h-otsikkotiedostossa olevaa pow()-menetelmää. Aina kun meidän on laskettava luvun potenssi, kutsumme yksinkertaisesti math.h-otsikkotiedostossa olevaa funktiota pow() ja välitämme luvut argumentteina tietämättä taustalla olevaa algoritmia, jonka mukaan funktio itse asiassa laskee lukujen potenssia. .

Saat lisätietoja C++-abstraktiosta tästä artikkelista - Abstraktio C++:ssa

Polymorfismi

Sana polymorfismi tarkoittaa monia muotoja. Yksinkertaisesti sanottuna voimme määritellä polymorfismin viestin kyvyksi näyttää useammassa kuin yhdessä muodossa. Ihmisellä voi samanaikaisesti olla erilaisia ​​ominaisuuksia. Mies on samanaikaisesti isä, aviomies ja työntekijä. Joten samalla henkilöllä on erilainen käyttäytyminen eri tilanteissa. Tätä kutsutaan polymorfismiksi. Toiminto voi käyttäytyä eri tavoin eri tapauksissa. Käyttäytyminen riippuu operaatiossa käytetyistä tietotyypeistä. C++ tukee operaattorin ylikuormitusta ja toimintojen ylikuormitusta.

sivustot, kuten coomeet
  • Kuljettajan ylikuormitus : Prosessi, jossa operaattori saatetaan käyttäytymään eri tavoin, tunnetaan operaattorin ylikuormituksena.
  • Toimintojen ylikuormitus : Funktioiden ylikuormitus tarkoittaa yhden funktion nimen käyttöä erityyppisten tehtävien suorittamiseen. Polymorfismia käytetään laajasti periytymisen toteuttamisessa.

Esimerkki : Oletetaan, että meidän on kirjoitettava funktio lisätäksemme joitakin kokonaislukuja, joskus on 2 kokonaislukua ja joskus on 3 kokonaislukua. Voimme kirjoittaa Addition Methodilla samalla nimellä eri parametreilla, kyseistä menetelmää kutsutaan parametrien mukaan.

Polymorfismi C++:ssa esimerkin kanssa

Polymorfismi C++:ssa

Jos haluat lisätietoja polymorfismista, katso tämä artikkeli - Polymorfismi C++:ssa

Perintö

Luokan kykyä johtaa ominaisuuksia ja ominaisuuksia toisesta luokasta kutsutaan Perintö . Periytys on yksi olio-ohjelmoinnin tärkeimmistä ominaisuuksista.

  • Alaluokka : Luokka, joka perii ominaisuuksia toiselta luokalta, on nimeltään alaluokka tai johdettu luokka.
  • Superluokka : Luokkaa, jonka ominaisuudet aliluokka perii, kutsutaan perusluokiksi tai superluokiksi.
  • Uudelleenkäytettävyys : Periytys tukee uudelleenkäytettävyyden käsitettä, eli kun haluamme luoda uuden luokan ja on jo luokka, joka sisältää osan haluamastamme koodista, voimme johtaa uuden luokkamme olemassa olevasta luokasta. Näin toimimalla käytämme uudelleen olemassa olevan luokan kenttiä ja menetelmiä.

Esimerkki : Koira, kissa, lehmä voidaan johtaa eläinperusluokan luokkaan.

Periytys C++:ssa esimerkin kanssa

Periytys C++:ssa

Jos haluat lisätietoja perinnöstä, katso tämä artikkeli - Periytys C++:ssa

taulukot java

Dynaaminen sidonta

Dynaamisessa sidonnassa funktiokutsuun vasteena suoritettava koodi päätetään ajon aikana. C++:ssa on virtuaalisia toimintoja tukemaan tätä. Koska dynaaminen sidonta on joustavaa, se välttää staattisen sitomisen haitat, joka yhdisti funktiokutsun ja määrittelyn rakennusaikana.

Esimerkki:

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

Lähtö
Printing the Base class Content Printing the Base class Content>

Kuten näemme, emoluokan print()-funktiota kutsutaan jopa johdetuista luokkaobjekteista. Tämän ratkaisemiseksi käytämme virtuaalisia toimintoja.

Yllä oleva esimerkki virtuaalitoiminnolla:

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>

Lähtö
Printing the Base class Content Printing the Derived class Content>


Viestiä ohitetaan

Objektit kommunikoivat keskenään lähettämällä ja vastaanottamalla tietoa. Objektin viesti on pyyntö toimenpiteen suorittamiseksi, ja siksi se kutsuu vastaanottavassa objektissa toiminnon, joka tuottaa halutut tulokset. Viestin välittäminen sisältää kohteen nimen, toiminnon nimen ja lähetettävän tiedon määrittämisen.

Esimerkki:

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>


Aiheeseen liittyvät artikkelit :