Interfaces en c++

Interfaces en c++

Les classes abstraites sont le moyen de réaliser l'abstraction en C++. L'abstraction en C++ est le processus permettant de masquer les détails internes et d'afficher uniquement les fonctionnalités. L'abstraction peut être réalisée de deux manières :

  1. Cours abstrait
  2. Interface

La classe abstraite et l'interface peuvent toutes deux avoir des méthodes abstraites nécessaires à l'abstraction.

Pourquoi avons-nous besoin d'une classe abstraite ?

Comprenons cela à l'aide d'un exemple concret. Disons que nous avons une classe, l'animal dort, l'animal fait un son, etc. Pour l'instant, je ne considère que ces deux comportements et crée une classe Animal avec deux fonctions sound() et sleeping() .

Maintenant, nous savons que les sons des animaux sont différents. Le chat dit « miaou », le chien dit « woof ». Alors, quelle implémentation dois-je donner dans Animal classe pour la fonction sound() , la seule et correcte façon de faire cela serait de rendre cette fonction purement abstraite de sorte que je n'ai pas besoin de donner l'implémentation dans la classe Animal mais toutes les classes qui héritent de la classe Animal doivent donner l'implémentation à cette fonction. De cette façon, je m'assure que tous les animaux ont un son, mais ils ont leur propre son.

#include <iostream>  
using namespace std;  
 class Shape    
{    
    public:   
    virtual void draw()=0;    
};    
 class Rectangle : Shape    
{    
    public:  
     void draw()    
    {    
        cout < <"drawing rectangle..." < <endl;    
    }    
};    
class Circle : Shape    
{    
    public:  
     void draw()    
    {    
        cout <<"drawing circle..." < <endl;    
    }    
};    
int main( ) {  
    Rectangle rec;  
    Circle cir;  
    rec.draw();    
    cir.draw();   
   return 0;  
}

Sortie :

drawing rectangle...
drawing circle...

Règles de la classe abstraite

  1. Comme nous l'avons vu, toute classe qui a une fonction virtuelle pure est une classe abstraite.
  2. Nous pouvons créer un pointeur et une référence de points de classe abstraits de base vers l'instance d'une classe enfant.
  3. Une classe abstraite peut avoir des constructeurs.
  4. Si la classe dérivée n'implémente pas la fonction virtuelle pure de la classe parent, alors la classe dérivée devient abstraite.
Précédemment :Encapsulation en c ++Suivant :Classe Friend et fonction friend en c ++PrevHomeNext


No