Interface en C++ (non graphique ! )
Résolu/Fermé
Bonjour tout le monde,
J'apprends en ce moment le C++ et j'aimerais trouver un tutoriel pour apprendre à gérer les interfaces.
Quand je parle d'interfaces, ce n'est pas les interfaces graphiques ! (on voit que ça en faisant une recherche :s).
L'interface comme je l'entends c'est une class de prototypages de fonctions ...
Si jamais vous connaissez un bon tuto traitant de cet aspect de la POO en C++ je vous en remercirais !
Bonne journée !
J'apprends en ce moment le C++ et j'aimerais trouver un tutoriel pour apprendre à gérer les interfaces.
Quand je parle d'interfaces, ce n'est pas les interfaces graphiques ! (on voit que ça en faisant une recherche :s).
L'interface comme je l'entends c'est une class de prototypages de fonctions ...
Si jamais vous connaissez un bon tuto traitant de cet aspect de la POO en C++ je vous en remercirais !
Bonne journée !
A voir également:
- Interface en C++ (non graphique ! )
- Changer carte graphique - Guide
- Graphique sparkline - Guide
- Graphique camembert excel - Guide
- Graphique excel - Guide
- Ventilateur carte graphique ne tourne pas - Forum Carte graphique
4 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
11 janv. 2010 à 09:20
11 janv. 2010 à 09:20
Es tu sur du nom en C++ ?
Essai "classe abstraite" peut être.
Essai "classe abstraite" peut être.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
11 janv. 2010 à 10:12
11 janv. 2010 à 10:12
Je pense qu'il ne faut pas essayer d'appliquer en C++ ce que tu as appris en JAVA.
Maintenant, ça me reviens, ce qu'il y a de plus proche d'une interface JAVA en C++ c'est une classe abstraite pure.
En C++ une classe abstraite est une classe ayant des méthodes et fonctions (donc des prototypes) elle est dite virtuel pure (ou abstraite) lorsqu'aucune ne reçoit de définition et virtuelle simple si au moins une méthode n'a pas de définition. Pour moi ça correspond à la définition que tu donnes d'interface. Une classe abstraite ne peux donner directement d'objet (d'instance en JAVA)
Par exemple :
A est une classe abstraite ou virtuel pur et B est une classe virtuel. Les variable "a" et "b" ne peuvent être déclarer car les classes A et B ont au moins une méthode mise à 0.
je ne suis plus certain à 100% des noms, mais en gros c'est ça.
Maintenant, ça me reviens, ce qu'il y a de plus proche d'une interface JAVA en C++ c'est une classe abstraite pure.
En C++ une classe abstraite est une classe ayant des méthodes et fonctions (donc des prototypes) elle est dite virtuel pure (ou abstraite) lorsqu'aucune ne reçoit de définition et virtuelle simple si au moins une méthode n'a pas de définition. Pour moi ça correspond à la définition que tu donnes d'interface. Une classe abstraite ne peux donner directement d'objet (d'instance en JAVA)
Par exemple :
class A { virtual double tt()=0; virtual void affiche()=0; }; class B { virtual double abv();//return 534.2 par exemple virtual void affiche()=0; }; B b;//erreur A a;//erreur
A est une classe abstraite ou virtuel pur et B est une classe virtuel. Les variable "a" et "b" ne peuvent être déclarer car les classes A et B ont au moins une méthode mise à 0.
je ne suis plus certain à 100% des noms, mais en gros c'est ça.
D'accord merci pour cette précision. Donc du coup si par exemple en C++ on essai de faire une "interface comme en Java" disons l'interface "véhicule" ayant les méthodes : freiner, accélerer, démarrer,
en C++ cette "interface" sera une classe abstraite ou virtuelle pure ?
Mais comment doit-elle se coder ? (sur l'exemple de "l'interface Java vehicule" )
en C++ cette "interface" sera une classe abstraite ou virtuelle pure ?
Mais comment doit-elle se coder ? (sur l'exemple de "l'interface Java vehicule" )
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
11 janv. 2010 à 10:44
11 janv. 2010 à 10:44
Je ne connais pas assez bien JAVA.
Et ensuite dans un .h :
et dans le .cpp :
ensuite, lorsque tu fais des pointeurs sur vehicule tu appeleras la méthodes renault::freiner() ou peugeot::freiner() en fonction de l'objet réellement pointé.
class vehicule { virtual void freiner() =0; virtual void accelerer()=0; virtual void demarrer()=0; }
Et ensuite dans un .h :
class renault : public vehicule { void freiner(); void accelerer(); void demarrer(); }
et dans le .cpp :
void renault::freiner() {...} void renault::accelerer() {...}
ensuite, lorsque tu fais des pointeurs sur vehicule tu appeleras la méthodes renault::freiner() ou peugeot::freiner() en fonction de l'objet réellement pointé.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
11 janv. 2010 à 11:58
11 janv. 2010 à 11:58
pas de main.h (c'est l'exception)
Le mieux c'est de faire un exemple.
Le mieux c'est de faire un exemple.
#include "renault.h" #include "peugeot.h"// vehicule.h est logiquement inclus dans ces fichiers, pas la peine de l'ajouter. véhicule* tab[N];//tableau de N pointeurs sur véhicule renault v1,v2; peugeot p1,p2,p3; int main() { tab[0]=&v1; tab[1]=&v2; tab[2]=&p1; tab[3]=&p2; tab[4]=&p3; for (int n=0;n<N;++n) tab[n]->freiner(); return 0; }
11 janv. 2010 à 09:45
En Java, la classe abstraite permet de faire une classe avec des méthodes communes.
L'héritage c'est encore autre chose et l'interface c'est un ensemble de ptototypage de méthodes et l'interface ne peut pas etre instancier.
En fait je pense pas mélanger ces différentes notions mais peut être qu'en langage C++, le concept d'interface proprement dit n'existe pas ...
Qu'en pensez-vous?