Aller au contenu
M03 · A. Appréhender le paradigme de la POO

Introduire la programmation orientée objet

Comprendre ce qu'est un objet, pourquoi la POO est née, et ce qu'elle apporte par rapport à la programmation procédurale vue en algorithmique.

1Situer

Une auto-école de Meknès gère ses élèves avec un programme écrit en procédural : une liste pour les noms, une autre pour les heures de conduite, une troisième pour les résultats au code. Chaque fois qu'on ajoute une information, il faut modifier dix fonctions et on finit par mélanger les listes. La programmation orientée objet propose une autre façon de ranger le code : chaque élève devient un objet qui garde ensemble ses données et ce qu'on peut faire avec.

2Comprendre

Du procédural à l'objet
PROCÉDURAL noms = [Salma, Karim] heures = [0, 6] codes = [ok, ?] ajouter() afficher() tout est mélangé ORIENTÉ OBJET salma nom: Salmaheures: 0code: ok ajouter()afficher() karim nom: Karimheures: 6code: ? ajouter()afficher() un objet = données + actions

En procédural, les données des élèves sont rangées dans des listes séparées : les noms d'un côté, les heures de l'autre.

1 / 5

En algorithmique, vous avez écrit des programmes procéduraux : des variables d’un côté, des fonctions de l’autre, et un programme principal qui appelle les fonctions dans l’ordre. Ça marche très bien pour un petit programme.

Quand le projet grossit, les données et les fonctions qui les manipulent se retrouvent dispersées. La programmation orientée objet (POO) les regroupe.

Objet, attribut, méthode

Un objet représente une chose du problème : un élève, une voiture, une facture. Il possède :

  • des attributs : ses données (le nom de l’élève, ses heures de conduite) ;
  • des méthodes : les actions qu’il sait faire (ajouter une heure, passer l’examen).

Une classe est le modèle qui décrit ces attributs et ces méthodes. À partir d’une classe, on crée autant d’objets qu’on veut : on les appelle des instances.

Un peu d’histoire

AnnéeLangageApport
1967Simulapremières classes et objets, pour des simulations
1972Smalltalk« tout est objet », envoi de messages
1985C++objets ajoutés au langage C
1991Pythonobjets simples à écrire, langage polyvalent
1995JavaPOO au cœur du langage, très utilisée en entreprise

Aujourd’hui, la plupart des langages que vous croiserez (Python, Java, C#, PHP, JavaScript) permettent la POO.

Pourquoi la POO ?

  • Organisation : ce qui concerne un élève est rangé dans la classe Élève.
  • Réutilisation : une classe écrite une fois sert dans plusieurs programmes, et l’héritage évite de recopier du code.
  • Maintenance : on modifie une classe sans casser le reste du programme.
  • Travail en équipe : chacun développe ses classes.

Dans ce module, on programme en Python. Les quatre piliers de la POO (encapsulation, héritage, polymorphisme, abstraction) arrivent dans les leçons suivantes.

Exemple simple

Un téléphone est un objet

Il a des caractéristiques (marque, couleur, niveau de batterie) et il sait faire des choses (appeler, prendre une photo, se recharger). En POO, les caractéristiques s'appellent des attributs, les actions des méthodes.

Exemple simple

Le formulaire d'inscription

Chaque stagiaire remplit le même formulaire, mais avec ses propres réponses. Le formulaire vierge, c'est la classe ; chaque formulaire rempli, c'est un objet.

class Stagiaire:          # le formulaire vierge
    pass

salma = Stagiaire()       # un formulaire rempli
youssef = Stagiaire()     # un autre

3Manipuler

Pour l'objet « Voiture de l'auto-école », classez chaque élément : est-ce une donnée qu'elle possède (attribut) ou une action qu'elle sait faire (méthode) ?
La plaque d'immatriculation
Démarrer le moteur
Le kilométrage
Freiner
Le niveau de carburant
Faire le plein
La couleur
Afficher la vitesse

4Pratiquer

Exercice 1 · Attributs et méthodes d'un compte bancaire

Listez trois attributs et trois méthodes d'un objet « compte bancaire ».

Voir un indice

Un attribut répond à « qu'est-ce qu'il a ? », une méthode à « qu'est-ce qu'il fait ? ».

Voir le corrigé
Attributs : numéro, titulaire, solde
Méthodes  : déposer(montant), retirer(montant), afficher_solde()

Exercice 2 · Procédural ou objet ?

Pour chaque situation, dites si l'approche objet apporte un vrai avantage : (1) un script de 10 lignes qui convertit des dirhams en euros ; (2) une application de gestion d'une pharmacie avec produits, clients, ordonnances et factures.

Voir le corrigé
1. Non : un petit script procédural suffit.
2. Oui : beaucoup d'entités (produit, client, ordonnance, facture)
   avec leurs données et leurs règles. Les regrouper en classes
   rend le code plus clair, réutilisable et facile à faire évoluer.

Exercice 3 · Les objets de votre quotidien

Choisissez un objet de votre quotidien (lampe, ascenseur, distributeur de billets...). Décrivez-le comme une classe : nom, 3 attributs, 3 méthodes.

Voir le corrigé
Classe Distributeur
  Attributs : billets_disponibles, banque, en_service
  Méthodes  : lire_carte(), verifier_code(code), donner_billets(montant)

5Vérifier

1. En POO, comment appelle-t-on les données d'un objet ?
2. Quel est le lien entre une classe et un objet ?
3. Quel avantage principal la POO apporte-t-elle sur un gros projet ?