• 12 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 3/7/22

Comprenez la programmation orientée objet

Découvrez les classes

Imaginez que vous n'ayez que quelques heures pour épater votre amie, qui vient vous retrouver après un long voyage. Pour rendre cet instant unique, vous avez tout préparé : vous comptez lui concocter un gâteau au chocolat dont elle se souviendra longtemps.

Ce gâteau se base sur une recette dont vous avez le secret. Vous la sortez donc du placard, et suivez méticuleusement les instructions... jusqu'à arriver au résultat ! Miam.

Ce principe de recette se retrouve en programmation orientée objet. Vous êtes le chef de votre code, et concoctez vos plats (que l'on appellera des objets) avec vos recettes (que l'on appellera des classes).

Et si nous parlons de « préparation » d'un plat en cuisine, nous parlerons plutôt d'instanciation de classe en programmation orientée objet (POO). 😊

Vous constatez que tous les gâteaux préparés avec la même recette sont similaires ? Il en est de même avec les objets partageant une même classe. Ils font partie de la même structure.

Mais qu’y a-t-il dans une classe, en réalité ? 

Une classe contient un état et un comportement.

L’état fait référence à des données ou des variables. Une classe  Cake  (Gâteau), par exemple, peut avoir une variable  flavor  (saveur).

Le comportement d’une classe désigne simplement une série de choses que cette classe peut faire. Ce comportement est contenu dans les méthodes, qui sont identiques conceptuellement aux fonctions. Toujours pour reprendre notre exemple du gâteau, nous pourrions définir un comportement spécifique aux anniversaires (ajouter des bougies). 

Prenons cet exemple. Ici, nous avons une recette pour  Cake  qui spécifie qu’un gâteau a une saveur et la capacité d’être découpé en parts.

Une classe Cake contient deux attributs : flavor et cut_in_parts(). A sa droite, deux instances de cette classe : un des gâteaux a l'attribut flavor: 'banana', l'autre a l'attribut flavor: 'chocolate'.
Voici deux beaux gâteaux !

Notez en particulier que la recette elle-même a un « vide » pour la saveur du gâteau. C’est parce que la recette en elle-même n’est pas un élément réel existant dans le monde. Lorsque nous créons (ou instancions) un gâteau à partir de cette recette, le gâteau réel a une saveur.

La recette pour  Cake  possède aussi la méthode  cut_in_parts()  (« couper en parts »), ce qui signifie que tous les gâteaux créés à partir de cette recette la possèdent également (c’est-à-dire qu’ils ont tous le comportement« couper en parts »).

Alors, quelle est la différence entre une méthode et une fonction ?

Tout simplement, une méthode fait partie d’une classe, alors qu’une fonction est indépendante des classes. Les méthodes peuvent prendre des paramètres, modifier l’état interne de l’objet, appeler d’autres méthodes ou fonctions, et retourner des valeurs.

Étant donné qu’une méthode fait partie d’une classe, elle fait aussi partie d’un objet créé à partir de cette classe. La seule différence entre une fonction et une méthode, c’est que les méthodes font partie d’une classe/d’un objet.

Découvrez les objets

Si la classe sert de modèle, de recette pour créer nos objets, les objets sont des créations qui prennent vie dans votre code.

Les objets peuvent être stockés dans une variable, et le type de cette variable référence la classe. De la même façon que le type du chiffre « 5 » est un entier (int), et le type du mot « bonjour » est une chaîne de caractères (str), le type d’un objet gâteau est  Cake.

Vous pouvez modifier l’état d’un objet, ou appeler des méthodes dessus.

On peut instancier plusieurs objets de la même classe, et ces objets sont indépendants. Le fait de créer un plat chez vous ne le crée pas chez votre voisin.

Je peux déjà créer des variables et des fonctions, pourquoi créer des classes et des objets ?

La programmation orientée objet (POO) est une façon différente de penser la programmation, par rapport à la programmation procédurale que vous avez connue précédemment. Elle permet de structurer son code autrement, tout en ajoutant une couche d’abstraction supplémentaire : en définissant un monde d’objets proche de notre monde à nous.

Techniquement, il s’agit de manipuler des sortes de conteneurs (les classes), qui stockent à la fois des valeurs brutes (appelées « propriétés ») et des fonctions (appelées « méthodes »).

Dans le cas suivant, « Client » constitue la classe. Un Client peut avoir un nom, un numéro de téléphone et un compte en banque – soit un état – et vous voudrez peut-être pouvoir facturer ou rembourser ce client – soit un comportement.

Client

État (Variables)

name

phone_number

bank_account

Comportement (Méthodes)

bill_customer(cost)

refund_customer(amount)

Il est logique de lier ainsi les informations d’un client aux opérations que nous voulons leur appliquer. Suivez-moi dans le screencast ci-dessous pour en savoir plus sur les objets en Python :

À vous de jouer : identifiez les classes

À vous de jouer

Maintenant que nous avons une maîtrise basique des concepts, il est temps d’essayer de la mettre en pratique nous-mêmes. Munissez-vous d’une feuille de papier ou ouvrez un éditeur de texte.

Vous trouverez ci-dessous quelques lignes décrivant un contexte :

  • Pour chaque situation, identifiez une classe et créez un diagramme simple, en vous aidant du diagramme Client ci-dessus.

  • Ensuite, identifiez toutes les variables nécessaires en fonction de la description, suivies de toutes les méthodes. N’ajoutez que les attributs qui sont mentionnés dans la description.

C’est parti !

  1. J’ai une boîte à outils. Cette boîte à outils peut contenir des outils, et je peux ajouter ou enlever des outils à la boîte à outils.

  2. Je possède aussi des marteaux. Les marteaux peuvent être de couleurs différentes, et peuvent être utilisés pour planter et pour retirer des clous. Je peux également changer la couleur d’un marteau en le peignant.

  3. Enfin, je possède aussi des tournevis. Ils ont une taille (mesurée en millimètres) et peuvent être utilisés pour serrer ou desserrer une vis.

Une fois que vous avez créé vos diagrammes, gardez-les ! Nous allons les utiliser au chapitre suivant, lorsque nous commencerons à écrire du code Python.

En résumé

  • Les classes sont des modèles pour les objets.

  • Les classes allient état (les données ou variables) et comportement (les méthodes) s’appliquant à ces données.

  • Un objet peut être créé et utilisé dans un programme.

Maintenant que vous connaissez les concepts de base, il est temps d’écrire du code orienté objet en Python.

Example of certificate of achievement
Example of certificate of achievement