POO
CM
POO
• POO : paradigme de [Link] perme0ant de
• Organiser le code en u1lisant des objets, qui sont des
instances de classes,
• modéliser les interac1ons et les rela+ons entre les
objets.
• Offrir une abstrac1on efficace et modulaire pour
résoudre des problèmes complexes.
• Concepts clés de la POO
• classes, objets,
• encapsula1on, abstrac1on, héritage, polymorphisme.
POO
Classe
• Une classe est une abstraction qui encapsule les données et
le comportement liés à un concept particulier.
• Une structure qui définit les attributs et les méthodes que
les objets de cette classe auront
Voiture
• Un modèle ou un plan pour créer des objets Numéro de série : int
Éléments de la classe Poids : double
Immatriculation : String
Kilométrage : double
• Attributs
Démarrer ()
• Caractéristiques/propriété de la classe Arrêter()
Rouler()
• Méthodes
• Fonctions qui définissent le comportement des objets de cette
classe.
POO
Objet
• Instance spécifique d’une classe
• Possède des a0ributs spécifiques et peut exécuter
les méthodes définies dans la classe.
Voiture
Voiture
Numéro de série : int
233434 : Numéro de série
Poids : double
1500 kg : Poids
Immatriculation : String
8864 YF 17 : Immatriculation
Kilométrage : double
133 000 : kilométrage
Démarrer ()
Démarrer () Arrêter()
Arrêter() Rouler()
Rouler()
POO
Voiture 3
Voiture 2
3434 : Numéro de série
5323454 : Numéro de série 1700 kg : Poids
1500 kg : Poids 8634 YGG 75 : Immatriculation
64 YFT 17 : Immatriculation 15 000 : kilométrage
23 000 : kilométrage
Voiture
Voiture
Numéro de série : int
233434 : Numéro de série
Poids : double
1500 kg : Poids
Immatriculation : String
8864 YF 17 : Immatriculation
Kilométrage : double
133 000 : kilométrage
Démarrer ()
Démarrer () Arrêter()
Arrêter() Rouler()
Rouler()
POO
• [Link]
• Regrouper les aEributs et les méthodes d'une classe de
manière à ce qu'ils soient cachés à l'extérieur de la
classe, sauf ceux qui sont explicitement définis comme
accessibles.
• Protéger les données internes de la classe et de fournir
une interface de communica1on contrôlée avec
l'extérieur.
POO
• Héritage
• Créer une nouvelle classe (appelée sous-classe ou classe
dérivée) en utilisant une classe existante (appelée classe
de base ou classe mère) comme modèle.
• La sous-classe hérite des attributs et méthodes de la
classe de base, tout en pouvant ajouter des
fonctionnalités supplémentaires ou modifier le
comportement existant.
POO
• Intérêts
• Modularité
• Abstrac1on
• Réu1lisa1on du code
• Évolu1vité
• Associa1on avec UML
Exemple : classe Etudiant
• Création de la classe
Student
string name
int age
double[] grades
double average
bool result
calculateAverage ()
determineResult ()
displayInfo()
Exemple : classe Etudiant
• Création d’un objet
Student
string name
int age
double[] grades
double average
bool result
calculateAverage ()
determineResult ()
displayInfo()
Exemple : classe Etudiant
• Droit d'accès
• public : aEribut/méthode peuvent être appelés depuis
l’extérieur de l’objet
• private : aEribut/méthode ne peuvent pas être appelés
depuis l’extérieur de l’objet.
• Pourquoi protéger les a0ributs ?
• Pour contrôler leurs modifica1ons
• Note [0, 20], âge [15, 50]…
• Tous les a0ributs doivent être privées, toute
[Link] doit passer par les méthodes
Exemple : classe Etudiant
• Code des [Link] Student
• calculateAverage() string name
• determineResult() int age
• displayInfo() double[] grades
double average
• [Link] set et get bool result
• setName() / getName() calculateAverage ()
• setAge() / getAge() determineResult ()
• setGrades() displayInfo()
• getAverage()
Exemple : classe Etudiant
Constructeur / destructeur
Constructeur
• Méthode spéciale d'une classe appelée
[Link] lors de la cré[Link] d'un objet de
ce0e classe
• Son rôle principal est d'[Link] les a0ributs de
l'objet à des valeurs par défaut ou spécifiées
• Porte le même nom que la classe et n’a pas de type
de retour (pas même void)
• Il peut être surchargé pour différents ensembles de
paramètres
Constructeur / destructeur
Constructeur
Constructeur / destructeur
• Destructeur
• Méthode spéciale d'une classe qui est appelée
automa4quement lorsqu'un objet de ce8e classe est détruit
• Java
• Pas de destructeur en java
• C++
• Porte le nom de la classé précédent par ~ et n’a pas de type
de retour (pas même void)
• ~Student()
• U4lisé pour libérer des ressources (comme la mémoire
allouée dynamiquement) et effectuer des opéra4ons de
ne8oyage nécessaires.