logo

Objektorienterad programmering i C++

Objektorienterad programmering – Som namnet antyder använder man objekt i programmering. Objektorienterad programmering syftar till att implementera verkliga enheter som arv, gömma, polymorfism, etc. i programmering. Huvudsyftet med OOP är att binda samman data och funktioner som fungerar på dem så att ingen annan del av koden kan komma åt denna data förutom den funktionen.

Det finns några grundläggande begrepp som fungerar som byggstenarna i OOP, dvs.



  1. Klass
  2. Föremål
  3. Inkapsling
  4. Abstraktion
  5. Polymorfism
  6. Arv
  7. Dynamisk bindning
  8. Meddelande passerar

Egenskaper hos ett objektorienterat programmeringsspråk

OOPS koncept i C++

java för looptyper

Klass

Byggstenen i C++ som leder till objektorienterad programmering är en klass. Det är en användardefinierad datatyp, som har sina egna datamedlemmar och medlemsfunktioner, som kan nås och användas genom att skapa en instans av den klassen. En klass är som en ritning för ett objekt. Till exempel: Tänk på bilklassen. Det kan finnas många bilar med olika namn och märken men alla kommer att dela vissa gemensamma egenskaper som att alla kommer att ha 4 hjul, hastighetsbegränsning, körsträcka etc. Så här är bilen klassen, och hjul, hastighetsbegränsningar , och körsträcka är deras egenskaper.

  • En klass är en användardefinierad datatyp som har datamedlemmar och medlemsfunktioner.
  • Datamedlemmar är datavariablerna och medlemsfunktioner är de funktioner som används för att manipulera dessa variabler tillsammans. Dessa datamedlemmar och medlemsfunktioner definierar egenskaperna och beteendet för objekten i en klass.
  • I exemplet ovan av klass Bil kommer datamedlemmen att vara hastighetsbegränsning, körsträcka etc och medlemsfunktioner kan bromsa, öka hastigheten etc.

Vi kan säga att a Klass i C++ är en ritning som representerar en grupp objekt som delar några gemensamma egenskaper och beteenden.



Objekt

Ett objekt är en identifierbar enhet med vissa egenskaper och beteende. Ett objekt är en instans av en klass. När en klass definieras tilldelas inget minne men när det instansieras (dvs ett objekt skapas) tilldelas minne.

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

Objekt tar upp plats i minnet och har en tillhörande adress som en post i pascal eller struktur eller union. När ett program körs interagerar objekten genom att skicka meddelanden till varandra. Varje objekt innehåller data och kod för att manipulera data. Objekt kan interagera utan att behöva känna till detaljer om varandras data eller kod, det räcker att veta vilken typ av meddelande som accepteras och vilken typ av svar som returneras av objekten.

För att veta mer om C++-objekt och klasser, se den här artikeln – C++ klasser och objekt



Inkapsling

I normala termer definieras Inkapsling som att samla data och information under en enda enhet. I objektorienterad programmering definieras Encapsulation som att binda samman data och funktionerna som manipulerar dem. Tänk på ett verkligt exempel på inkapsling, i ett företag finns det olika sektioner som kontosektionen, finanssektionen, försäljningssektionen, etc. Finanssektionen hanterar alla finansiella transaktioner och håller register över all data relaterade till ekonomi. På samma sätt hanterar försäljningssektionen alla försäljningsrelaterade aktiviteter och för register över all försäljning. Nu kan det uppstå en situation när en tjänsteman från finanssektionen av någon anledning behöver all information om försäljningen under en viss månad. I det här fallet får han inte direkt tillgång till uppgifterna i försäljningssektionen. Han måste först kontakta någon annan tjänsteman i försäljningssektionen och sedan be honom att ge de särskilda uppgifterna. Detta är vad inkapsling är. Här lindas data från försäljningssektionen och de anställda som kan manipulera dem under en enda namnförsäljningssektion.

Inkapsling i C++ med exempel

Inkapsling i C++

Inkapsling leder också till dataabstraktion eller datadöljande . Att använda inkapsling döljer också data. I exemplet ovan är data från någon av sektionerna som försäljning, ekonomi eller konton dolda från alla andra sektioner.

För att veta mer om inkapsling, se den här artikeln - Inkapsling i C++

Abstraktion

Dataabstraktion är en av de viktigaste och viktigaste funktionerna i objektorienterad programmering i C++. Abstraktion innebär att endast visa väsentlig information och dölja detaljerna. Dataabstraktion hänvisar till att endast tillhandahålla väsentlig information om data till omvärlden, dölja bakgrundsdetaljer eller implementering. Tänk på ett verkligt exempel på en man som kör bil. Mannen vet bara att ett tryck på gaspedalen kommer att öka hastigheten på bilen eller att bromsa kommer att stoppa bilen, men han vet inte hur hastigheten faktiskt ökar när han trycker på gaspedalen, han vet inte om bilens inre mekanism eller implementering av gaspedalen, bromsar etc. i bilen. Detta är vad abstraktion är.

  • Abstraktion med hjälp av klasser : Vi kan implementera abstraktion i C++ med hjälp av klasser. Klassen hjälper oss att gruppera datamedlemmar och medlemsfunktioner med hjälp av tillgängliga åtkomstspecifikationer. En klass kan bestämma vilken datamedlem som ska vara synlig för omvärlden och vilken som inte är det.
  • Abstraktion i Header-filer : Ytterligare en typ av abstraktion i C++ kan vara header-filer. Tänk till exempel på metoden pow() som finns i rubrikfilen math.h. När vi behöver beräkna potensen av ett tal, anropar vi helt enkelt funktionen pow() som finns i math.h-huvudfilen och skickar siffrorna som argument utan att känna till den underliggande algoritmen enligt vilken funktionen faktiskt beräknar potensen av tal .

För att veta mer om C++ abstraktion, se den här artikeln - Abstraktion i C++

Polymorfism

Ordet polymorfism betyder att ha många former. I enkla ord kan vi definiera polymorfism som förmågan hos ett meddelande att visas i mer än en form. En person kan samtidigt ha olika egenskaper. En man är samtidigt en far, en man och en anställd. Så samma person har olika beteende i olika situationer. Detta kallas polymorfism. En operation kan uppvisa olika beteenden i olika fall. Beteendet beror på vilken typ av data som används i operationen. C++ stöder operatörsöverbelastning och funktionsöverbelastning.

  • Operatör överbelastning : Processen att få en operatör att uppvisa olika beteenden i olika tillfällen kallas operatörsöverbelastning.
  • Funktion Överbelastning : Funktionsöverbelastning är att använda ett enda funktionsnamn för att utföra olika typer av uppgifter. Polymorfism används i stor utsträckning för att implementera arv.

Exempel : Anta att vi måste skriva en funktion för att lägga till några heltal, ibland finns det 2 heltal, och ibland finns det 3 heltal. Vi kan skriva tilläggsmetoden med samma namn med olika parametrar, den berörda metoden kommer att anropas enligt parametrar.

Polymorfism i C++ med exempel

Polymorfism i C++

huggorm full huggorm

För att veta mer om polymorfism, se den här artikeln - Polymorfism i C++

Arv

En klasss förmåga att härleda egenskaper och egenskaper från en annan klass kallas Arv . Arv är en av de viktigaste funktionerna i objektorienterad programmering.

  • Underklass : Klassen som ärver egenskaper från en annan klass kallas underklass eller härledd klass.
  • Superklass : Klassen vars egenskaper ärvs av en underklass kallas Base Class eller Superclass.
  • Återanvändbarhet : Arv stöder begreppet återanvändbarhet, det vill säga när vi vill skapa en ny klass och det redan finns en klass som innehåller en del av koden som vi vill ha, kan vi härleda vår nya klass från den befintliga klassen. Genom att göra detta återanvänder vi fälten och metoderna i den befintliga klassen.

Exempel : Hund, katt, ko kan vara härledd klass av djurbasklass.

Arv i C++ med exempel

Arv i C++

För att veta mer om arv, se den här artikeln - Arv i C++

sanjay dutt och

Dynamisk bindning

Vid dynamisk bindning avgörs koden som ska exekveras som svar på funktionsanropet vid körning. C++ har virtuella funktioner att stödja detta. Eftersom dynamisk bindning är flexibel undviker den nackdelarna med statisk bindning, som kopplade ihop funktionsanropet och definitionen vid byggtid.

Exempel:

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 anropas funktionen print() för den överordnade klassen även från det härledda klassobjektet. För att lösa detta använder vi virtuella funktioner.

Ovanstående exempel med virtuell 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>


Meddelande passerar

Objekt kommunicerar med varandra genom att skicka och ta emot information. Ett meddelande för ett objekt är en begäran om exekvering av en procedur och kommer därför att anropa en funktion i det mottagande objektet som genererar de önskade resultaten. Meddelandeöverföring innebär att man specificerar namnet på objektet, namnet på funktionen och informationen som ska skickas.

Exempel:

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>


relaterade artiklar :