• 6 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Mis à jour le 04/02/2019

Découvrez la programmation orientée objet

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

 

La première manière de créer ce programme serait de créer des fonctions qui interagiraient les unes avec les autres. Nous pourrions, par exemple, commencer par créer une fonction qui récupèrerait les données du JSON, une autre qui les transformerait en agents, une troisième pour calculer les moyennes, et ainsi de suite. En fait, c'est déjà la démarche que nous avons adoptée dans le cours Démarrez un projet avec Python.

Cette approche est très bien mais elle peut vite devenir très dense et difficile à maintenir. Il est très facile de se perdre entre les fonctions et de créer du code spaghetti : plein de variables dans tous les sens, de grandes fonctions qui font trop d'actions, et ainsi de suite. Lorsque vous ouvrirez votre projet dans 6 mois ou un an, vous risquez de ne plus vous y retrouver et de perdre du temps inutilement.

La programmation orientée objet

Une autre approche est la Programmation Orientée Objet (communément appelée POO). Nous allons concevoir notre programme non pas comme un ensemble de fonctions mais en tant qu'ensemble d'objets qui interagissent les uns avec les autres. Chaque objet a un comportement bien à lui et des propriétés spécifiques.

Prenons un exemple que nous connaissons tous : la bataille navale ! Dans mon jeu de bataille navale, mon plateau est standard et tous mes bateaux font deux cases. Je sais donc que j'ai déjà deux grands types d'objets : une zone de bataille et un bateau.

Chaque bateau a une taille : il fait deux cases de long. Il a aussi une couleur (gris) et un poids. Ces caractéristiques sont appelés des attributs.

A un moment du jeu, je vais vouloir déplacer ce bateau. Dans la vraie vie, les matelots allumeraient certainement les moteurs du bateau pour le déplacer. C'est donc à l'ensemble du bateau de faire l'action et ils sont responsables du bon déroulement de la procédure. Chaque action réalisée par un objet est appelée une méthode.

Si je résume, la programmation orientée objet vous permet de découper un programme en concepts, appelés Objets, qui ont chacun des attributs et des méthodes.

Analyse, design et programmation

L'Analyse Orientée Objet

L'orienté objet étant un paradigme, on ne commence pas par coder de but en blanc. Nous allons commencer par analyser notre programme : que va-t-il faire ? Quelles en sont les grandes composantes ? Quels sont les objets de notre programme et quels sont leurs caractéristiques ?

Cette phase est communément appelée l'Analyse Orientée Objet. Dans le cas de notre bataille navale, nous avons un premier objet Zone et un autre objet Bateau. Cela peut paraître tout simple pour notre jeu de bataille navale... Mais imaginez si vous deviez faire la même chose pour le site des impôts !

 

Le Design Orienté Objet

Quand nous avons déterminé les objets qui composent notre programme, nous nous intéressons à leurs interactions. Quelles sont les actions possibles dans notre programme ? Nous écrivons ainsi les méthodes relatives à chaque objet.

Un bateau va avoir, lui, plein de méthodes ! Une méthode  bouger , pour le déplacer, une méthode  toucher , une méthode  couler .
Nous allons alors dessiner un diagramme de séquence pour matérialiser les interactions.

Exemple de diagramme de séquence
Exemple de diagramme de séquence

Source : http://agilemodeling.com/images/models/sequenceDiagramBasicCourse.jpg

 

La programmation orientée objet

Vient enfin l'étape de code ! Nous allons transformer nos schémas en texte. 😎

Avant, il convient de refaire un petit schéma ! Mais cette fois-ci, nous ne nous concentrons plus sur les interactions mais bien la structure de notre programme. C'est le moment de définir les attributs de chaque objet et ses méthodes.

Dans le cas de notre bataille navale, une  Zone  a certainement bien des attributs différents : une largeur en nombre de cases, une hauteur en nombre de cases et certainement un index qui liste la position de chaque case. Je reviendrai sur ce point dans un chapitre ultérieur.

C'est en général à ce moment-là que nous réalisons un diagramme de classe. A quoi cela sert-il ? A bien comprendre la structure de chaque objet.

Pourquoi appelons-nous ce schéma un diagramme de classe ?

Nous avons vu qu'un objet est générique. C'est un peu le schéma d'un moule à gaufre sur papier. Quand le schéma est prêt, nous voulons produire des gaufres identiques, donc créer un moule. La classe est ce moule : comme une usine, elle permet la production d'objets qui partagent les mêmes attributs et les mêmes méthodes.

Nous verrons comment en créer une en Python un peu plus loin dans ce cours. En attendant, il est important de retenir qu'une classe a un nom, des attributs (variables qui lui sont propres) et des méthodes (fonctions qui lui sont propres).

Dans un diagramme de classe, chacune est représentée par un rectangle. La première case est le nom de la classe, la seconde liste ses attributs et la troisième les méthodes.

Un exemple de diagramme de classe
Un exemple de diagramme de classe

Source : http://agilemodeling.com/images/models/classDiagramInheritance.jpg 

Maintenant que vous avez une connaissance générale de l'univers de la programmation orientée objet, structurons notre programme en dessinant un premier diagramme de classe.

 

Exemple de certificat de réussite
Exemple de certificat de réussite