Module 11 – Programmation orientée objet

Share Article

Objectifs du module

À la fin de ce module, l’élève doit être capable de :

  1. Comprendre les notions de base de la programmation orientée objet.
  2. Modéliser des objets concrets à l’aide de classes.
  3. Identifier les propriétés et les méthodes d’un objet.
  4. Comprendre la différence entre une classe et une instance.
  5. Utiliser les notions d’encapsulation, d’héritage, d’événement et de portée des noms.
  6. Transformer un programme structuré en programme orienté objet.
  7. Passer d’un programme console à une interface graphique simple avec boutons, zones de texte, boutons radio, etc.

1. Introduction à la programmation orientée objet

La programmation orientée objet, souvent appelée POO, est une manière d’organiser un programme autour d’objets.

Dans la programmation structurée, on pense surtout en termes de :

  • variables ;
  • fonctions ;
  • procédures ;
  • conditions ;
  • boucles.

Dans la programmation orientée objet, on pense plutôt en termes de :

  • objets ;
  • propriétés ;
  • méthodes ;
  • interactions entre objets.

Un objet informatique représente souvent un objet réel ou conceptuel.

Exemples :

Objet réelObjet informatique
Une voitureObjet Voiture
Un élèveObjet Eleve
Un compte bancaireObjet CompteBancaire
Un bouton dans une fenêtreObjet Bouton
Un produitObjet Produit

2. Classe et objet

2.1 La classe

Une classe est un modèle, un plan ou une structure qui décrit un type d’objet.

Elle définit :

  • les données de l’objet, appelées propriétés ou attributs ;
  • les actions possibles, appelées méthodes.

Exemple :

Classe : Voiture

Propriétés :
- marque
- modèle
- couleur
- vitesse

Méthodes :
- démarrer()
- accélérer()
- freiner()
- arrêter()

La classe ne représente pas encore une voiture précise. Elle décrit simplement ce qu’est une voiture dans le programme.


2.2 L’objet ou l’instance

Un objet est un élément créé à partir d’une classe.

On dit aussi qu’un objet est une instance d’une classe.

Exemple :

Classe : Voiture

Objet 1 :
- marque : Toyota
- modèle : Yaris
- couleur : rouge
- vitesse : 0

Objet 2 :
- marque : BMW
- modèle : Série 3
- couleur : noire
- vitesse : 0

Les deux objets viennent de la même classe, mais ils ont des valeurs différentes.


3. Propriétés et méthodes

3.1 Les propriétés

Les propriétés représentent les caractéristiques d’un objet.

Exemple avec une classe Eleve :

Classe : Eleve

Propriétés :
- nom
- prénom
- âge
- moyenne

Un objet concret pourrait être :

eleve1
nom : Dupont
prénom : Sarah
âge : 17
moyenne : 14.5

3.2 Les méthodes

Les méthodes représentent les actions qu’un objet peut effectuer.

Exemple :

Classe : CompteBancaire

Propriétés :
- titulaire
- solde

Méthodes :
- déposer()
- retirer()
- afficherSolde()

Une méthode ressemble à une fonction, mais elle appartient à une classe.


4. Exemple simple en pseudo-code

Classe CompteBancaire

    Propriété titulaire
    Propriété solde

    Méthode déposer(montant)
        solde = solde + montant
    Fin méthode

    Méthode retirer(montant)
        Si montant <= solde Alors
            solde = solde - montant
        Sinon
            Afficher "Solde insuffisant"
        Fin Si
    Fin méthode

    Méthode afficherSolde()
        Afficher solde
    Fin méthode

Fin Classe

Création d’un objet :

compte1 = nouveau CompteBancaire
compte1.titulaire = "Lucas"
compte1.solde = 100

compte1.déposer(50)
compte1.afficherSolde()

Résultat :

150

5. Encapsulation

L’encapsulation consiste à protéger les données internes d’un objet.

En programmation orientée objet, on évite souvent de modifier directement les propriétés d’un objet depuis l’extérieur.

On utilise plutôt des méthodes.

Exemple à éviter :

compte.solde = -500

Cela pose problème, car un solde ne devrait pas forcément devenir négatif sans contrôle.

Meilleure solution :

compte.retirer(500)

La méthode retirer() peut vérifier si l’opération est autorisée.


Exemple

Classe CompteBancaire

    Propriété privée solde

    Méthode déposer(montant)
        Si montant > 0 Alors
            solde = solde + montant
        Fin Si
    Fin méthode

    Méthode retirer(montant)
        Si montant > 0 ET montant <= solde Alors
            solde = solde - montant
        Sinon
            Afficher "Retrait impossible"
        Fin Si
    Fin méthode

Fin Classe

Ici, la propriété solde est protégée. Elle ne peut pas être modifiée n’importe comment.


6. Portée des noms

La portée d’un nom indique où une variable, une propriété ou une méthode peut être utilisée.

On distingue généralement :

Type de portéeDescription
LocaleAccessible uniquement dans une méthode ou une fonction
GlobaleAccessible dans tout le programme
PrivéeAccessible uniquement dans la classe
PubliqueAccessible depuis l’extérieur de la classe

Exemple

Classe Personne

    Propriété privée nom

    Méthode publique définirNom(nouveauNom)
        nom = nouveauNom
    Fin méthode

    Méthode publique afficherNom()
        Afficher nom
    Fin méthode

Fin Classe

La propriété nom est privée.
Elle est uniquement accessible à l’intérieur de la classe Personne.


7. Héritage

L’héritage permet de créer une nouvelle classe à partir d’une classe existante.

La nouvelle classe récupère les propriétés et méthodes de la classe de base.

Exemple :

Classe Animal

    Propriété nom

    Méthode manger()
        Afficher "L’animal mange"
    Fin méthode

Fin Classe

On peut créer une classe Chien qui hérite de Animal.

Classe Chien hérite de Animal

    Méthode aboyer()
        Afficher "Wouf"
    Fin méthode

Fin Classe

Un chien est un animal.
Il peut donc manger, mais il peut aussi aboyer.


Schéma conceptuel

Animal
│
├── Chien
│   └── aboyer()
│
└── Chat
    └── miauler()

La classe Animal contient ce qui est commun.
Les classes Chien et Chat ajoutent des comportements spécifiques.


8. Événement

Un événement est une action qui se produit dans un programme, souvent dans une interface graphique.

Exemples d’événements :

  • clic sur un bouton ;
  • saisie dans une zone de texte ;
  • sélection d’un bouton radio ;
  • déplacement de la souris ;
  • fermeture d’une fenêtre.

Exemple :

Quand l’utilisateur clique sur le bouton "Calculer"
    Lire la valeur dans la zone de texte
    Effectuer le calcul
    Afficher le résultat
Fin

Dans une interface graphique, les objets comme les boutons ou les zones de texte possèdent leurs propres propriétés et événements.


9. Constructeur

Le constructeur est une méthode spéciale appelée automatiquement lorsqu’un objet est créé.

Il sert souvent à initialiser les propriétés de l’objet.

Exemple :

Classe Produit

    Propriété nom
    Propriété prix

    Constructeur(nomProduit, prixProduit)
        nom = nomProduit
        prix = prixProduit
    Fin constructeur

Fin Classe

Création d’un objet :

produit1 = nouveau Produit("Clavier", 29.99)

L’objet est directement créé avec un nom et un prix.


10. Destructeur

Le destructeur est une méthode spéciale appelée lorsqu’un objet est supprimé ou n’est plus utilisé.

Il peut servir à libérer des ressources.

Exemple conceptuel :

Classe Fichier

    Constructeur()
        ouvrir le fichier
    Fin constructeur

    Destructeur()
        fermer le fichier
    Fin destructeur

Fin Classe

Le destructeur est moins utilisé dans certains langages modernes, car la mémoire est souvent gérée automatiquement.


11. Surcharge

La surcharge consiste à avoir plusieurs méthodes portant le même nom, mais avec des paramètres différents.

Exemple :

Méthode afficher()
    Afficher "Bonjour"
Fin méthode

Méthode afficher(message)
    Afficher message
Fin méthode

La méthode appelée dépend du nombre ou du type de paramètres envoyés.


12. Passage de messages

En programmation orientée objet, les objets communiquent entre eux en s’envoyant des messages.

Appeler une méthode d’un objet revient à lui envoyer un message.

Exemple :

voiture.accélérer()

Cela signifie :

On demande à l’objet voiture d’exécuter sa méthode accélérer.

Autre exemple :

compte.retirer(50)

Cela signifie :

On envoie au compte le message : retire 50 euros.

13. Conceptualisation d’objets concrets

Pour créer une classe à partir d’un objet réel, on peut se poser trois questions :

  1. Quel objet veut-on représenter ?
  2. Quelles sont ses caractéristiques ?
  3. Que peut-il faire ?

Exemple 1 : une lampe

Classe Lampe

Propriétés :
- couleur
- puissance
- estAllumée

Méthodes :
- allumer()
- éteindre()
- changerPuissance()

Exemple 2 : un étudiant

Classe Etudiant

Propriétés :
- nom
- prénom
- âge
- notes

Méthodes :
- ajouterNote()
- calculerMoyenne()
- afficherBulletin()

Exemple 3 : un produit

Classe Produit

Propriétés :
- nom
- prix
- stock

Méthodes :
- vendre()
- réapprovisionner()
- afficherPrix()

14. Passage de la programmation structurée à la POO

14.1 Programme structuré

Exemple en mode console :

nom = "Clavier"
prix = 29.99
quantité = 3

total = prix * quantité

Afficher "Produit : " + nom
Afficher "Total : " + total

Ce programme fonctionne, mais les données sont séparées du comportement.


14.2 Version orientée objet

Classe Produit

    Propriété nom
    Propriété prix
    Propriété quantité

    Méthode calculerTotal()
        Retourner prix * quantité
    Fin méthode

    Méthode afficher()
        Afficher "Produit : " + nom
        Afficher "Total : " + calculerTotal()
    Fin méthode

Fin Classe

Utilisation :

produit1 = nouveau Produit
produit1.nom = "Clavier"
produit1.prix = 29.99
produit1.quantité = 3

produit1.afficher()

Ici, les données et les actions sont regroupées dans une même classe.


15. Passage du mode console au mode fenêtré

15.1 Mode console

Dans un programme console, l’utilisateur interagit avec le programme en tapant du texte.

Exemple :

Afficher "Entrez votre nom :"
Lire nom
Afficher "Bonjour " + nom

15.2 Mode fenêtré

Dans un programme fenêtré, l’utilisateur interagit avec des éléments graphiques :

  • fenêtre ;
  • bouton ;
  • zone de texte ;
  • étiquette ;
  • bouton radio ;
  • case à cocher ;
  • liste déroulante.

Exemple :

Fenêtre : Application de bienvenue

Zone de texte : txtNom
Bouton : btnValider
Étiquette : lblMessage

Quand l’utilisateur clique sur le bouton :

Événement clic sur btnValider

    nom = txtNom.texte
    lblMessage.texte = "Bonjour " + nom

Fin événement

16. Les contrôles graphiques

ContrôleRôle
BoutonDéclencher une action
Zone de texteSaisir une information
ÉtiquetteAfficher un texte
Bouton radioChoisir une option parmi plusieurs
Case à cocherActiver ou désactiver une option
Liste déroulanteChoisir une valeur dans une liste

Exemple avec bouton radio

Application : calculer un prix avec livraison.

Zone de texte : txtPrix
Bouton radio : rdbStandard
Bouton radio : rdbExpress
Bouton : btnCalculer
Étiquette : lblResultat

Pseudo-code :

Quand btnCalculer est cliqué

    prix = convertir txtPrix.texte en nombre

    Si rdbStandard est sélectionné Alors
        frais = 5
    Sinon Si rdbExpress est sélectionné Alors
        frais = 10
    Fin Si

    total = prix + frais

    lblResultat.texte = "Total : " + total + " €"

Fin

17. Exemple complet : application de gestion de produit

Classe Produit

Classe Produit

    Propriété privée nom
    Propriété privée prix
    Propriété privée stock

    Constructeur(nomProduit, prixProduit, stockProduit)
        nom = nomProduit
        prix = prixProduit
        stock = stockProduit
    Fin constructeur

    Méthode vendre(quantité)
        Si quantité <= stock Alors
            stock = stock - quantité
            Retourner vrai
        Sinon
            Retourner faux
        Fin Si
    Fin méthode

    Méthode réapprovisionner(quantité)
        Si quantité > 0 Alors
            stock = stock + quantité
        Fin Si
    Fin méthode

    Méthode afficherInfos()
        Retourner nom + " - " + prix + " € - Stock : " + stock
    Fin méthode

Fin Classe

Interface graphique

Contrôles :

txtNom
txtPrix
txtStock
txtQuantite
btnCreerProduit
btnVendre
btnReapprovisionner
lblResultat

Événement : créer un produit

Quand btnCreerProduit est cliqué

    nom = txtNom.texte
    prix = convertir txtPrix.texte en nombre
    stock = convertir txtStock.texte en nombre

    produit = nouveau Produit(nom, prix, stock)

    lblResultat.texte = produit.afficherInfos()

Fin

Événement : vendre

Quand btnVendre est cliqué

    quantité = convertir txtQuantite.texte en nombre

    Si produit.vendre(quantité) Alors
        lblResultat.texte = "Vente effectuée. " + produit.afficherInfos()
    Sinon
        lblResultat.texte = "Stock insuffisant."
    Fin Si

Fin

18. Activité 1 : identifier classe, propriétés et méthodes

Pour chaque objet suivant, compléter les propriétés et méthodes.

Objet 1 : Téléphone

Classe : Téléphone

Propriétés :
-
-
-

Méthodes :
-
-
-

Correction possible :

Propriétés :
- marque
- modèle
- niveauBatterie

Méthodes :
- appeler()
- envoyerMessage()
- recharger()

Objet 2 : Livre

Classe : Livre

Propriétés :
-
-
-

Méthodes :
-
-
-

Correction possible :

Propriétés :
- titre
- auteur
- nombrePages

Méthodes :
- ouvrir()
- fermer()
- afficherInformations()

Objet 3 : Compte bancaire

Classe : CompteBancaire

Propriétés :
-
-
-

Méthodes :
-
-
-

Correction possible :

Propriétés :
- titulaire
- numéroCompte
- solde

Méthodes :
- déposer()
- retirer()
- afficherSolde()

19. Activité 2 : transformer un programme structuré en POO

Programme structuré

nom = "Jean"
note1 = 12
note2 = 16
note3 = 14

moyenne = (note1 + note2 + note3) / 3

Afficher nom
Afficher moyenne

Travail demandé

Créer une classe Eleve avec :

Propriétés :

nom
note1
note2
note3

Méthodes :

calculerMoyenne()
afficherInformations()

Correction possible

Classe Eleve

    Propriété nom
    Propriété note1
    Propriété note2
    Propriété note3

    Méthode calculerMoyenne()
        Retourner (note1 + note2 + note3) / 3
    Fin méthode

    Méthode afficherInformations()
        Afficher nom
        Afficher calculerMoyenne()
    Fin méthode

Fin Classe

Utilisation :

eleve1 = nouveau Eleve
eleve1.nom = "Jean"
eleve1.note1 = 12
eleve1.note2 = 16
eleve1.note3 = 14

eleve1.afficherInformations()

20. Activité 3 : créer une interface graphique

Application : calcul de moyenne

Contrôles nécessaires :

txtNom
txtNote1
txtNote2
txtNote3
btnCalculer
lblResultat

Événement :

Quand btnCalculer est cliqué

    nom = txtNom.texte
    note1 = convertir txtNote1.texte en nombre
    note2 = convertir txtNote2.texte en nombre
    note3 = convertir txtNote3.texte en nombre

    eleve = nouveau Eleve(nom, note1, note2, note3)

    moyenne = eleve.calculerMoyenne()

    lblResultat.texte = nom + " a une moyenne de " + moyenne

Fin

21. Synthèse du module

La programmation orientée objet permet d’organiser un programme autour d’objets.

Une classe est un modèle.
Un objet est une instance de cette classe.
Une propriété décrit l’état d’un objet.
Une méthode décrit une action possible.
L’encapsulation protège les données.
L’héritage permet de réutiliser du code.
Un événement permet de réagir à une action de l’utilisateur.
Un constructeur initialise un objet.
La surcharge permet d’avoir plusieurs méthodes avec le même nom.
Le passage de messages correspond à l’appel d’une méthode d’un objet.


22. Évaluation possible

Question 1

Quelle est la différence entre une classe et un objet ?

Réponse attendue :

Une classe est un modèle. Un objet est une instance créée à partir de cette classe.

Question 2

Dans la classe suivante, identifier les propriétés et les méthodes.

Classe Voiture

    Propriété marque
    Propriété vitesse

    Méthode accélérer()
    Méthode freiner()

Fin Classe

Réponse attendue :

Propriétés : marque, vitesse
Méthodes : accélérer(), freiner()

Question 3

Créer une classe Animal avec deux propriétés et deux méthodes.

Correction possible :

Classe Animal

    Propriété nom
    Propriété âge

    Méthode manger()
        Afficher "L’animal mange"
    Fin méthode

    Méthode dormir()
        Afficher "L’animal dort"
    Fin méthode

Fin Classe

Question 4

Transformer ce programme en classe :

longueur = 10
largeur = 5
surface = longueur * largeur
Afficher surface

Correction possible :

Classe Rectangle

    Propriété longueur
    Propriété largeur

    Méthode calculerSurface()
        Retourner longueur * largeur
    Fin méthode

Fin Classe

Question 5

Expliquer ce qu’est un événement dans une interface graphique.

Réponse attendue :

Un événement est une action qui se produit dans le programme, comme un clic sur un bouton ou une saisie dans une zone de texte.

23. Barème possible sur 20 points

CritèrePoints
Compréhension classe / objet4
Identification propriétés / méthodes4
Utilisation correcte de l’encapsulation3
Transformation structuré vers POO4
Compréhension des événements graphiques3
Clarté du pseudo-code2
Total20

24. Mini-projet final

Sujet

Créer une application de gestion simple d’un objet concret au choix.

Exemples possibles :

  • gestion d’un compte bancaire ;
  • gestion d’un produit ;
  • gestion d’un élève ;
  • gestion d’un véhicule ;
  • gestion d’un livre ;
  • gestion d’une commande.

Contraintes

L’application doit contenir :

  1. Une classe principale.
  2. Au moins trois propriétés.
  3. Au moins trois méthodes.
  4. Un constructeur.
  5. Une interface graphique simple.
  6. Au moins un bouton.
  7. Au moins une zone de texte.
  8. Au moins un événement de clic.
  9. Une transformation claire d’un raisonnement structuré vers un raisonnement orienté objet.

Exemple de sujet accepté

Classe : CompteBancaire

Propriétés :
- titulaire
- solde
- numéroCompte

Méthodes :
- déposer()
- retirer()
- afficherSolde()

Interface :

txtTitulaire
txtMontant
btnDepot
btnRetrait
lblSolde

Événement :

Quand btnDepot est cliqué
    montant = convertir txtMontant.texte en nombre
    compte.déposer(montant)
    lblSolde.texte = compte.afficherSolde()
Fin

25. Résumé à donner aux élèves

La programmation orientée objet consiste à représenter des éléments du monde réel sous forme d’objets informatiques.

Chaque objet est créé à partir d’une classe.

Une classe contient :
- des propriétés, qui décrivent l’objet ;
- des méthodes, qui décrivent ce que l’objet peut faire.

Dans une interface graphique, les objets comme les boutons et les zones de texte réagissent à des événements, par exemple un clic.

La POO permet de mieux organiser le code, de le rendre plus lisible, plus réutilisable et plus facile à faire évoluer.

You might also like

3ème année

Charte graphique – Brand Identiy

Exercice Transformez votre logo avec les exemples que j’ai donné. Soyez-le plus complet possible. Aidez-vous de AI ou de site de génération de Brand identity

#Mindey

@mindey