Programmation orientée objet POO et classes en Python

1 –  Le concept de POO en Python

La programmation orientée objet, ou POO, est un paradigme de programmation qui permet de structurer les programmes de manière à ce que les propriétés et les comportements soient regroupés dans des objets à part.

Par exemple, un objet peut représenter une personne avec un nom, un âge, une adresse, etc., avec des comportements tels que marcher, parler, respirer et courir.

En d’autres termes, la programmation orientée objet est une approche permettant de modéliser des éléments concrets du monde réel tels que les voitures, ainsi que des relations entre des entités telles que les entreprises et les employés, les étudiants et les enseignants, etc. La modélisation POO modélise des entités réelles sous la forme d’objets logiciels certaines données qui leur sont associées et peuvent remplir certaines fonctions.

La programmation orienté objet est un type de programmation basée sur la création des classes et des objets via une méthode appelée instanciation. Une classe est un prototype (modèle) codé en un langage de programmation dont le but de créer des objets dotés d’un ensemble de méthodes et attributs qui caractérisent n’importe quel objet de la classe. Les attributs sont des types de données (variables de classe et variables d’instance) et des méthodes, accessibles via la concaténation par points.En programmation orientée objet, la déclaration d’une classe regroupe des méthodes et propriétés (attributs) communs à un ensemble d’objets. Ainsi on pourrait dire qu’une classe représente une catégorie d’objets. Elle apparaît aussi comme une usine permettant de créer des objets ayant un ensemble d’atributs et méthodes communes.

2 –  Les classes en Python

Pour créer une classe en Python, on utilise l’instruction :

class nom_de_la_classe

On crée ensuite une méthode qui permet de construire les objets, appelé constructeur via l’instruction :

def __init__(self):

Exemple. classe Personne

class Personne:     
    def __init__(self,nom,age):         
       self.nom = nom         
       self.age = age 
P = Personne("Albert",27) 
print("Le nom de la prsonne est : " , P.nom) 
print("L'age de la personne est : " , P.age, " ans")
# affiche : Le nom de la prsonne est : Albert  
#           L'age de la personne est : 27 ans

Exemple: classe rectangle

class Rectangle:     
    def __init__(self,L,l):         
       self.Longueur=L         
      self.Largeur=l        
monRectangle=Rectangle(7,5) 
print("La longueur de mon rectangle est : ",monRectangle.Longueur) 
print("La largeur de mon rectangle est : ",monRectangle.Largeur)

Ce qui affiche à l’exécution :

La longueur de mon rectangle est : 7
La largeur de mon rectangle est : 5

On peut aussi améliorer la classe en ajoutant des méthodes permettant d’effectuer différentes tâches.

3 – Les méthodes d’instance en Python

Une méthode d’instance est une fonction ou procédure nommée au sein de la classe, permettant de définir des propriétés ou comportements des objets d’instances.

Exemple. ajout de méthode qui calcule la surface du rectangle

class Rectangle:     
    def __init__(self,L,l):         
        self.Longueur=L         
        self.Largeur=l              

    # méthode qui calcule la surface         
    def surface(self):         
        return self.Longueur*self.Largeur      

# création d'un rectangle de longueur 7 et de largeur 5 
monRectangle = Rectangle(7,5)
print("La surface de mon rectangle est : ", monRectangle.surface())

Ce qui affiche après exécution :

La surface de mon rectangle est : 35

4 – Les méthodes statiques

Une méthode statique est une méthode de classe ayant la propriété d’être exécutée sans passer par l’instanciation. Une méthode statique est déclarée en ajoutant l’annotation : @staticmethod

Exemple. méthode statique

# -*- coding: utf-8 -*- 
class myClass:     
    def __init__(self):         
       pass              
    # création d'une méthode statique     
   @staticmethod     
   def myStaticMethod():         
       print("Voici un exmple de méthode statique en Python")          

myClass.myStaticMethod()