human
Langages de programmation orientés objet POO VS procédurale et pourquoi tout le monde dit que c'est un concept si important à comprendre pour moi ; mais alors je ne peux pas donner une description claire de l'un ou de l'autre ou pourquoi ? Merci ! Explique comme si j'avais cinq ans.
gpt
Notez que dans les exemples suivants, j'utilise une terminologie POO assez standard, mais les choses peuvent varier selon la langue. L'idée de base de la POO est que vous décrivez votre programme comme un ensemble d'objets, chacun ayant ses propres données et comportements. Par exemple , un jeu peut avoir un objet Joueur contenant les données " santé " , " vitesse " et " force " , et contenant les comportements " Se déplacer avec une saisie au clavier " , " perdre de la santé ( et éventuellement mourir ) " et " boire potion de vie " . Supposons maintenant que nous voulions ajouter des joueurs IA ou des joueurs en réseau. Du coup nous avons besoin que notre classe Player soit plus flexible ! Le comportement " Déplacer avec une saisie au clavier " n'est plus acceptable . Un moyen simple de résoudre ce problème consiste à transformer Player en quelque chose appelé une classe " de base " : remplacez " Move with keyboard input " par le plus générique " Move with some kind of input " , puis créez des " classes enfants " appelées HumanPlayer , NetworkedPlayer , et AIPlayer qui gèrent tous leur "déplacement avec une sorte d'entrée" de différentes manières. C'est ce qu'on appelle « l'héritage » : définir des classes enfants qui agissent comme une version spéciale de la classe de base ou « parent ». A côté de l'héritage, il y a le « polymorphisme » et « l'encapsulation ». Votre jeu pourrait stocker une liste de "Joueurs", dont chacun est l'un des types de Joueurs enfants, et appeler chacun de leurs "Déplacement avec une sorte d'entrée" sans se soucier du type de chaque Joueur ! Si vous voulez un nouveau joueur en réseau , ajoutez simplement un nouveau NetworkedPlayer à la liste -- le jeu ne se soucie pas de quel type de joueur il est ; il exécute simplement ses comportements comme il le ferait avec n'importe quel autre joueur. En d'autres termes, la responsabilité de gérer tout le code réseau de ce lecteur est « encapsulée » dans la classe NetworkedPlayer, donc personne d'autre n'a à s'en soucier, à s'en soucier, ou même à * le savoir *. C'est le principal avantage de la POO : un moyen puissant de grouper du code de sorte que les autres groupes de code n'aient à se soucier que de l'interface extérieure qu'il expose, et non de tout ce qui pourrait se passer en dessous. Edit : fautes de frappe