Introduction à l’orienté objet en Python

La programmation orientée objet (POO) est un passage obligé lors de l’apprentissage de nombreux langage informatiques et est également un sujet relativement ardu lorsqu’on nous le présente pour la première fois.

Cette première leçon a pour objectif de définir le plus simplement et le plus clairement les concepts d’objets, de classes et d’attributs et de démystifier le sujet de l’orienté objet.

Il est possible que vous ne compreniez pas tout d’un coup : pas d’inquiétude, suivez le cours à votre rythme, avec moi, et les choses deviendront de plus en plus claires au fil de votre avancement de le cours. N’hésitez pas à relire cette partie en entier une fois que vous l’avez terminée pour revoir tous ces concepts sous un oeil nouveau.

 

Qu’est-ce que la programmation orientée objet ?

La programmation orientée objet (ou POO en abrégé) correspond à une autre manière d’imaginer, de construire et d’organiser son code.

La programmation orientée objet repose sur le concept d’objets qui sont des entités qui vont pouvoir posséder un ensemble de variables et de fonctions qui leur sont propres.

Les objectifs principaux de la programmation orientée objet sont de nous permettre de créer des scripts plus clairs, mieux structurés, plus modulables et plus faciles à maintenir et à déboguer. Nous allons illustrer cela en pratique au cours de cette partie.

 

Le Python, un langage orienté objet

Python est un langage résolument orienté objet, ce qui signifie que le langage tout entier est construit autour de la notion d’objets.

En fait, quasiment tout en Python est avant tout un objet et nous avons manipulé des objets depuis le début de ce cours sans nous en rendre compte : les types str, int, list, etc. sont avant tout des objets, les fonctions sont des objets, etc.

Pour véritablement maitriser Python et utiliser toutes ses fonctionnalités, il est donc indispensable de comprendre cette composante orienté objet.

 

Qu’est-ce qu’un objet en programmation ?

Dans la vie réelle, un objet possède des caractéristiques et nous permet de réaliser des actions. Un crayon par exemple possède une taille, une couleur, une forme, etc. qui sont ses caractéristiques et permet d’écrire ou de dessiner.

Le concept d’objets en informatique s’inspire fortement de cette définition de la vie réelle : on va appeler “objet” un bloc cohérent de code qui possède ses propres variables (qui sont l’équivalent des caractéristiques des objets de tous les jours) et fonctions (qui sont nos actions). Comme les objets de la vie courante, les objets informatiques peuvent être très simples ou très complexes.

Vous pouvez déjà noter que Python parle “d’attributs” pour désigner les variables et fonctions d’un objet et plus précisément “d’attributs de données” pour désigner les variables d’un objet et de “méthodes” pour désigner les fonctions qui lui sont propres.

Dans la plupart des langages informatiques, on parle plutôt de “membres” pour désigner les variables et fonctions d’un objet et de “propriété” pour désigner les variables et de “méthodes” pour désigner les fonctions.

 

Comment crée-t-on un objet ? Présentation des classes

En POO, un objet ne peut pas être créé ex nihiliste (à partir de rien). La plupart des langages qui supportent l’orienté objet (dont le Python) utilisent d’autres entités pour créer des objets qu’on appelle des classes.

Une classe est également un ensemble cohérent de code qui contient généralement à la fois des variables et des fonctions et qui va nous servir de plan pour créer des objets possédant un même ensemble de d’attributs de données et de méthodes de base.

En fait, on peut aller jusqu’à considérer que les classes sont les principaux outils de la POO puisqu’elles permettent de mettre en place des concepts fondamentaux de la POO comme l’héritage, l’encapsulation ou le polymorphisme qui sont des concepts qu’on expliquera et qu’on étudiera en détail plus tard.

Pour le moment, contentez vous de retenir qu’une classe va servir de plan de création pour un type d’objets. Créer une nouvelle classe en Python correspond à définir un nouveau type d’objets ou un nouveau type de données.

Pour créer des objets à partir d’une classe en Python, on va utiliser cette classe comme une fonction. Pour illustrer concrètement comment cela fonctionne et pour que vous compreniez plus facilement, créons immédiatement une première classe qu’on va appeler Utilisateur.

 

Création d’une première classe et d’objets Python

Pour créer une nouvelle classe Python on utilise le mot clef class suivi du nom de notre classe. Ici, on va créer une classe Utilisateur qui va être très simple pour le moment.

Création d'une classe en Python orienté objet

Je vous accorde que ce code peut faire peut à priori car il contient de nombreuses nouvelles choses. Pas d’inquiétude, nous allons l’expliquer au fur et à mesure.

Ici, on crée une nouvelle classe Utilisateur avec la syntaxe class Utilisateur:. Notez que par convention le nom d’une classe commence toujours par une majuscule.

Cette classe Utilisateur possède ici deux variables statut et age et définit également une fonction setNom(). Le rôle de la fonction setNom() va être de permettre par la suite à nos objets de type Utilisateur() de définir un attribut de donnée nom avec une valeur qui va être propre à chacun. Je vous demande de ne pas vous préoccuper de l’argument self le moment.

Pour créer des objets à partir de cette classe, nous allons utiliser la syntaxe Utilisateur() comme ceci :

Instanciation du'ne classe et création d'un objet en Python orienté objet

Lorsqu’on crée un objet à partir d’une classe comme ceci, on dit également qu’on instancie une classe (on crée une nouvelle instance d’une classe). Ici, on instancie deux fois notre classe et on place le résultat dans deux variables pierre et mathilde qui deviennent automatiquement des objets de type Utilisateur.

La chose que vous devez absolument comprendre ici est que les objets créés à partir d’une classe en Python vont automatiquement avoir accès aux variables et fonctions définies dans la classe qui vont être pour eux des attributs de données et des méthodes.

Nos objets pierre et mathilde disposent donc ici tous les deux de deux attributs de données statut et age qui possèdent les valeurs Inscrit et 0 et ont également accès à la méthode setNom().

Pour accéder aux attributs de données et aux méthodes d’un objet, il va falloir mentionner l’objet suivi de l’opérateur . (point) suivi du nom de l’attribut de donnée ou de la méthode à laquelle on souhaite accéder comme ceci :

Accéder aux attributs et méthodes d'un objet en Python

Ce n’est pas tout : nos objets vont également pouvoir définir des valeurs personnalisées pour leurs attributs de données et on va également pouvoir définir de nouveaux attributs de données qui vont être propres à un objet en particulier dans une classe :

Ajout ou modification d'attribut de donnée Python

 

Conclusion sur cette introduction à l’orienté objet Python

Nous venons de faire une première (grosse) introduction à la programmation orientée objet et avons dans cette leçon défini et découvert de nombreuses nouvelles entités comme les objets, les classes, etc. et de nouveaux concepts comme l’encapsulation, l’héritage, etc.

Si vous ne comprenez pas tout pour le moment et si vous êtes un peu perdu, aucune inquiétude : c’est tout à fait normal. Considérez qu’entamer la POO est un petit peu comme si vous commenciez ce cours.

Plus vous allez avancer dans cette partie, plus les différents éléments vont faire sens et mieux vous comprendrez chaque chose car la plupart des concepts présentés ici ont besoin que vous connaissiez d’autres concepts pour être compris mais pour vous présenter ces autres concepts j’ai besoin de vous présenter avant les premier concepts bref… C’est l’histoire du serpent qui se mord la queue ou de l’oeuf et la poule : il faut choisir un angle d’attaque pour expliquer la suite et progresser.

Pour le moment, je vous conseille de ne pas trop vous formaliser sur cette nouvelle syntaxe ni sur les nouveaux termes. Essayez simplement de retenir ces deux points pour la suite :

  • Les classes sont des ensembles de code qui contiennent des variables et des fonctions et qui vont nous servir à créer des objets ;
  • Les objets créés à partir d’une classe disposent automatiquement des variables et des fonctions définies dans la classe.

Laisser un commentaire