logo

Programació Orientada a Objectes en C++

Programació orientada a objectes: com el seu nom indica, utilitza objectes a la programació. La programació orientada a objectes pretén implementar entitats del món real com l'herència, l'amagat, el polimorfisme, etc. L'objectiu principal de la POO és unir les dades i les funcions que hi operen perquè cap altra part del codi pugui accedir a aquestes dades excepte aquesta funció.

Hi ha alguns conceptes bàsics que actuen com a elements bàsics dels POO, és a dir.



  1. Classe
  2. Objectes
  3. Encapsulació
  4. Abstracció
  5. Polimorfisme
  6. Herència
  7. Enquadernació dinàmica
  8. Missatge passant

Característiques d'un llenguatge de programació orientat a objectes

Concepte OOPS en C++

Característiques de java8

Classe

El bloc de construcció de C++ que condueix a la programació orientada a objectes és una classe. És un tipus de dades definit per l'usuari, que conté els seus propis membres de dades i funcions de membre, als quals es pot accedir i utilitzar-se creant una instància d'aquesta classe. Una classe és com un plànol per a un objecte. Per exemple: considereu la classe de cotxes. Pot haver-hi molts cotxes amb diferents noms i marques, però tots ells compartiran algunes propietats comunes, com que tots tindran 4 rodes, límit de velocitat, autonomia, etc. Així que aquí, el cotxe és la classe, i rodes, límits de velocitat. , i el quilometratge són les seves propietats.

  • Una classe és un tipus de dades definit per l'usuari que té membres de dades i funcions de membre.
  • Els membres de dades són les variables de dades i les funcions de membre són les funcions que s'utilitzen per manipular aquestes variables conjuntament. Aquests membres de dades i funcions de membre defineixen les propietats i el comportament dels objectes d'una classe.
  • A l'exemple anterior de la classe Car, el membre de dades serà el límit de velocitat, el quilometratge, etc. i les funcions del membre poden aplicar frens, augmentar la velocitat, etc.

Podem dir que a Classe en C++ és un plànol que representa un grup d'objectes que comparteix algunes propietats i comportaments comuns.



Objecte

Un objecte és una entitat identificable amb algunes característiques i comportament. Un Object és una instància d'una Classe. Quan es defineix una classe, no s'assigna memòria, però quan s'instancia (és a dir, es crea un objecte) s'assigna memòria.

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

Els objectes ocupen espai a la memòria i tenen una adreça associada com un registre en pascal o estructura o unió. Quan s'executa un programa, els objectes interactuen enviant-se missatges entre ells. Cada objecte conté dades i codi per manipular les dades. Els objectes poden interactuar sense haver de conèixer detalls de les dades o codi dels altres, n'hi ha prou amb conèixer el tipus de missatge acceptat i el tipus de resposta que retornen els objectes.

Per obtenir més informació sobre els objectes i les classes C++, consulteu aquest article: Classes i objectes C++



Encapsulació

En termes normals, l'encapsulació es defineix com l'embolcall de dades i informació en una sola unitat. A la programació orientada a objectes, l'encapsulació es defineix com unir les dades i les funcions que les manipulen. Considereu un exemple real d'encapsulació, en una empresa, hi ha diferents seccions com la secció de comptes, la secció de finances, la secció de vendes, etc. La secció de finances gestiona totes les transaccions financeres i manté un registre de totes les dades relacionades amb les finances. De la mateixa manera, la secció de vendes gestiona totes les activitats relacionades amb les vendes i manté un registre de totes les vendes. Ara pot sorgir una situació en què per algun motiu un funcionari de la secció de finances necessiti totes les dades sobre vendes en un mes concret. En aquest cas, no se li permet accedir directament a les dades de la secció de vendes. Primer haurà de posar-se en contacte amb algun altre oficial de la secció de vendes i després demanar-li que proporcioni les dades concretes. Això és el que és l'encapsulació. Aquí les dades de la secció de vendes i els empleats que poden manipular-les s'emmagatzemen sota un sol nom de secció de vendes.

Encapsulació en C++ amb exemples

Encapsulació en C++

L'encapsulació també condueix a abstracció de dades o ocultació de dades . L'ús de l'encapsulació també amaga les dades. A l'exemple anterior, les dades de qualsevol de les seccions, com ara vendes, finances o comptes, s'amaguen a qualsevol altra secció.

Per obtenir més informació sobre l'encapsulació, consulteu aquest article: Encapsulació en C++

Abstracció

L'abstracció de dades és una de les característiques més essencials i importants de la programació orientada a objectes en C++. L'abstracció significa mostrar només informació essencial i ocultar els detalls. L'abstracció de dades es refereix a proporcionar només informació essencial sobre les dades al món exterior, amagant els detalls de fons o la implementació. Considereu un exemple de la vida real d'un home que condueix un cotxe. L'home només sap que prémer l'accelerador augmentarà la velocitat del cotxe o aplicar els frens aturarà el cotxe, però no sap com en prémer l'accelerador augmenta la velocitat, no sap el mecanisme interior del cotxe o la implantació d'un accelerador, frens, etc. al cotxe. Això és el que és l'abstracció.

  • Abstracció mitjançant classes : Podem implementar l'abstracció en C++ mitjançant classes. La classe ens ajuda a agrupar els membres de dades i les funcions dels membres utilitzant especificadors d'accés disponibles. Una classe pot decidir quin membre de dades serà visible per al món exterior i quin no.
  • Abstracció en fitxers de capçalera : Un tipus més d'abstracció en C++ poden ser els fitxers de capçalera. Per exemple, considereu el mètode pow() present al fitxer de capçalera math.h. Sempre que necessitem calcular la potència d'un nombre, simplement cridem a la funció pow() present al fitxer de capçalera math.h i passem els números com a arguments sense conèixer l'algorisme subjacent segons el qual la funció està calculant realment la potència dels nombres. .

Per obtenir més informació sobre l'abstracció de C++, consulteu aquest article: Abstracció en C++

Polimorfisme

La paraula polimorfisme significa tenir moltes formes. En paraules simples, podem definir el polimorfisme com la capacitat que té un missatge de mostrar-se en més d'una forma. Una persona al mateix temps pot tenir diferents característiques. Un home al mateix temps és un pare, un marit i un empleat. Així, una mateixa persona té un comportament diferent en diferents situacions. Això s'anomena polimorfisme. Una operació pot mostrar diferents comportaments en diferents casos. El comportament depèn dels tipus de dades utilitzats en l'operació. C++ admet la sobrecàrrega d'operadors i la sobrecàrrega de funcions.

cadena java a booleà
  • Sobrecàrrega de l'operador : El procés de fer que un operador mostri diferents comportaments en diferents instàncies es coneix com a sobrecàrrega de l'operador.
  • Sobrecàrrega de funcions : La sobrecàrrega de funcions és utilitzar un sol nom de funció per realitzar diferents tipus de tasques. El polimorfisme s'utilitza àmpliament per implementar l'herència.

Exemple : Suposem que hem d'escriure una funció per sumar alguns nombres enters, de vegades hi ha 2 enters i de vegades hi ha 3 enters. Podem escriure el mètode d'addició amb el mateix nom amb diferents paràmetres, el mètode en qüestió s'anomenarà segons paràmetres.

Polimorfisme en C++ amb exemple

Polimorfisme en C++

Per saber més sobre el polimorfisme, consulteu aquest article: Polimorfisme en C++

Herència

S'anomena la capacitat d'una classe per derivar propietats i característiques d'una altra classe Herència . L'herència és una de les característiques més importants de la programació orientada a objectes.

  • Subclasse : La classe que hereta propietats d'una altra classe s'anomena Subclasse o Classe derivada.
  • Super Classe : La classe les propietats de la qual són heretades per una subclasse s'anomena Classe base o Superclasse.
  • Reutilitzabilitat : L'herència admet el concepte de reutilització, és a dir, quan volem crear una nova classe i ja hi ha una classe que inclou part del codi que volem, podem derivar la nostra nova classe de la classe existent. En fer això, estem reutilitzant els camps i mètodes de la classe existent.

Exemple : El gos, el gat i la vaca es poden derivar de la classe de base animal.

Herència en C++ amb exemple

Herència en C++

Per saber més sobre l'herència, consulteu aquest article: Herència en C++

llista java a matriu

Enquadernació dinàmica

En l'enllaç dinàmic, el codi que s'ha d'executar en resposta a la crida de funció es decideix en temps d'execució. C++ té funcions virtuals per donar suport a això. Com que la vinculació dinàmica és flexible, evita els inconvenients de la vinculació estàtica, que connectava la trucada i la definició de la funció en temps de creació.

Exemple:

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

Sortida
Printing the Base class Content Printing the Base class Content>

Com podem veure, la funció print() de la classe pare s'anomena fins i tot des de l'objecte de classe derivat. Per resoldre això fem servir funcions virtuals.

Exemple anterior amb funció virtual:

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>

Sortida
Printing the Base class Content Printing the Derived class Content>


Missatge passant

Els objectes es comuniquen entre ells enviant i rebent informació. Un missatge per a un objecte és una sol·licitud per a l'execució d'un procediment i, per tant, invocarà una funció a l'objecte receptor que genera els resultats desitjats. La transmissió de missatges implica especificar el nom de l'objecte, el nom de la funció i la informació a enviar.

Exemple:

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>


Articles relacionats :