CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

polymorphisme comprend rien

bobtriguette32
bobtriguette32
Niveau 6
26 juillet 2004 à 16:39:55

salut,
je comprend l´héritage les classes les objets et tout et tout mais au polymorphismes je bloque
merci de m,aider a comprendre .

Altonfrere
Altonfrere
Niveau 10
26 juillet 2004 à 16:45:22

bin déjà est ce que tu comprends le mot en lui-même ? que veux dire polymorphisme d´après toi ( sans parler de programmation...)

JeanYvesYves
JeanYvesYves
Niveau 10
26 juillet 2004 à 16:57:20

judicieuse remarque Aitonfrere,

dis nous ce que tu penses du polymorphisme, en général, et j´essaierai d´adapter une réponse à cela, en fonction de ce que tu réponds :)

De toute façon, si tu ne masterise pas encore le C++, le polymorphisme n´est pas primordial :) tu eux t´en passer.

luxregina
luxregina
Niveau 10
26 juillet 2004 à 17:04:53

Je ne peux que donner un début de réponse de ce que j´imagine être le polymorphisme de Classes :

Ce sont des classes qui contiennent une structure, une architecture, des methodes abstraites qui seront capables de dériver des classes différentes, mais toutes basées sur cette structure héritée : elles sont dites polymorphes car elles peuvent générer des classes aux méthodes analogues, mais aux finalités très différentes . ..

Ceci dit, n´ayant jamais utilisé ce concept, je suis peut être à coté de la plaque

lag-it
lag-it
Niveau 10
26 juillet 2004 à 17:25:42

C´est ce que dis luxregina.

Par exemple :

Imaginons une classe FigureGeometrique ( les exemples classiques, mais bon :) ) .

Cette classe ( pure ou non, à la limite on s´en fiche ) contient une fonction virtuelle nommée " Draw" ( dessiner ) .

Imaginons maintenant que nous créons 3 nouvelles classes : Cercle, Carre, Triangle, héritant de FigureGeometrique et que nous définissons chaque fonction Draw de la classe en fonction de la forme géométrique associée :

Draw de Cercle trace un cercle.
Draw de Carre trace un carre.
Draw de Triangle trace un Triangle.

Considérons maintenant que nous instancions un objet de chacune de ces 3 classe et créons un pointeur vers un Objets FigureGeometrique :

Triangle fig1;
Carre fig2;
Cercle fig3;

FigureGeometrique *ptr;

Maintenant, si on affect à ptr l´addresse de fig1 et que l´on appelle Draw par le biais de ce pointeur ainsi :

ptr = &1;
ptr->Draw();

La figure qui va se dessiner sera un Triangle.

De même avec fig2 :

ptr = &2;
ptr->Draw();

Qui dessinera un carré.
Etc...
Tout ca grâce à la vtable qui assure l´appel de la fonction appropriée.

L´intérêt, c´est par exemple :

Imaginons un monde virtue du genre Quake3.
Celui ci est peuplé de nombreuses entités très diverses : joueurs, armes, particules, roquettes.
Il suffit de créer une classe de base Entity avec un membre virtuel Draw par exemple, que l´on définira ensuite pour chaque classe : Joueurs, Armes, Particules, Roquettes.
Ainsi, au moment de l´affichage, il suffira d´utiliser un tableau de pointeur vers chaque entité du monde pour l´afficher simplement, sans passer par un schéma classique :

D´abors afficher les joueurs, puis les armes, puis . .. avec des whiles.

En outre, l´avantage du polymorphisme vient du fait que le programme que tu écrit actuellement est apte à utiliser des objets qui n´existent pas encore au moment de sa conception : reprenons l´exemple des figures géométriques.
Il n´y en a que 3 types ppour l´instant, mais en rajouter un quatrième est chose aisée pouisqu´il suffit d´hériter un nouvelle classe.
Le système d´affihage quand à lui n´aura pas besoin d´être modifié car utilisant un pointeur vers la classe de base FigureGeometrique.

Le Polymorphisme est réellement un outils très puissant :)

luxregina
luxregina
Niveau 10
26 juillet 2004 à 17:36:47

cool ! j´avais pas faux :) :)

http://www.inrialpes.fr/sherpa/people/genoud/DESSIDC/cours/heritage2/heritage2.htm

bobtriguette32
bobtriguette32
Niveau 6
26 juillet 2004 à 18:53:38

merci beaucoupe pour vos réponse je comprend maintenant mais j´ai une autre question a quoi serve les constructeur et destructeur exactment merci

lag-it
lag-it
Niveau 10
26 juillet 2004 à 19:24:47

Les constructeurs et destructeurs, c´est génial :)
En fait le constructeur est appelé lors de la création de l´objet et le destructeur est appelé lors ( avant ) de sa destruction.
C´est quoi l´intérêt ?
Initialiser les données, désalouer de la mémoire allouée dynamiquement avant la destruction de l´objet, faire office de constructeur de copie.

Mais achète toi un bouquin si ce n´est déjà fait, et lit le car le language C++ est très ( trop?) vaste :)

Lapintade
Lapintade
Niveau 30
26 juillet 2004 à 19:26:25

Le système d´affihage quand à lui
n´aura pas besoin d´être modifié
car utilisant un pointeur vers la
classe de base FigureGeometrique

Ce que tu decrit lag-it peut etre fait avec le systeme d´heritage. Pas besoin de " polymorphisme".

Moi je sais pas ce que c´est et j´en ai jamais vu utilisé dans les jeux . .. C´est le genre de truc a la con du C++ qui est un peu trop complexe et inutile, du coup a part les " C++ lovers for ever", personne ne l´utilise car personne ne comprends a quoi ca peut servir :)

Voila ma definition du polymorphisme . ..

C´est comme l´heritage multiple . .. dangereux . .. bouhhhhh.

Altonfrere
Altonfrere
Niveau 10
26 juillet 2004 à 19:31:35

" C´est le genre de truc a la con du C++ qui est un peu trop complexe et inutile, du coup a part les " C++ lovers for ever", personne ne l´utilise car personne ne comprends a quoi ca peut servir "

tu t´en es surement servi sans t´en rendre compte j´imagine . ..

Comment ferais-tu pour utiliser une liste d´objets héritant de la même classe ?

prend cet exemple :

class Creature :
{
blabla
};

class Troll : public Creature
{
bleble
}

class Dragon : public Creature
{
blibli
};

Troll UnTroll;
Troll UnAutreTroll;
Dragon LeMechantDragon;
Dragon LeGentilDragon;

tu stockes comment tout ca dans une liste ? ( pas de cast en void* please. . .) ?

Lapintade
Lapintade
Niveau 30
26 juillet 2004 à 19:34:37

Ben je gere tout ca en type " Creature" . ..

C´est l´heritage n´est il pas ?

Lapintade
Lapintade
Niveau 30
26 juillet 2004 à 19:39:33

Ils en parle meme pas dans mon bouquin :)

Pour moi ca fait partie de l´heritage et des notions que ca entraine. Je savais pas que ca avait un nom . ..

Bon ben tant mieux ca a un nom. Mais bon, on peut vivre sans savoir que ca s´appelle comme ca :)

Altonfrere
Altonfrere
Niveau 10
26 juillet 2004 à 19:40:37

oui mais on appele ca également du polymorphisme d´objet car les éléments de la liste peuvent être à la fois de Troll ou des Dragons . ..

pour aller plus loin tu peux avoir du polymorphisme de méthodes..

imaginons que dans créature on ait la fonction :

virtual void Hit(...); / / pour frapper qqun

chaque créature pourra redéfinir sa facon de frapper . ..

et via la liste :

Creature *pListCreatures;

pListCreatures->Hit(...);

l´appel ira chercher la bonne méthode ( celle de l´objet concerné).

Lapintade
Lapintade
Niveau 30
26 juillet 2004 à 19:48:35

Ok.

Comme tu dis, j´utilise deja ce genre de chose.

C´est l´essence meme de l´heritage et le concept de fonctions virtuelles . .. ( d´avoir une implementation differente suivant les classes, mais qu´on puisse les manipuler a un niveau d´abstraction assez haut pour qu´on ait pas a s´occuper de ses differences).

Altonfrere
Altonfrere
Niveau 10
26 juillet 2004 à 19:49:21

voilà bin c´est pas si dangereux que ca, et même très pratique :)

Lapintade
Lapintade
Niveau 30
26 juillet 2004 à 20:05:04

Ah ben non c´est pas dangereux du tout . ..

C´est le nom qui fait peur ! !!! ahahahah

lag-it
lag-it
Niveau 10
26 juillet 2004 à 20:38:35

" C´est le genre de truc a la con du C++ qui est un peu trop complexe et inutile, du coup a part les " C++ lovers for ever", personne ne l´utilise car personne ne comprends a quoi ca peut servir"

C´est peut être un peu caricatural car c´est vraiment un concept très utile et puissant du langage :)
Mais ca c´est comme l´orienté objet : au début ca fait gadget et on peut très bien s´en passer, mais quand on se plonge vraiment dedans on se rends compte que c´est très pratique, bien que l´on puisse parfaitement se passer du polymorphisme.
Mais énormément de gens s´en passent.

lag-it
C++ lover for ever :-)))

Lapintade
Lapintade
Niveau 30
26 juillet 2004 à 20:44:25

lag-it > Fallait lire ce que j´ai ecrit aprés.

Le polymorphisme est trés interressant, mais pour moi c´est simplement une facon d´utiliser l´heritage et les fonctions virtuelles . ..

En fait j´ai confondu avec des trucs plus space comme l´heritage multiple par exemple. Je pensais que c´etait un truc comme ca le polymorphisme . ..

Me suis trompé. C´est cool le polymorphisme :) :)

lag-it
lag-it
Niveau 10
26 juillet 2004 à 22:28:50

J´avais survolé :)
Mais c´est vrai que l´héritage multiple est un peu plsu spécial, ca je m´en sert vraiment jamais.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment