Fonctions abstraites
Résolu/Fermé
olivbarb
Messages postés
303
Date d'inscription
dimanche 5 août 2007
Statut
Membre
Dernière intervention
10 mars 2013
-
4 avril 2009 à 21:01
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 5 avril 2009 à 12:27
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 5 avril 2009 à 12:27
A voir également:
- Fonctions abstraites
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Impossible d'installer hyper-v le processeur ne dispose pas des fonctions de virtualisation requises ✓ - Forum Hyper-V
- Ce document a activé les fonctions etendues d'adobe reader ✓ - Forum Windows
- Fonctions si - Guide
- Fonctions excel en anglais - Guide
3 réponses
Je ne connais pas Java mais le C++ et je suppose que ça se passe de la même manière.
Il y a une bonne raison pour déclarer des fonctions comme virtuelles:
- c'est la seule manière de déclarer des classes abstraites. Si une classe contient une fonction virtuelle alors la classe est abstraite; ce qui est logique puisqu'on ne peut instancier une classe dont une des fonctions n'est pas définie.
D'autre part l'avantage des fonctions virtuelles est justement de forcer à redéfinir ces fonctions dans les classes dérivées car la classe mère (qui est une classe généraliste) n'a pas de solution à offrir pour ces fonctions (qui sont spécifiques à chaque classe dérivée).
Il y a une bonne raison pour déclarer des fonctions comme virtuelles:
- c'est la seule manière de déclarer des classes abstraites. Si une classe contient une fonction virtuelle alors la classe est abstraite; ce qui est logique puisqu'on ne peut instancier une classe dont une des fonctions n'est pas définie.
D'autre part l'avantage des fonctions virtuelles est justement de forcer à redéfinir ces fonctions dans les classes dérivées car la classe mère (qui est une classe généraliste) n'a pas de solution à offrir pour ces fonctions (qui sont spécifiques à chaque classe dérivée).
Question de portabilité aussi
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
5 avril 2009 à 12:16
5 avril 2009 à 12:16
Salut,
Question de portabilité aussi
Non, cela n'a rien à voir avec la portabilité.
Question de portabilité aussi
Non, cela n'a rien à voir avec la portabilité.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
5 avril 2009 à 12:27
5 avril 2009 à 12:27
Salut,
L'intérêt de la fonction abstraite réside dans la conception. Cela a particulièrement un sens lorsque tu fais un diagramme d'UML. Un exemple : imagine que tu souhaites instancier des animaux et leur faire faire des actions comme crier. Pour cela, pour faire plus propre tu vas créer une classe abstraite Animal avec une méthode abstraite crier(). Tu ne peux pas définir la méthode dans la classe Animal car cela dépend du nom de l'animal. Et ensuite, si tu choisis de créer une classe Chien, tu la fais hériter d'Animal, tu définis la méthode creer() pour dire qu'il s'agit de l'aboiement. Et tu continues avec d'autres animaux. Voilà grosso modo la philosophie. ^^.
Cdlt
L'intérêt de la fonction abstraite réside dans la conception. Cela a particulièrement un sens lorsque tu fais un diagramme d'UML. Un exemple : imagine que tu souhaites instancier des animaux et leur faire faire des actions comme crier. Pour cela, pour faire plus propre tu vas créer une classe abstraite Animal avec une méthode abstraite crier(). Tu ne peux pas définir la méthode dans la classe Animal car cela dépend du nom de l'animal. Et ensuite, si tu choisis de créer une classe Chien, tu la fais hériter d'Animal, tu définis la méthode creer() pour dire qu'il s'agit de l'aboiement. Et tu continues avec d'autres animaux. Voilà grosso modo la philosophie. ^^.
Cdlt