Article pourri de Molok pour http://funkywork.blogspot.comPremière partie
IntroductionL’orienté objet est un manière de programmer. Dans les langages de programmation,
il existe une classification plus ou moins précises des langages. Ils
sont ordonnés par paradigme.
Dans cette rédaction, nous n’étudierons pas de code mais nous approcherons et
tenterons définir ce qu’un est objet et quel est son principe.
J’ai entâmé l’écriture de cet article car, bien qu’ayant lu plusieurs tutoriels tentant
d’expliquer la notion d’objet, je suis souvent tombé face à des cours qui
(selon moi) sont peut rigoureux et tente d’arriver trop vite à du concret. Hors,
j’ai toujours apprécié une approche théorique solide pour permettre une pratique
plus aisée.
1 Un paradigme ?Le mot paradigme peut parraître barbare et nouveau pour certains alors que
pour d’autre il sera clair. Par soucis de compréhension, nous allons commencer
par expliquer ce mot qui risque de revenir souvent. Il serait possible de le définir
avec des termes complex, cependant, je préfère me limiter à une définition
concise et claire : un paradigme est un model, un gabarit.
Quand on parle donc de Paradigme dans les classifications des langages il s’agit
d’une model respecté par les autres langage issus du même paradigme quant à
la manière de programmer.
Le paradigme le plus intuitif est la programmation séquentielle qui exécute du
haut vers le bas les commandes écrites (comme par exemple en ASM8886 et
autre). La programmation procédurale est, comme son nom l’indique, un model
de programmation qui répartit le code sous forme de procédures (souvent
appellées fonctions) qui seront, dans le programme mère, appelé pour exécuter
des tâches précises.
Comme cet article ne porte pas sur les différents paradigme, nous nous arrêterons
ici, sachez cependant qu’il existe une grande quantité de paradigme
(fonctionnel, concurrentiel, moléculaire etc.)
2 Pré-requisComme ce cours n’a pas pour vocation de produire du code, mais d’expliquer
et de décrire le paradigme Orienté Objet, aucun pré-requis n’est demandé. Sauf
peut être savoir lire, mais si vous êtes arrivé à cette section, c’est surement que
vous le savez.
Deuxième partieL’Orienté ObjetL’Orienté Objet (OO ou POO pour programmation Orientée Objet) n’est
vraiment pas mon paradigme favoris. Il n’est reste pas moins intéressant et, dans
le contexte du Game Making, sous Rpg Maker XP et VX, le langage utilisé pour
l’élaboration de script et donc de systèmes personnalisé et le RUBY qui est un
langage de programmation Orienté Objet. Ce cours est donc une introduction
intéressante à la création de script Rpg Maker.
3 Tout est Objet !L’idée principale de la POO est que tout est Objet, derrière cette phrase
facilement compréhensible, une première question surgit : "‘Qu’est ce qu’un
Objet"’ dans la programmation orienté objet ?
Et bien dans un langage "‘full-objet"’, car nous verrons plus tard que certains
langages n’implémentes que partiellement le paradigme, tout les élements utilisé
par la syntaxe sont des objets. Nous allons faire un parallèle avec le monde réel
et non virtuel pour comprende ce que j’explique.
4 Les objets en rapport avec le mondeCe titre de section est particulièrement pompeux cependant, je trouves qu’une
comparaison avec la vie réelle est une approche qui facilité la compréhension du
paradigme.
Nous allons admettre que dans notre vie, tout est objet. Par exemple, une voiture
est un objet mais c’est aussi le cas des habitants, des maisons, des arbres.
Tout est Objet. Ma voiture est donc un Objet Voiture et celle de mon voisin est
un autre objet Voiture caractèrisé différemment.
En POO, c’est pareil, chaque chose va être un objet. Le but du jeu sera donc
de faire interagir ces objets entre eux pour concevoir un programme cohérent.
5 Une première modelisation rapide
Tout ceci peut paraitre flou alors pour ça, nous allons voir un premier
exemple de programme manipulant des objets.
Notre programme sera donc un garage qui devra manipuler des voitures et des
motos.
Voici donc un exemple de structure d’objet que nous pourrions avoir :
– Un Objet Garage
– Un Objet Moto
– Un Objet Voiture
Donc on créera un objet Garage sur base du model créer et ce garage pourra
stocquer des Motos et des Voitures.
La création des 3 objets est donc une déscription de ces 3 objets. Quand on fait
de l’orienté objet, on manipule des objets, mais il faut aussi créer des strcutures
d’objet, appelées classes.
6 Classes, InstancesCette partie sera plus complexe que les autres car elle introduit des notions
qui sont, d’un premier abord plus difficile à cerner. Comme nous faisons abstraction
d’un langage de programmation, nous allons pas tenir compte des Objets
déjà créer dans le langage et nous n’allons travailler que avec nos propre objets.
Donc nous allons commencer par décrire la notion de Classe.
On à donc vu que des Objets étaient créer sur base d’un model, par exemple
2 voitures différentes seront 2 objets voitures mais leur caractéristiques seront
différentes. Donc elles sont créer selon un moule, mais leur platre n’est pas le
même. (Excusez la comparaison un peu vaseuse
). Les classes sont c’est moule.
Une classe est le déscriptif générique d’un objet.
L’instance quand à elle correspond à un objet créer sur base d’une classe. Donc
la classe crée les espace de qualification et de l’objet et l’instance crée un objet
sur le moule fournis par la classe.
Pour en revenir à notre exemple avec les voitures. Les 2 objets voiture (la mienne
et celle de mon voisin) sont des instances de ma classe Voiture.
La forme d’une instance dans un programme est souvent proche d’une super
variable contenant pleins d’attributs et de méthodes. Nous verrons ça dans la
partie suivante.
7 La structure d’une classeNous avons vu que la classe était la manière de décrire un objet, soit de
préparer ses qualificateurs et ses possibilités d’agissement, en l’occurence, les
attributs et les méthodes.
Je ne suis pas très original et je vais prendre l’exemple, au combien éprouvé, des
voiture.
7.1 Les attributsUne voiture est caractérisé par des qualificatif, sa marque, sa couleur, sa
vitesse maximum, son type de pneus etc.
Ces caractéristiques sont appelées les Attributs. Ils permettent de définir un
objet sur base de critère.
La première étape de la conception d’une classe sera d’attribuer l’objet. Dans
le contexte Rpg Maker, un Objet Quete pourrait être caractérisé de la sorte : Id
de la quête, nom de la quête, déscription de la quête et gain EXP et gain OR et
son statut (finis, en cours, pas activé). Sur base de se déscriptif, il serait donc
possible de créer autant de quête que l’on veut.
Le processus d’attribution de la classe est un moment très important car (même
si rien n’est irréverssible), un objet bien décris permet plus de possibilité dans
le développement.
7.2 Les méthodesJe vous avais parlé de procédure, et bien les méthodes sont des procédures
au sein de notre Objet. Alors que les procédures normal agisse en fonction de
paramètre ou de données environnementales à votre programme, les méthodes
elles, agissent uniquement au sein de l’objet. Pour revenir sur nos voitures, on
pourrait imaginer une méthode repeindre qui modifierai l’attribut couleur de
notre voiture en fonction d’un nouveau paramètre. Les méthodes agissent en
général sur les attributs (en général car par exemple, une méthode equals qui
prendrait en paramètre un autre Objet Voiture, vérifiera successivement chaque
attribut pour voir si les 2 voitures sont égales.
Les méthodes peuvent aussi servir de controlleur d’accessibilité, mais nous verrons
cela plus tard, lorsque nous parlerons de la porté et de la lisibilité des
caractéristique d’un classe.
7.3 RécapitulatifAlors que les attributs qualifieront l’objet, les méthodes agiront (principalement)
sur ces qualificatif.
7.4 Une méthode un peu particulière, le constructeurLorsque nous créons un objet sur base d’une classe, nous construisons un objet.
Pour cela il existe une méthode un peu particulière qui sera appelé lorsque
qu’un objet est créé. Par exemple quand je dis que ma variable "‘maVoiture
est une voiture rouge, marque peugeot et qui peut aller maximum a 180km/h"’
et bien j’appel mon constructeur. Le constructeur à toujours un nom précis en
fonction du langage (par exemple, en PHP, elle doit s’appeler __CONSTRUCT,
en Java elle doit porter le même nom que la classe et en ruby elle s’appelle initialize).
En général, le constructeur prend en paramètre les attributs qui doivent
obligatoirement être spécifiés et attribue des valeurs par défaut aux autres attributs.
Les autres attributs pouvant être modifié par après au moyen d’autre
méthodes.
8 Les objets dans le travail en groupeCette section est la conclusion de la première partie que je publie de mon
article. Je continuerai évidemment la publication mais je préfère ne pas faire de trop gros chapitre pour éviter l’indigestion au lecteur. Je termine donc en disant
que outre son coté structural et sémantique, l’objet est vraiment optimal pour le
travail en groupe car, il fonctionne un peu comme une boite noir. Même si vous
ne savez pas ce qu’il fait il reste utilisable tant que vous avez la documentation
pour son utilisation. Par exemple, j’ai déjà été amené à travailler en JAVA sur
un projet avec plusieurs autres personnes. Ce travail utilisait des classes établie
par le professeur. A aucun moment je n’ai du décomposer son code car il avait
documenté chacun des ses objets et je pouvais les utiliser facilement sans savoir
ce que faisait (en terme de code et non en terme d’effet) les objets que j’utilisais.
Un autre exemple serait d’imaginer que vous deviez implémenter l’exemple que
j’ai donner avec le garage. Alors que votre collègue à écris Moto et Voiture,
vous pouvez implémenter garage sans savoir ce que font chacunes des méthodes
présentes dans les 2 classes, du moment que vous connaissez sa condition de
fonctionnement et son effet.
9 ConclusionCette partie est finie, elle à présenté de manière succinte la logique des
aspects primaires de la POO. J’espère que vous avez été intéressé. Sachez que ce
cours n’est que le début d’une petite série qui conclura par des analogies direct
avec Rpg Maker. J’ai essayé d’adapter mon article au plus de langages possible
et de le rendre lisible par un maximum de monde, c’est d’ailleurs pour ça que
certains raccourcis un peu rapide exaspéreront peut être les confirmés.
Si vous avez des remarques, questions, vous pouvez me joindre sur molok6000
[AT] hotmail.com, je lis rarement mes email, mais j’essaye d’être souvent présent
sur MSN.
J’excuse aussi d’ore et déjà mon orthographe, fort imparfaite.