Module 1Appréhender le paradigme de la POO
Chapitre 1 sur 10
Introduire la POO
Passer de la programmation procédurale à la programmation orientée objet et découvrir ses avantages.
- ≈ 110 min
- 4 leçons
- 1 vidéo
- 2 exercices
Module 1Appréhender le paradigme de la POO
Chapitre 1 sur 10
Passer de la programmation procédurale à la programmation orientée objet et découvrir ses avantages.
Objectifs
Avec ce chapitre, tu sauras…
Jusqu'ici (module M102), tu as découpé tes programmes en procédures et fonctions qui manipulent des données. Cette approche fonctionne très bien pour des programmes petits et moyens. Mais quand une application atteint des dizaines de milliers de lignes, elle devient difficile à faire évoluer. La programmation orientée objet propose une autre façon de penser.
Leçon 1
Algorithme CalculSomme100PremiersNombres
Variable i, S : Entier
Procédure Somme
Début
S := 0
Pour i de 1 à 100 Faire
S := S + i
FinPour
Ecrire("La somme des 100 premiers nombres est ", S)
Fin
Début
Somme
FinTableau: Les inconvénients de la programmation procédurale
| Inconvénient | Pourquoi |
|---|---|
| réutilisation difficile | les fonctions dépendent de données définies ailleurs : on ne peut pas les copier dans un autre projet sans tout emporter |
| maintenance difficile des grandes applications | modifier la structure d'une donnée oblige à retrouver et modifier toutes les fonctions qui l'utilisent |
Leçon 2
| Approche | Question de départ | Exemple : gestion de comptes bancaires |
|---|---|---|
| procédurale | « Que doit faire le système ? » | créditer un compte ? débiter un compte ? |
| orientée objet | « Sur quoi doit-il le faire ? De quoi doit être composé mon programme ? » | comment se présente (se structure) un compte bancaire ? |
Vidéo · À regarder
FRApprendre la Programmation Orientée Objets (POO) Python
MaxCode · YouTube
Leçon 3
| Avantage | Explication |
|---|---|
| modularité | les objets forment des modules compacts qui regroupent des données et des opérations : la complexité de l'application diminue (une classe = un module) |
| abstraction | les objets sont proches du monde réel (un compte, un stagiaire, un formateur), et on masque les détails inutiles à l'utilisateur |
| réutilisabilité | on réutilise des composants logiciels et même des architectures complexes ; l'héritage évite de dupliquer du code |
| conséquence | maintenance plus facile, productivité améliorée |
Leçon 4
| Période | Événement |
|---|---|
| années 1960-1970 | les concepts naissent dans les laboratoires de recherche |
| 1966-1967 | Simula regroupe données et procédures ; il introduit les notions d'objet et de classe |
| 1972 | Smalltalk généralise la notion d'objet : tout est objet |
| années 1980 | C++ (Bjarne Stroustrup, extension objet du C), Objective-C (utilisé notamment par Apple), Eiffel (Bertrand Meyer) |
| années 1990 |
1En programmation procédurale…
2Un objet réunit…
3La question de départ de la POO est plutôt…
4Masquer les détails inutiles à l'utilisateur s'appelle…
5Le premier langage à introduire objets et classes est…
6Java a été créé par…
L'essentiel du chapitre
L'envoi d'un SMS (exemple du résumé OFPPT)
| aujourd'hui | PHP (depuis la version 5), C#, VB.NET, PowerShell, Python, JavaScript, Kotlin… |
Les langages orientés objet sont nés de questions simples : la séparation données / procédures est-elle utile ? Pourquoi privilégier les procédures sur les données ? Pourquoi ne pas considérer qu'un programme est avant tout un ensemble d'objets, caractérisés par les opérations qu'ils connaissent ?
La programmation orientée objet (POO) organise un programme en un ensemble d'objets. Chaque objet réunit, au sein d'une même entité, une partie données (aspects statiques : ce qu'il est) et une partie traitements (aspects dynamiques : ce qu'il sait faire).
Tableau: Deux façons de poser le problème
class Compte:
def __init__(self, numero, solde):
self.numero = numero # données de l'objet
self.solde = solde
def deposer(self, montant): # traitements de l'objet
self.solde += montant
def retirer(self, montant):
self.solde -= montant
c = Compte("MA001", 1000)
c.deposer(500)
print(c.solde) # 1500Ne t'inquiète pas de la syntaxe : tu l'apprendras au chapitre 7. Remarque seulement que les données (numero, solde) et les traitements (deposer, retirer) sont réunis dans le même bloc.
La motivation de la POO est de concevoir, maintenir et exploiter facilement de gros logiciels.
Un développeur doit ajouter un nouveau type de compte (« compte épargne ») à une application bancaire de 50 000 lignes. Explique pourquoi c'est plus simple si l'application est écrite en POO, en utilisant les mots modularité, réutilisabilité et héritage.
Pour une application de gestion d'une bibliothèque, propose : (a) une liste de procédures, dans une approche procédurale ; (b) une liste d'objets, avec pour chacun deux données et deux traitements, dans une approche objet.
Qu'est-ce que la programmation orientée objets : l'idée générale en moins de trois minutes, en français.
Pour envoyer un SMS, tu tapes le message, choisis le contact et appuies sur « Envoyer ». Ce qui se passe en arrière-plan (encodage, réseau, antenne relais) est masqué car il ne te concerne pas. C'est l'abstraction : on utilise un objet par ce qu'il fait, sans connaître comment il le fait.