Définition d'une interface ?

Résolu/Fermé
Cynthia78 - 24 févr. 2016 à 22:42
 Cynthia78 - 21 mars 2016 à 10:38
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 :)

3 réponses

KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
24 févr. 2016 à 22:54
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 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
26 févr. 2016 à 10:19
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
Merci à tous pour vos réponses, je commence un peu à voir à quoi tout cela rime :)
0