C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

fonction et classe virtuelle

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Zulfukar Arslan
Guest





PostPosted: Mon Apr 24, 2006 3:06 pm    Post subject: fonction et classe virtuelle Reply with quote



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





PostPosted: Mon Apr 24, 2006 3:06 pm    Post subject: Re: fonction et classe virtuelle Reply with quote



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





PostPosted: Mon Apr 24, 2006 7:06 pm    Post subject: Re: fonction et classe virtuelle Reply with quote



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





PostPosted: Tue Apr 25, 2006 7:06 am    Post subject: Re: fonction et classe virtuelle Reply with quote

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





PostPosted: Tue Apr 25, 2006 1:06 pm    Post subject: Re: fonction et classe virtuelle Reply with quote

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





PostPosted: Tue Apr 25, 2006 2:06 pm    Post subject: Re: fonction et classe virtuelle Reply with quote

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
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.