guilhemmartincpp
Messages postés25Date d'inscriptionmercredi 17 septembre 2003StatutMembreDernière intervention 9 janvier 2008 20 oct. 2006 à 21:20
On pourrait discuter longuement sur les mots. Je ne suis pas d'accord avec toi mais je te remercie d'avoir apporté un terme plus précis dans tous les cas.
brlecler
Messages postés3Date d'inscriptionlundi 13 septembre 2004StatutMembreDernière intervention13 février 2009 20 oct. 2006 à 20:56
He bien justement il s'agit bien là d'une classe donc d'une METHODE et non d'une fonction. La fonction est réservé à la seule programmation structurée.
De plus si Wikipédia est une source très interressante il ne s'agit surtout pas d'un référentiel académique. Il contient beaucoup d'erreur et en l'occurence ici un grosse imprécision.
Donc question terminologie le terme de fonction est tout simplement "FAUX".
guilhemmartincpp
Messages postés25Date d'inscriptionmercredi 17 septembre 2003StatutMembreDernière intervention 9 janvier 2008 20 oct. 2006 à 19:38
@brlecler :
Extrait de wikipedia :
Méthode : "En programmation orientée objet, la méthode est une fonction faisant partie de l'interface d'un objet."
Fonction : "En informatique, une fonction est un ensemble d'instructions réalisant une certaine tâche."
Donc question terminologie, tout va bien, même si j'aurais pu être plus précis.
guilhemmartincpp
Messages postés25Date d'inscriptionmercredi 17 septembre 2003StatutMembreDernière intervention 9 janvier 2008 20 oct. 2006 à 19:28
@Budo : si tu es dans un projet qui s'occupe par exemple de calculer des temps de parcours suivant un mode de transport. On peut imaginer une classe de base Transport et des classes dérivées Voiture, Avion, Train, qui ont chacune leurs méthodes CalculerTempsParcours. Si tu obtiens une liste de Transport*, tu pourras calculer le temps de parcours en appelant CalculerTempsParcours : le compilateur se chargera d'appeler la bonne méthode sans que tu en aies à te soucier.
Tu peux exécuter le code suivant pour que ça te paraisse plus clair :
class Transport {
public:
Transport() {}
virtual int CalculerTempsParcours()=0;
};
class Voiture:public Transport {
public:
Voiture() {}
virtual int CalculerTempsParcours() {std::cout << "CalculerTempsParcours de voiture" << std::endl; return 45;}
};
class Train:public Transport {
public:
Train() {}
virtual int CalculerTempsParcours() {std::cout << "CalculerTempsParcours de train" << std::endl; return 15;}
};
Côté inconvénient, je crois qu'il s'agit d'une question de performance. Tu auras des pertes de performance en utilisant le mot clé 'virtual'. Donc si tu n'en as pas besoin, il faut veiller à ne pas l'utiliser...
brlecler
Messages postés3Date d'inscriptionlundi 13 septembre 2004StatutMembreDernière intervention13 février 2009 20 oct. 2006 à 08:41
Je vous rappelle qu'en langage objet, ce que vous appelez "Fonction" s'appelle en réalite une "Méthode".
La moindre des choses pour y comprendre quelque chose en informatique est d'utiliser la bonne terminologie!
cs_budo
Messages postés5Date d'inscriptionmercredi 3 mars 2004StatutMembreDernière intervention 7 juillet 2015 17 oct. 2006 à 11:20
bonjour,
dit bon tu obtient la meme chose ok ,
mais pourquoi utiliser virtuel svp (peut etre bete la question ...)
y a t-il un avantage ou un inconvenient
merci de répondre ça m'intéresse
guilhemmartincpp
Messages postés25Date d'inscriptionmercredi 17 septembre 2003StatutMembreDernière intervention 9 janvier 2008 11 oct. 2006 à 21:34
Salut Matt,
merci pour ta participation.
Dans ton cas, il s'agit d'une fonction virtuelle pure avec le "virtual void quisuisje() = 0;". Tu construis ainsi une classe abstraite donc non instanciable et tu obliges les classes dérivées à implémenter leurs propres méthodes "quisuisje".
cs_Matt67
Messages postés549Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention 6 mars 20103 11 oct. 2006 à 21:15
bonsoir,
voici la façon dont j'utilise les fonctions virtuelles :
#include
class mere
{
public:
virtual void quisuisje() = 0;
};
class fille : public mere
{
public:
virtual void quisuisje();
};
void fille::quisuisje()
{
std::cout << "je suis la fille" << std::endl;
}
class fils : public mere
{
public:
virtual void quisuisje();
};
void fils::quisuisje()
{
std::cout<< "je suis le fils" << std::endl;
}
20 oct. 2006 à 21:20
Quant à la valeur de wikipedia, c'est Off Topic, mais je te renvoie pour ton info personnelle à l'article intéressant http://fr.wikipedia.org/wiki/Wikipedia#Encyclop.C3.A6dia_Britannica_et_Wikip.C3.A9dia .
20 oct. 2006 à 20:56
De plus si Wikipédia est une source très interressante il ne s'agit surtout pas d'un référentiel académique. Il contient beaucoup d'erreur et en l'occurence ici un grosse imprécision.
Donc question terminologie le terme de fonction est tout simplement "FAUX".
20 oct. 2006 à 19:38
Extrait de wikipedia :
Méthode : "En programmation orientée objet, la méthode est une fonction faisant partie de l'interface d'un objet."
Fonction : "En informatique, une fonction est un ensemble d'instructions réalisant une certaine tâche."
Donc question terminologie, tout va bien, même si j'aurais pu être plus précis.
20 oct. 2006 à 19:28
Tu peux exécuter le code suivant pour que ça te paraisse plus clair :
std::list<Transport*> transports;
Voiture* clio=new Voiture();
Train* corail4598=new Train();
transports.push_back(corail4598);
transports.push_back(clio);
for(std::list<Transport*>::const_iterator t=transports.begin();t!=transports.end();t++) {
(*t)->CalculerTempsParcours();
}
avec les classes qui vont avec :
class Transport {
public:
Transport() {}
virtual int CalculerTempsParcours()=0;
};
class Voiture:public Transport {
public:
Voiture() {}
virtual int CalculerTempsParcours() {std::cout << "CalculerTempsParcours de voiture" << std::endl; return 45;}
};
class Train:public Transport {
public:
Train() {}
virtual int CalculerTempsParcours() {std::cout << "CalculerTempsParcours de train" << std::endl; return 15;}
};
Côté inconvénient, je crois qu'il s'agit d'une question de performance. Tu auras des pertes de performance en utilisant le mot clé 'virtual'. Donc si tu n'en as pas besoin, il faut veiller à ne pas l'utiliser...
20 oct. 2006 à 08:41
La moindre des choses pour y comprendre quelque chose en informatique est d'utiliser la bonne terminologie!
17 oct. 2006 à 11:20
dit bon tu obtient la meme chose ok ,
mais pourquoi utiliser virtuel svp (peut etre bete la question ...)
y a t-il un avantage ou un inconvenient
merci de répondre ça m'intéresse
11 oct. 2006 à 21:34
merci pour ta participation.
Dans ton cas, il s'agit d'une fonction virtuelle pure avec le "virtual void quisuisje() = 0;". Tu construis ainsi une classe abstraite donc non instanciable et tu obliges les classes dérivées à implémenter leurs propres méthodes "quisuisje".
11 oct. 2006 à 21:15
voici la façon dont j'utilise les fonctions virtuelles :
#include
class mere
{
public:
virtual void quisuisje() = 0;
};
class fille : public mere
{
public:
virtual void quisuisje();
};
void fille::quisuisje()
{
std::cout << "je suis la fille" << std::endl;
}
class fils : public mere
{
public:
virtual void quisuisje();
};
void fils::quisuisje()
{
std::cout<< "je suis le fils" << std::endl;
}
void ecrit(mere *pTesQui)
{
pTesQui->quisuisje();
}
int main()
{
fille soeurette;
fils frerot;
ecrit(&soeurette);
ecrit(&frerot);
return 0;
}
voili, voilou,
Matt...
11 oct. 2006 à 08:14
11 oct. 2006 à 01:01