Archives Wild Code School
Python

4.2 Python - OOP

Quête 24 sur 66 · 1 image archivée

Introduction

Python est un langage de programmation orienté object (POO). Que signifie ces termes de nerd ? A quoi ça sert ? Dans cette quête nous allons répondre à ces questions. Tu réaliseras du coup que tu fais de l'orienté objet depuis le début de la formation 😬.

Objectifs

✅ Comprendre le concept de la POO

✅ Coder des objets

Sommaire

Connaissances théoriques

La programmation orientée objet

Comme tu le sais il peut y a plusieurs façons d'atteindre un même objectif, comme par exemple celui de venir à la Wild, ou coder une fonction. Il y a également plusieurs façon de structurer un programme.

Il y a notamment la programmation procédurale qui correspond à la manière dont tu codes depuis le début. Quand ton programme devient conséquent tu crées une fonction pour appliquer le fameux DRY.

Il y a également la programmation orienté objet (POO). La POO consiste à structurer son code en créant des entités appelées objet, tout simplement. Ces entités ont des attributs (variables, propriétés ou caractéristiques) et des méthodes (fonctions, actions applicables par l'objet). De la même façon que l'on pratique le DRY dans des boites appelées fonctions, on crée les objets dans des boites appelées classes. Une classe est un peu comme une usine d'où sortent des objets.

Chaque fois que l'on veut créer un objet et l'utiliser, on dit qu'on instancie un objet de la classe. Comme le montre l'image ci-dessus, on a instancié 2 objets de la classe voiture. Les 2 voitures sont des objets de type voiture, le même type que le nom de la classe. Mais les 2 voitures sont différentes, une voiture est rouge et l'autre est bleu.

Allons encore plus loin 🤓 (en espérant que je ne t'ai pas perdu 😅). Imagine que dans une autre classe que j'ai appelée humain, j'ai instancié (fabriqué) un objet humain. Cet objet humain doit se rendre dans une certaine école, par exemple la Wild Code School, grâce à une voiture. Cet objet humain va donc utiliser un objet voiture. Et oui, les objets s'utilisent entre eux.

On ne dirait pas comme ça, mais cette façon de structurer son programme est extrêmement puissante et pratique. Ce n'est pas pour rien qu'il s'agit d'un must know. Elle présente de nombreux avantages tels que :

  • Code plus robuste

  • Code plus court (mieux structuré)

  • Permet d'utiliser les concepts de la POO

La POO vient avec une valise de concepts et de vocabulaire à découvrir tels que : encapsulation, héritage, polymorphisme, surcharge de méthode...

Les ressources d'aideront à y voir un peu plus clair.

↗
Python #10 - programmation objet
youtube.com

La POO avec Python

Je t'ai dit en introduction que "tu fais de l'orienté objet depuis le début de la formation". En effet tu as utilisé des objets de type : int, float, str, list, dict, tuple, dataframe, serie... Toutes les variables en Python sont en fait des objets.

Tu as aussi utilisé des méthodes sur les objets. Par exemple quand tu as transformé un chaine de caractère en majuscule tu as utilisé la méthode upper(). Comment est-ce possible puisque tu n'as pas créé cette méthode ? Parce que cette méthode se trouve dans la classe (l'usine) de tous les objets chaine de caractère.

Pire que ça, même les symboles en Python sont des objets. Le symbole + est un objet. Bref je crois que tu as compris, Python est un langage 100% objet.

Regarde les ressources ci-dessous pour découvrir la syntaxe propre à la programmation orientée objet avec Python.

Ce qu'il faut retenir :

  • On crée une classe avec le mot clé class

  • Le constructeur est la méthode de base appelée quand on instancie un objet

  • Le mot clé self est utilisé dans une classe pour dire qu'on fait référence à une variable ou une méthode qui est à l'intérieur d'elle même

  • On instancie un objet en faisant nomClasse()

  • Chaque objet crée dans une classe est unique et indépendant

↗
Object-Oriented Programming

Vous pouvez lire notamment l'interview de Steve Jobs sur la POO

brilliant.org

Challenge

Dans ce challenge tu vas créer ta 1ère classe dataAnalyst qui va simuler la vie d'un data analyst. Voici les caractéristiques de ta classe :

  • attributs :

nom (str) prenom (str) age (int) sexe (str) formationPrecedente (str) motivation (int valant 100 à l'instanciation) progression (int valant 0 à l'instanciation)

  • méthodes : suivreFormation() : chaque fois qu'elle est utilisée, cette méthode diminue la motivation d'une valeur entière aléatoire (random) entre 5 et 25 et augmente la progression d'une valeur entière aléatoire entre 20 et 30 ; bosserPlus() : chaque fois qu'elle est utilisée, cette méthode augmente la motivation et la progression d'une valeur entière aléatoire entre 10 et 30 ; echouer() : chaque fois qu'elle est utilisée baisse la motivation d'une valeur entre 20 et 40 et augmente la progression d'une valeur entre 20 et 40 ; reussir() : chaque fois qu'elle est utilisée, augmente la motivation d'une valeur entre 20 et 40 et augmente la progression d'une valeur random entre 10 et 20

Instancie un objet dataAnalyst et indique un nom, un prenom, le sexe et la formationPrecedente. L'attribut motivation vaudra 100 au début et l'attribut progression vaudra 0.

Le programme va automatiquement et aléatoirement lancer des méthodes et afficher le récapitulatif de l'état des attributs motivation et progression. Le programme s'arrête quand la motivation tombe à zéro et affiche "BRAVO TU AS GAGNÉ !!!" ou quand progression atteint 100 et affiche "BRAVO TU AS APPRIS !!!".

Crée toi un notebook et réalise les taches ci-dessus. Une fois terminé, mets en commentaire le lien de ton notebook consultable, ce dernier contenant la classe avec ses attributs et ses méthodes. Dans une autre cellule, tu auras créé le programme qui lancera les méthodes. Enfin dans une autre cellule tu mettras le code qui lance ton programme avec les messages. N'oublie pas de commenter ton code.

Code le avec classe 😜!

Critères de validation

  • Le notebook est consultable
  • Il y a 3 cellules contenant les éléments demandés
  • Le programme fonctionne correctement
  • Le programme est commenté

Exemple de résultat attendu :

shell
Tour 1
La méthode echouer() a été utilisée.
motivation vaut maintenant 60
progression vaut maintenant 20

Tour 2
La méthode bosserPlus() a été utilisée.
motivation vaut maintenant 60
progression vaut maintenant 35

...

Tour 7
La méthode reussir() a été utilisée.
motivation vaut maintenant 10
progression vaut maintenant 110
BRAVO TU AS APPRIS !!!

==$== Une solution ici

Ressources partagées sur cette quête