Définition d'une interface ?

Résolu
Cynthia78 -  
 Cynthia78 -
Bonjour,

voila je suis débutante en c++ et j'ai quelques questions auquel je ne comprend pas les définitions. Pouvez-vous me l'ai expliquer avec des mots pas trop compliqué ^^ si vous avez le temps s'il vous plait ? :)


Alors :

1) Qu'est-ce qu'une interface et à quoi cela sert t'il ?
2) Quelle est la différence avec une classe dite "abstraite"? l'uilité ?
3) A quoi sert le mot clé enum ?

Merci d'avance :)
A voir également:

3 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Bonjour,

1) une interface est une propriété transverse
2) une classe abstraite fait partie de la hiérarchie de la classe (c'est une classe mère de la classe qui va l'implémenter)

Exemple : un chien, c'est un animal. En soit un animal ça n'existe pas, c'est une conception pour regrouper tout ce qui est chien, chat, oiseau...
Donc une classe Animal est abstraite, la vraie classe c'est Chien.
Une interface pourrait être : Quadrupede, pour les animaux à 4 pattes.
Le chien implémente l'interface Quadrupede, mais pas l'oiseau.

3) le mot clé enum c'est pour définir des types qui peuvent prendre un ensemble fini de valeurs.

Exemple : dans les jeux de carte il y a 4 couleurs : pique, cœur, carreau et trèfle, on pourrait donc faire un enum pour représenter la couleur. On peut faire également un enum pour les valeurs 1, 2, 3... 10, valet, dame, roi.
0
Dalfab Messages postés 720 Statut Membre 101
 
Bonjour,
Une interface :
Permet de définir des points accès utilsés par des types d'objets différents.
De nombreux langages distinguent les concepts d'Héritage de celui d'Interface. En C++, une Interface est une classe Héritée qui est 100% Abstraite (a des points d'entrée mais pas du tout de code).

Exemple :
class IAUnDroitDAcces  // Interface
{
public:
    virtual string droitDAcces()const = 0; // tout est abstrait et devra être défini
};

class Personne // Base
{
    string nom;
public:
    string leNom()const { return nom; }
    Personne( const string& nom ) : nom(nom) {}
};

class Employe : public Personne, IAUnDroitDAcces
{
public:
    string droitDAccess()const { return "Entrée des artistes"; }
    Employe( const string& nom ) : Personne(nom) {}
};
class Patron : public Personne, IAUnDroitDAcces
{
public:
    string droitDAccess()const { return "Entrée principale"; }
    Patron() : Personne("TheBoss") {}
};
Il est recommendé d'éviter le multi-héritage et de toujours préférer avoir une seule classe de Base et plusieurs Interfaces.
0
Cynthia78
 
Merci à tous pour vos réponses, je commence un peu à voir à quoi tout cela rime :)
0