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?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
fabrizio
24/04/2006 16:03 - Zulfukar Arslan :
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.
24/04/2006 16:03 - Zulfukar Arslan :
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.
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.
Sylvain
Zulfukar Arslan wrote on 24/04/2006 16:03:
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.
Zulfukar Arslan wrote on 24/04/2006 16:03:
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.
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.
kanze
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 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
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
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
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.
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
Zulfukar Arslan
kanze wrote:
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.
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
kanze wrote:
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.
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
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.
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
Aurelien Regat-Barrel
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
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.
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.