 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Zulfukar Arslan Guest
|
Posted: Mon Apr 24, 2006 3:06 pm Post subject: fonction et classe virtuelle |
|
|
Bonjour a tous,
Pouvez-vous me donner un exemple concret de l'utilité des fonctions (et
classe) virtuelles, et me dire en quoi la virtualité est l'essence même
de la programmation objet?
Merci. |
|
| Back to top |
|
 |
fabrizio Guest
|
Posted: Mon Apr 24, 2006 3:06 pm Post subject: Re: fonction et classe virtuelle |
|
|
24/04/2006 16:03 - Zulfukar Arslan :
| Quote: | Pouvez-vous me donner un exemple concret de l'utilité des fonctions (et
classe) virtuelles, et me dire en quoi la virtualité est l'essence même
de la programmation objet?
|
Un exemple naïf c'est faisable :
class Objet {
[...]
public :
[...]
virtual Imprimer();
};
class Carre: public Objet {
[...]
Imprimer();
};
class Cercle: public Objet {
[...]
Imprimer();
};
int main(void) {
Objet* tableau[10];
Carre* ca1, ca2, ca3;
Cercle* ce1, ce2, ce3;
[ tous les new nécessaire ]
for(int i=0;i<10;i++) {
tableau[i]->Imprimer();
}
return(0);
}
C'est très naïf et l'intérêt est dans le principe qui est, en (très)
gros, une sorte de factorisation des propriétés et comportements communs
à plusieurs objets.
Maintenant si vous ne voyez pas l'intérêt, ce n'est pas moi qui vous
l'expliquerait.
En espérant que je n'aie pas dit trop de sottise. |
|
| Back to top |
|
 |
Sylvain Guest
|
Posted: Mon Apr 24, 2006 7:06 pm Post subject: Re: fonction et classe virtuelle |
|
|
Zulfukar Arslan wrote on 24/04/2006 16:03:
| Quote: | Pouvez-vous me donner un exemple concret de l'utilité des fonctions (et
classe) virtuelles, et me dire en quoi la virtualité est l'essence même
de la programmation objet?
|
il y a 2 concepts objet sous tendus par la "virtualité" (terme que l'on
ne rencontrera donc pas couramment):
- l'héritage qui permet de définir des familles de classes du plus
générique au plus spécifique, les méthodes déclarées virtuelles dans une
classe parent pourront être redéfinies pour rendre plus précis / dédié
(spécifique, ...) le comportement de la nouvelle classe fille.
(l'héritage sans mécanisme virtuel ne serait qu'une sorte d'aggrégation)
- le polymorphisme (qui repose sur l'héritage) qui permet de gérer un
ensemble d'instances ayant des comportements distincts comme un ensemble
homogène que l'on manipulera d'une façon unique - et ce traitement
unique reposera sur la grammaire exposée par les méthodes virtuelles
définis par un parent commun aux instances impliquées.
Sylvain. |
|
| Back to top |
|
 |
kanze Guest
|
Posted: Tue Apr 25, 2006 7:06 am Post subject: Re: fonction et classe virtuelle |
|
|
Zulfukar Arslan wrote:
| Quote: | Pouvez-vous me donner un exemple concret de l'utilité des
fonctions (et classe) virtuelles,
|
Les fonctions virtuelles sont la technique qu'utilise le C++ (et
beaucoup d'autres langages) pour assurer la polymorphisme
dynamique. En C++, au moins, en revanche, il n'y a pas de
classes virtuelles -- est-ce que tu voulais dire l'héritage
virtuel ? En C++, l'héritage virtuel permet un graphe orienté
acyclique arbitraire pour l'héritage, plutôt que seulement une
simple arborescence -- en gros, si on veut qu'une classe de base
soit la cible de plus d'un segment, il faut utiliser l'héritage
virtuel.
| Quote: | et me dire en quoi la virtualité est l'essence même de la
programmation objet?
|
Tout dépend de la définition de la programmation objet qu'tu
t'es donnée, mais dans la plupart des définitions, la
polymorphisme dynamique a un rôle important.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34 |
|
| Back to top |
|
 |
Zulfukar Arslan Guest
|
Posted: Tue Apr 25, 2006 1:06 pm Post subject: Re: fonction et classe virtuelle |
|
|
kanze wrote:
| Quote: | Zulfukar Arslan wrote:
Pouvez-vous me donner un exemple concret de l'utilité des
fonctions (et classe) virtuelles,
Les fonctions virtuelles sont la technique qu'utilise le C++ (et
beaucoup d'autres langages) pour assurer la polymorphisme
dynamique. En C++, au moins, en revanche, il n'y a pas de
classes virtuelles -- est-ce que tu voulais dire l'héritage
|
Je parlais bien de classe virtuelle. J'ai cru comprendre qu'une classe
etait virtuelle si elle avait une
fonction membre virtuelle pure.
| Quote: | virtuel ? En C++, l'héritage virtuel permet un graphe orienté
acyclique arbitraire pour l'héritage, plutôt que seulement une
simple arborescence -- en gros, si on veut qu'une classe de base
soit la cible de plus d'un segment, il faut utiliser l'héritage
virtuel.
et me dire en quoi la virtualité est l'essence même de la
programmation objet?
Tout dépend de la définition de la programmation objet qu'tu
t'es donnée, mais dans la plupart des définitions, la
polymorphisme dynamique a un rôle important.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
|
|
|
| Back to top |
|
 |
Aurelien Regat-Barrel Guest
|
Posted: Tue Apr 25, 2006 2:06 pm Post subject: Re: fonction et classe virtuelle |
|
|
Zulfukar Arslan a écrit :
| Quote: | Les fonctions virtuelles sont la technique qu'utilise le C++ (et
beaucoup d'autres langages) pour assurer la polymorphisme
dynamique. En C++, au moins, en revanche, il n'y a pas de
classes virtuelles -- est-ce que tu voulais dire l'héritage
Je parlais bien de classe virtuelle. J'ai cru comprendre qu'une classe
etait virtuelle si elle avait une
fonction membre virtuelle pure.
|
On parle alors de classe abstraite.
--
Aurélien Regat-Barrel |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|