Fiche de révision : Piliers de la programmation orientée objet

Plan du Cours

  1. Principe et intérêt de l’héritage
  2. Formes d’héritage et constructeurs
  3. Visibilité dans les classes filles
  4. Polymorphisme et redéfinition
  5. Surcharge des méthodes
  6. Abstraction et classes abstraites
  7. Interfaces et contrats d’implémentation

1. Principe et intérêt de l’héritage

Notions clés & Définitions

  • Héritage : Relation de spécialisation ou de généralisation entre des classes, par laquelle une classe fille reprend les propriétés de sa classe mère et peut ajouter les siennes.

★ À maîtriser

📌 Si la classe A hérite de la classe B, A est la classe fille ou dérivée et B la classe mère ou super-classe ; A est une spécialisation de B et B une généralisation de A.

📌 Toute instance de la classe fille A peut être considérée comme un objet de la classe mère B, mais une instance de B ne peut pas toujours être considérée comme un objet de A.

Compléments

  • L’héritage factorise le code en regroupant dans une classe mère les caractéristiques communes à plusieurs classes.

  • Placer les propriétés communes dans la classe mère évite de répéter leur déclaration et leurs modifications dans chaque classe fille.

Astuce mémo

La classe fille spécialise ; la classe mère généralise.

2. Formes d’héritage et constructeurs

Notions clés & Définitions

  • Héritage multiple : Permet à une classe d’hériter de plusieurs classes et de reprendre leurs attributs et leurs méthodes.
  • Héritage en cascade : Permet à une sous-classe de devenir elle-même la classe mère d’une autre classe.
  • Chaînage de constructeurs : Consiste à appeler le constructeur de la classe mère depuis le constructeur de la classe fille afin d’éviter de répéter l’initialisation des attributs hérités.

Points essentiels

  • Dans l’exemple du cours, Étudiant hérite à la fois de Personne et d’Être Vivant.

  • Si Étudiant hérite de Personne et ÉtudiantDeuxièmeCycle hérite d’Étudiant, alors ÉtudiantDeuxièmeCycle hérite aussi de Personne.

  • Dans l’exemple Python, le constructeur d’Étudiant appelle super().init(nom, cin, date_naiss) avant d’initialiser note1 et note2.

Astuce mémo

Personne → Étudiant → ÉtudiantDeuxièmeCycle.

3. Visibilité dans les classes filles

Points essentiels

📌 Si une classe mère déclare un attribut ou une méthode privé, ses classes filles ne peuvent ni y accéder ni le modifier.

📌 Pour permettre à une classe fille de lire ou de modifier un attribut hérité, la classe mère doit le déclarer protégé.

Astuce mémo

Privé : inaccessible à la fille ; protégé : accessible à la fille.

4. Polymorphisme et redéfinition

Notions clés & Définitions

  • Polymorphisme : Permet à des méthodes de même nom d’avoir des comportements différents ou d’agir sur des données de types différents.
  • Redéfinition : Remplace dans une classe fille le code d’une méthode héritée tout en conservant son en-tête.

★ À maîtriser

📌 L’héritage concerne les classes et leur hiérarchie, tandis que le polymorphisme concerne les méthodes des objets.

Compléments

📌 Une méthode redéfinie dans une classe fille peut aussi être appelée dans sa version initiale déclarée dans la classe mère.

  • Lorsqu’un objet de classe C appelle une méthode redéfinie, la recherche commence dans C puis remonte vers B et A si la méthode n’y est pas trouvée.

  • Dans l’exemple Personne–Étudiant, la méthode afficher() redéfinie dans Étudiant ajoute l’affichage de note1 et note2 à celui du nom et du CIN.

Astuce mémo

Dans la chaîne C → B → A, la recherche de m remonte vers les classes parentes.

5. Surcharge des méthodes

Notions clés & Définitions

  • Surcharge : Consiste à définir plusieurs méthodes de même nom avec des arguments différents, le choix de la méthode dépendant du nombre et du type des arguments.

Points essentiels

📌 La redéfinition change le code d’une méthode héritée en conservant son en-tête, tandis que la surcharge définit plusieurs méthodes de même nom avec des arguments différents.

6. Abstraction et classes abstraites

Notions clés & Définitions

  • Abstraction : Consiste à se concentrer sur les aspects essentiels d’un problème en négligeant les détails secondaires et en masquant la complexité interne du système.
  • Classe abstraite : Ne peut pas être instanciée et sert principalement de classe mère pour définir des fonctionnalités que ses sous-classes doivent implémenter.
  • Méthode abstraite : Possède une signature mais aucun corps et doit être déclarée dans une classe abstraite.

★ À maîtriser

📌 Une sous-classe ne peut être instanciée que si elle implémente toutes les méthodes abstraites héritées ; sinon, elle reste abstraite et ne peut pas être instanciée.

Compléments

📌 Une classe qui possède au moins une méthode abstraite est obligatoirement abstraite.

  • Dans l’exemple du cours, la classe Forme déclare les méthodes abstraites surface() et périmètre(), que ses classes filles doivent implémenter.

7. Interfaces et contrats d’implémentation

Notions clés & Définitions

  • Interface : Définit un nouveau type et constitue une forme particulière de classe dont toutes les méthodes sont abstraites.

★ À maîtriser

📌 Une classe qui implémente plusieurs interfaces doit fournir une implémentation pour toutes les méthodes abstraites de chacune d’elles.

  • Une interface spécifie un contrat en déclarant des méthodes sans les implémenter, et les classes qui l’implémentent doivent fournir leur corps.

Compléments

  • Le polymorphisme permet de traiter uniformément des objets de types différents lorsqu’ils respectent un même contrat d’interface.
  • Dans l’exemple du cours, une classe Personne ou Outils qui implémente Comparable doit fournir la méthode CompareTo(), faute de quoi elle reste abstraite.
  • Pour imposer l’impression aux formes, le cours propose soit d’ajouter la méthode abstraite Imprimer() à Forme, soit de faire implémenter à Forme l’interface Imprimable qui déclare Imprimer().

Teste tes connaissances

Teste tes connaissances sur Piliers de la programmation orientée objet avec 11 questions à choix multiples et corrections détaillées.

1. Quelle relation l’héritage établit-il entre une classe fille et une classe mère ?

2. Si une instance de la classe Chien peut être traitée comme un objet de la classe Animal, quelle conclusion est correcte ?

Faire le QCM →

Révisez avec les flashcards

Mémorisez les concepts clés de Piliers de la programmation orientée objet avec 10 flashcards interactives.

Quelles propriétés une classe fille reprend-elle de sa classe mère ?

Les propriétés de sa classe mère.

Si A hérite de B, comment appelle-t-on la classe A ?

La classe fille ou dérivée.

De combien de classes une classe peut-elle hériter avec l’héritage multiple ?

De plusieurs classes.

Voir les flashcards →

Cours similaires

Crée tes propres fiches de révision

Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.

Générateur de fiches