logo

Objektorienteret programmering i C++

Objektorienteret programmering - Som navnet antyder bruger objekter i programmering. Objektorienteret programmering har til formål at implementere virkelige enheder som arv, skjul, polymorfi osv. i programmering. Hovedformålet med OOP er at binde sammen dataene og de funktioner, der fungerer på dem, så ingen anden del af koden kan få adgang til disse data undtagen denne funktion.

Der er nogle grundlæggende begreber, der fungerer som byggestenene i OOP'er, dvs.



  1. Klasse
  2. Objekter
  3. Indkapsling
  4. Abstraktion
  5. Polymorfi
  6. Arv
  7. Dynamisk binding
  8. Besked passerer

Karakteristika for et objektorienteret programmeringssprog

OOPS koncept i C++

fjeder og fjeder mvc

Klasse

Byggeklodsen i C++, der fører til objektorienteret programmering, er en klasse. Det er en brugerdefineret datatype, som har sine egne datamedlemmer og medlemsfunktioner, som kan tilgås og bruges ved at oprette en forekomst af den pågældende klasse. En klasse er som en plan for et objekt. For eksempel: Overvej klassen af ​​biler. Der kan være mange biler med forskellige navne og mærker, men de vil alle dele nogle fælles egenskaber, da de alle vil have 4 hjul, hastighedsgrænse, kilometertal osv. Så her er bilen klassen, og hjul, hastighedsgrænser , og kilometertal er deres egenskaber.

  • En klasse er en brugerdefineret datatype, der har datamedlemmer og medlemsfunktioner.
  • Datamedlemmer er datavariablerne, og medlemsfunktioner er de funktioner, der bruges til at manipulere disse variable sammen. Disse datamedlemmer og medlemsfunktioner definerer egenskaberne og adfærden for objekterne i en klasse.
  • I ovenstående eksempel på klassebil vil datamedlemmet være hastighedsgrænse, kilometertal osv., og medlemsfunktioner kan aktivere bremser, øge hastigheden osv.

Vi kan sige, at a Klasse i C++ er en plan, der repræsenterer en gruppe af objekter, som deler nogle fælles egenskaber og adfærd.



Objekt

Et objekt er en identificerbar enhed med nogle karakteristika og adfærd. Et objekt er en forekomst af en klasse. Når en klasse er defineret, allokeres der ingen hukommelse, men når den instansieres (dvs. et objekt oprettes), tildeles hukommelse.

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

Objekter optager plads i hukommelsen og har en tilknyttet adresse som en post i pascal eller struktur eller union. Når et program udføres, interagerer objekterne ved at sende beskeder til hinanden. Hvert objekt indeholder data og kode til at manipulere dataene. Objekter kan interagere uden at skulle kende detaljer om hinandens data eller kode, det er tilstrækkeligt at kende typen af ​​meddelelse, der accepteres, og typen af ​​svar, der returneres af objekterne.

For at vide mere om C++ objekter og klasser, se denne artikel – C++ klasser og objekter



Indkapsling

Normalt defineres Encapsulation som at samle data og information under en enkelt enhed. I objektorienteret programmering er indkapsling defineret som at sammenbinde dataene og de funktioner, der manipulerer dem. Overvej et virkeligt eksempel på indkapsling, i en virksomhed er der forskellige sektioner som regnskabssektionen, finanssektionen, salgssektionen osv. Finanssektionen håndterer alle de finansielle transaktioner og fører registre over alle data relateret til finans. På samme måde håndterer salgssektionen alle salgsrelaterede aktiviteter og fører regnskab over alt salg. Nu kan der opstå en situation, hvor en embedsmand fra finansafdelingen af ​​en eller anden grund har brug for alle data om salg i en bestemt måned. I dette tilfælde har han ikke direkte adgang til salgssektionens data. Han bliver først nødt til at kontakte en anden medarbejder i salgssektionen og derefter anmode ham om at give de særlige data. Dette er hvad indkapsling er. Her er salgssektionens data og de medarbejdere, der kan manipulere dem, pakket ind under et enkelt navn, salgssektion.

Indkapsling i C++ med eksempler

Indkapsling i C++

Indkapsling fører også til dataabstraktion eller dataskjul . Brug af indkapsling skjuler også dataene. I ovenstående eksempel er dataene for enhver af sektionerne som salg, økonomi eller konti skjult fra enhver anden sektion.

streng array c

For at vide mere om indkapsling, se denne artikel - Indkapsling i C++

Abstraktion

Dataabstraktion er en af ​​de mest essentielle og vigtige funktioner ved objektorienteret programmering i C++. Abstraktion betyder kun at vise væsentlig information og skjule detaljerne. Dataabstraktion refererer til kun at give væsentlig information om dataene til omverdenen, skjule baggrundsdetaljerne eller implementeringen. Overvej et virkeligt eksempel på en mand, der kører bil. Manden ved kun, at et tryk på speederen vil øge bilens hastighed, eller at bruge bremser vil stoppe bilen, men han ved ikke, hvordan ved at trykke på speederen, hastigheden faktisk stiger, han kender ikke til bilens indre mekanisme eller implementering af speeder, bremser osv. i bilen. Det er hvad abstraktion er.

  • Abstraktion ved hjælp af klasser : Vi kan implementere abstraktion i C++ ved hjælp af klasser. Klassen hjælper os med at gruppere datamedlemmer og medlemsfunktioner ved hjælp af tilgængelige adgangsspecifikationer. En klasse kan bestemme, hvilket datamedlem der vil være synligt for omverdenen, og hvilket der ikke er.
  • Abstraktion i Header-filer : Endnu en type abstraktion i C++ kan være header-filer. Overvej f.eks. pow()-metoden, der findes i math.h-headerfilen. Hver gang vi skal beregne potensen af ​​et tal, kalder vi simpelthen funktionen pow() til stede i math.h header-filen og sender tallene som argumenter uden at kende den underliggende algoritme, ifølge hvilken funktionen faktisk beregner potensen af ​​tal .

For at vide mere om C++ abstraktion, se denne artikel - Abstraktion i C++

Polymorfi

Ordet polymorfi betyder at have mange former. Med enkle ord kan vi definere polymorfi som en beskeds evne til at blive vist i mere end én form. En person på samme tid kan have forskellige egenskaber. En mand er på samme tid en far, en mand og en medarbejder. Så den samme person besidder forskellig adfærd i forskellige situationer. Dette kaldes polymorfi. En operation kan udvise forskellig adfærd i forskellige tilfælde. Adfærden afhænger af de typer data, der bruges i operationen. C++ understøtter operatøroverbelastning og funktionsoverbelastning.

  • Operatør overbelastning : Processen med at få en operatør til at udvise forskellig adfærd i forskellige tilfælde er kendt som operatøroverbelastning.
  • Funktion Overbelastning : Funktionsoverbelastning er at bruge et enkelt funktionsnavn til at udføre forskellige typer opgaver. Polymorfi bruges i vid udstrækning til implementering af arv.

Eksempel : Antag, at vi skal skrive en funktion for at tilføje nogle heltal, nogle gange er der 2 heltal, og nogle gange er der 3 heltal. Vi kan skrive tilføjelsesmetoden med samme navn med forskellige parametre, den pågældende metode vil blive kaldt i henhold til parametre.

Polymorfi i C++ med eksempel

Polymorfi i C++

For at vide mere om polymorfi, se denne artikel - Polymorfi i C++

Arv

En klasses evne til at udlede egenskaber og karakteristika fra en anden klasse kaldes Arv . Arv er en af ​​de vigtigste egenskaber ved objektorienteret programmering.

  • Underklasse : Klassen, der arver egenskaber fra en anden klasse, kaldes underklasse eller afledt klasse.
  • Super klasse : Klassen, hvis egenskaber er nedarvet af en underklasse, kaldes Base Class eller Superclass.
  • Genanvendelighed : Arv understøtter begrebet genbrugelighed, dvs. når vi vil oprette en ny klasse, og der allerede er en klasse, der indeholder noget af den kode, vi ønsker, kan vi udlede vores nye klasse fra den eksisterende klasse. Ved at gøre dette genbruger vi felterne og metoderne i den eksisterende klasse.

Eksempel : Hund, kat, ko kan være afledt klasse af dyrebaseklasse.

Nedarvning i C++ med Eksempel

Nedarvning i C++

For at vide mere om arv, se denne artikel – Nedarvning i C++

numpy linspace

Dynamisk binding

Ved dynamisk binding bestemmes koden, der skal udføres som svar på funktionskaldet, ved kørsel. C++ har virtuelle funktioner at støtte dette. Fordi dynamisk binding er fleksibel, undgår den ulemperne ved statisk binding, som forbandt funktionskaldet og definitionen på byggetidspunktet.

Eksempel:

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

Produktion
Printing the Base class Content Printing the Base class Content>

Som vi kan se, kaldes print()-funktionen af ​​den overordnede klasse selv fra det afledte klasseobjekt. For at løse dette bruger vi virtuelle funktioner.

Ovenstående eksempel med virtuel funktion:

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>

Produktion
Printing the Base class Content Printing the Derived class Content>


Besked passerer

Objekter kommunikerer med hinanden ved at sende og modtage information. En meddelelse for et objekt er en anmodning om udførelse af en procedure og vil derfor påkalde en funktion i det modtagende objekt, der genererer de ønskede resultater. Meddelelsesoverførsel involverer at angive navnet på objektet, navnet på funktionen og den information, der skal sendes.

Eksempel:

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>


relaterede artikler :