Objectifs du module
À la fin de ce module, l’élève doit être capable de :
- Comprendre les notions de base de la programmation orientée objet.
- Modéliser des objets concrets à l’aide de classes.
- Identifier les propriétés et les méthodes d’un objet.
- Comprendre la différence entre une classe et une instance.
- Utiliser les notions d’encapsulation, d’héritage, d’événement et de portée des noms.
- Transformer un programme structuré en programme orienté objet.
- 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éel | Objet informatique |
|---|---|
| Une voiture | Objet Voiture |
| Un élève | Objet Eleve |
| Un compte bancaire | Objet CompteBancaire |
| Un bouton dans une fenêtre | Objet Bouton |
| Un produit | Objet 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ée | Description |
|---|---|
| Locale | Accessible uniquement dans une méthode ou une fonction |
| Globale | Accessible dans tout le programme |
| Privée | Accessible uniquement dans la classe |
| Publique | Accessible 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 :
- Quel objet veut-on représenter ?
- Quelles sont ses caractéristiques ?
- 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ôle | Rôle |
|---|---|
| Bouton | Déclencher une action |
| Zone de texte | Saisir une information |
| Étiquette | Afficher un texte |
| Bouton radio | Choisir une option parmi plusieurs |
| Case à cocher | Activer ou désactiver une option |
| Liste déroulante | Choisir 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ère | Points |
|---|---|
| Compréhension classe / objet | 4 |
| Identification propriétés / méthodes | 4 |
| Utilisation correcte de l’encapsulation | 3 |
| Transformation structuré vers POO | 4 |
| Compréhension des événements graphiques | 3 |
| Clarté du pseudo-code | 2 |
| Total | 20 |
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 :
- Une classe principale.
- Au moins trois propriétés.
- Au moins trois méthodes.
- Un constructeur.
- Une interface graphique simple.
- Au moins un bouton.
- Au moins une zone de texte.
- Au moins un événement de clic.
- 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.


