L'un des avantages les plus importants de la POO et que bizarement personne ne donne, c'est justement les objets.
Beaucoup de programmeurs POO font du procédurale sans réelement le savoir. Il crée un objet Héros, ensuite il gerent ces points de vie dans la classe GamePlay. Ce n'est absolument pas de la POO. C'est comme créer une simple structure en C.
La vrai force de la POO c'est que chaque entité peut gérer ses caractéristique de maniére transparente et indépendante.
Je sais pas si je m'exprime bien, mais je donne un exmeple :
(Une attaque) :
Procédurale :
POO
L'avantage est énorme :
La compléxité apparente de la POO vient de certaines notions qui sont il faut l'avouer assez difficile (Héritage multiples, Polymorphisme,Abstraction...)
Toutes ses notions facilite la vie mais ne sont en aucun cas necessaire pour la POO.
Ps: vous remarquerez que le code est plus long. C'est une illusion, le code efficace est en moyenne moindre qu'en Procédurale, mais y'a beaucoup de code structurale ( pour définir les classes, les propriétés...) il y'a plein de generateurs de code qui permettent de generer les structure des classes. Au final, on se retrouve avec une charge de travail moindre.
C'est aussi moins performant que du procédurale ( Si vous récuperez le code source de n'importe quel OS, vous verrez que c'est du procédurale pure. ) Mais pour nous autres codeurs des couche superieurs, cette baisse de performance n'est pas perceptible.
A oui, si vous souhaitez apprendre la POO, ne commencez pas avec du C++ ,Sa puissance est telle que vous serez submérgé par des notions que vous n'utiliserez jamais mais qui vous bloqueront énormément (qui a dit héritage multiple). Ne faite pas de Java non plus. C'est l'un des languages les plus tordus que je connaisse. Le PHP à l'origine n'est pas un langage objet.
Je vous coneille le VB.NET. Le VB est un language basé sur Basic qui à ce jour est le langage le plus proche de l'anglais courant. De plus c'est un language full objet. Vous n'aurez pas à vous préoccupé de notions de Boxing/Unboxing. Il ne gére que le monohéritage, la notions de propriété est géré et non simulé (C++, Java)...
Le C# fera l'affaire aussi, mais vous serez trahi par la ressemblance entre le C++ et le C#, si vous passez aprés au C++.
Beaucoup de programmeurs POO font du procédurale sans réelement le savoir. Il crée un objet Héros, ensuite il gerent ces points de vie dans la classe GamePlay. Ce n'est absolument pas de la POO. C'est comme créer une simple structure en C.
La vrai force de la POO c'est que chaque entité peut gérer ses caractéristique de maniére transparente et indépendante.
Je sais pas si je m'exprime bien, mais je donne un exmeple :
(Une attaque) :
Procédurale :
Code :
Pour tout joueurs [color=#1E90FF]ja[/color] qui va attaquer
pour tout joueurs [color]jd[/color] qui va subir
jd.PV -= ja.DMG
si (jd.PV <= 0) jd.Mort();
finpour
finpour
Code :
Pour tout joueurs [color=#1E90FF]ja[/color] qui va attaquer
pour tout joueurs [color]jd[/color] qui va subir
jd.subit (ja.Attaque())
finpour
finpour
Classe jd
{
subit ( int attaque)
{
this.PV -= attaque;
}
SetPv( int valeur)
{
this.pv = valeut;
mort = ( pv <= 0) ;
}
}
L'avantage est énorme :
- L'état de mort est géré automatiquement à chaque changement des PV
- Si on veut changer le systeme de combat ( pour ajouter de l'esquive par ex), on sait ou chercher, c'est logique. Avant fallait faire une recherche dans plusieurs milliers de codes du module gameplay
- Le code du moteur de jeu est simple à comprendre ( A attaque, B subit ), les details sont laissé pour les classes spécialié
- Changer l'objet joueur n'a aucune incidence directe sur le moteur du jeu.
Citation :Quand on est débutant, généralement on évite de commencer par de la POO. Car c'est une notion assez complexe.Je trouve pas, mais alors la pas du tout. L'esrpit humain percoit le monde en POO.
La compléxité apparente de la POO vient de certaines notions qui sont il faut l'avouer assez difficile (Héritage multiples, Polymorphisme,Abstraction...)
Toutes ses notions facilite la vie mais ne sont en aucun cas necessaire pour la POO.
Ps: vous remarquerez que le code est plus long. C'est une illusion, le code efficace est en moyenne moindre qu'en Procédurale, mais y'a beaucoup de code structurale ( pour définir les classes, les propriétés...) il y'a plein de generateurs de code qui permettent de generer les structure des classes. Au final, on se retrouve avec une charge de travail moindre.
C'est aussi moins performant que du procédurale ( Si vous récuperez le code source de n'importe quel OS, vous verrez que c'est du procédurale pure. ) Mais pour nous autres codeurs des couche superieurs, cette baisse de performance n'est pas perceptible.
A oui, si vous souhaitez apprendre la POO, ne commencez pas avec du C++ ,Sa puissance est telle que vous serez submérgé par des notions que vous n'utiliserez jamais mais qui vous bloqueront énormément (qui a dit héritage multiple). Ne faite pas de Java non plus. C'est l'un des languages les plus tordus que je connaisse. Le PHP à l'origine n'est pas un langage objet.
Je vous coneille le VB.NET. Le VB est un language basé sur Basic qui à ce jour est le langage le plus proche de l'anglais courant. De plus c'est un language full objet. Vous n'aurez pas à vous préoccupé de notions de Boxing/Unboxing. Il ne gére que le monohéritage, la notions de propriété est géré et non simulé (C++, Java)...
Le C# fera l'affaire aussi, mais vous serez trahi par la ressemblance entre le C++ et le C#, si vous passez aprés au C++.