La Programmation Orientée Objet

Cette page explique la programmation orienté objet et illustre les concepts de programmation objet en faisant des parallèles avec Scratch.

Sur cette page tu trouveras:

Aperçu de la POO avec Scratch

La Programmation Orientée Objet (parfois abréviée en POO) est un modèle de langage de programmation qui s’articule autour d’objets et de données. Pour comprendre la POO, il est important de comprendre ce que l’on appelle une classe, un objet, les attributs et les méthodes.

La programmation orientée objet est une manière de penser le code très courante.

Sur Scratch quand nous créons des clones, nous utilisons de l’objet. Sur Construct ou sur Unity, la première chose que l’on fait c’est créer un objet.

 

Classes et attributs dans Scratch

Créer un objet c’est créer un nouveau type de variable, que l’on appellera classe.

Cet objet va avoir un certain nombre de variables internes, de propriétés, que l’on appellera attributs.

Par exemple sur Scratch quand je créé un nouveau Lutin, je créé une nouvelle classe. Cette classe a de nombreux attributs : son nom, sa position en x et y, sa taille, sa rotation, son sprite …

Méthodes et instanciation dans Scratch :

On va également lui donner un certain nombre de fonctions, que l’on appellera méthodes

Dans Scratch les méthodes sont les blocs, quand le drapeau vert est cliqué, ou quand ce sprite est cliqué. Les blocs en dessous, constituent le code de ces méthodes.

En plus des méthodes de bases de Scratch, on peut aussi créer nos propres blocs et nos propres méthodes.

Enfin un objet à une méthode de création, d’instanciation, qui permet de créer une nouvelle instance de cet objet

Sur scratch c’est le block créer un clone qui nous permet de faire ça :

Classe et Objet

Une classe représente une catégorie d’objets. Par exemple, on peut imaginer une classe « Voiture« . Cette classe est définie par des propriétés telles que la taille de la voiture, sa consommation, sa couleur, sa marque

Un objet est une instance d’une classe. Par exemple, sur l’image ci-contre, j’ai deux objets, qui utilisent tous deux la classe Voiture.

Bien sûr, des objets peuvent être différents, même s’ils font partie de la même classe ! Ci-contre les deux objets Voiture n’ont pas la même taille, couleur, marque

Ainsi, la Programmation Orientée Objet consiste dans un premier temps à identifier les classes nécessaires pour son projet. Voici quelques exemples :

  • Pour un jeu type RPG, on peut imaginer une classe « Personnage » avec des propriétés telles que le Nom, la Force, la Vitesse, les PV (Points de Vie)…  chaque Personnage dans le jeu peut ainsi être différent !
  • Pour un jeu de carte, on peut imaginer une classe « Main » qui représente la Main d’un joueur – c’est-à-dire les cartes qu’il a en main. Dans un jeu à deux joueurs, il y aura donc deux objets « Main » : celle du joueur 1 et celle du joueur 2 !
    On peut aussi imaginer une classe « Carte« . Chaque objet de classe Carte représenterait alors une carte dans le jeu, avec par exemple sa couleur, le chiffre ou le symbole sur la carte, la description
  • Pour une application qui afficherait des memes, on peut imaginer une classe Meme avec comme propriétés l’image utilisée, le texte du dessus, le texte du dessous

Chaque Sprite que j’ajoute sur Construct est une instance (=objet) d’une classe Sprite ! De même, je peux avoir plusieurs objets « Piece » sur Scratch. Il est donc possible que tu aies déjà vu de la Programmation Orienté Objet sans le savoir !

Attributs et Méthodes

On appelle attributs les propriétés d’une classe : ce sont toutes les informations qui feront partie de l’objet.

Par exemple, sur une classe Chat, les attributs pourraient être :

  • Sa taille
  • Sa ou ses couleur(s)
  • La couleur de ses yeux
  • La taille de ses moustaches
  • Son nom
  • Etc.

On appelle méthodes les actions d’une classe : il s’agit de toutes les fonctions qui feront partie de cet objet. Par exemple, sur une classe Chat, on peut imaginer les méthodes suivantes :

  • Marcher
  • Manger
  • Dormir
  • Ronronner
  • Demander à sortir
  • Demander à rentrer
  • Etc.
Cela peut prendre un peu de temps de s’habituer à penser de façon « orienté objet ». Un bon challenge est par exemple de se demander quels seraient les attributs et méthodes d’une classe Ennemi, d’une classe Pion (par exemple pour un jeu de dames), d’une classe Post (par exemple pour un post de blog)…
 

L’intérêt de la Programmation Orientée Objet

L’intérêt de la POO est mutltiple :

  • Un code plus intuitif :
    Quand on lit nouveau_pion = Pion(« noir », 8, 5) on peut comprendre assez facilement que l’on crée un nouveau pion noir qui sera placé à la position 8, 5.
    Il est beaucoup plus intuitif de comprendre un code qui utilise directement des objets Pion, Carte, Pioche…   …plutôt qu’un code qui gère tout cela avec des variables contenant des dictionnaires et tableaux !
  • Un code mieux compartimenté :
    En isolant les différents éléments logiques du programme sous la forme de différents objets, le code devient mieux compartimenté. C’est notamment utile pour se séparer les tâches ensuite : un maker peut travailler sur la Grille, alors qu’un autre maker va travailler sur la classe Ennemi !
  • Un code plus modulable :
    Il est parfois difficile de modifier un code « classique ». Par exemple, si je change les règles de mon jeu de carte et que le nombre de cartes maximales dans une main est maintenant de 6 au lieu de 5, je devrais peut-être modifier plusieurs conditions un peu partout dans mon code.
    Avec un code orienté objet, il me suffit alors de changer la valeur par défaut de l’attribut nombre_de_cartes_maximum sur ma classe Main !
Retour en haut