Fiche de révision : Programmation orientée objet

Plan du Cours

  1. Paradigmes et repères historiques
  2. Classes, objets et état
  3. Références, visibilité et instanciation
  4. Constructeurs et encapsulation
  5. Méthodes et accès contrôlé
  6. Objectifs et avantages de la POO

Repères chronologiques

  1. fin des années 1960Les concepts de la POO apparaissent vers la fin de cette décennie.
  2. 1966Simula devient le premier langage à regrouper données et procédures.
  3. 1972Simula I formalise les notions d’objet et de classe.
  4. 1972Smalltalk généralise la notion d’objet.
  5. 23 mai 1995Java naît et est créé par Sun Microsystems.
  6. 2009Oracle rachète Sun Microsystems.

1. Paradigmes et repères historiques

Notions clés & Définitions

  • Programmation procédurale : Découpage du programme en procédures ou fonctions qui manipulent des données séparées de leurs traitements.
  • Programmation orientée objet : Décomposition d’une application en objets qui communiquent pour accomplir des tâches et réunissent chacun des données et des traitements.

★ À maîtriser

📌 L’unité de travail est la fonction en programmation procédurale, tandis qu’elle est l’objet en programmation orientée objet.

Compléments

  • Les variables citées sont :

    • entiers
    • chaînes
    • structures
    • tableaux
  • La séparation des données et des traitements en programmation procédurale peut rendre difficiles la réutilisation du code et la maintenance de grandes applications.

  • La POO applique l’idée « diviser pour régner » en décomposant un problème en problèmes plus simples.

  • Parmi les langages cités comme apparus dans les années 1980 figurent :

    • Eiffel, créé par Bertrand Meyer
    • C++, créé par Bjarne Stroustrup
    • Objective-C, utilisé notamment pour le développement iOS
  • Parmi les langages fondés sur les principes de la POO figurent :

    • PHP à partir de la version 5
    • C#
    • Ruby
    • Python

Astuce mémo

Fonction en procédural, objet en POO

2. Classes, objets et état

Notions clés & Définitions

  • Classe : Modèle, comparable à un type, à partir duquel on crée des objets qui partagent des propriétés et des comportements communs.
  • Objet : Instance de sa classe.
  • Attribut : Propriété définie par un nom, un type et éventuellement une valeur initiale, qui caractérise l’état d’un objet.
  • Méthode : Une méthode représente le comportement ou les actions d’un objet.
  • État d’un objet : Valeurs actuelles des attributs de l’objet.

Points essentiels

  • Une classe comporte un nom, une composante statique constituée de ses attributs et une composante dynamique constituée de ses méthodes.

  • La classe Etudiant peut décrire un étudiant avec son nom, son CIN, son année de naissance et ses notes.

  • Un attribut peut être de type simple — entier, réel, chaîne ou caractère — ou être un objet d’une autre classe, comme Voiture ou Etudiant.

  • En Python, les attributs d’instance sont souvent créés dans init avec self.nom_attribut.

  • Les objets peuvent changer d’état au cours de leur cycle de vie, qui comporte une succession de changements d’état.

  • Un feu de signalisation peut avoir trois valeurs possibles pour sa couleur.

Astuce mémo

Une classe comme moule, ses objets comme exemplaires

3. Références, visibilité et instanciation

Notions clés & Définitions

  • Référence : Désigne un objet et permet d’y accéder sans être l’objet lui-même ; elle représente son adresse en mémoire, comme un pointeur vers son emplacement.
  • Visibilité : Définit qui peut accéder aux informations d’une classe ou appeler ses éléments.

★ À maîtriser

📌 Pour accéder à un attribut, on écrit la référence de l’objet, un point, puis le nom de l’attribut.

  • Les marqueurs UML de visibilité sont :
      • pour public
    • pour protégé

      • pour privé

📌 Un élément public est accessible depuis toutes les classes, un élément protégé est réservé à la classe et aux classes héritières, et un élément privé est accessible uniquement aux méthodes de sa classe, pas aux classes héritières.

  • L’instanciation comporte deux étapes : créer l’objet en mémoire à partir de la classe, puis initialiser ses attributs.

Compléments

  • Dans l’expression etudiant.nom, etudiant est la référence à l’objet et nom est l’attribut consulté.

  • En Python, un attribut préfixé par _ est considéré comme interne par convention.

  • En Python, un attribut préfixé par __ bénéficie d’un mécanisme de renommage, mais cela ne constitue pas une confidentialité absolue.

  • En Python, l’appel de la classe crée l’objet et déclenche son constructeur init.

Astuce mémo

La référence désigne l’objet sans être l’objet

4. Constructeurs et encapsulation

Notions clés & Définitions

  • Constructeur : Méthode appelée lors de la création de chaque objet pour initialiser ses attributs ; elle peut recevoir zéro, un ou plusieurs paramètres et n’a pas de type de retour.
  • Encapsulation : Principe qui réunit dans un même objet les données, sous forme d’attributs, et le code, sous forme de méthodes, tout en protégeant les informations et en pouvant les masquer aux autres objets.
  • Destructeur : Méthode particulière associée à la destruction d’un objet et qui n’a pas de type de retour.

★ À maîtriser

  • En Python, la méthode d’initialisation du constructeur est init.

  • L’encapsulation limite l’accès direct aux attributs, évite des modifications accidentelles et permet un accès contrôlé par des méthodes spécifiques.

Compléments

📌 Dans le cours, un constructeur sans paramètre est appelé constructeur par défaut, tandis qu’un constructeur avec au moins un paramètre est paramétré.

  • En Python, si aucun init n’est défini, la classe hérite de l’initialisation par défaut de object.

  • Un destructeur peut servir à libérer des ressources ou à assurer la fermeture de certaines parties du code.

  • Python gère automatiquement la mémoire grâce au ramasse-miettes, si bien qu’un destructeur explicite est généralement inutile.

📌 Les ressources externes comme les fichiers ou les connexions réseau doivent être nettoyées correctement.

  • Dans l’exemple du compte bancaire, le solde est privé et le client le modifie par les opérations publiques deposer() ou retirer(), plutôt qu’en accédant directement à l’attribut.

Astuce mémo

Accès direct limité → état mieux protégé

5. Méthodes et accès contrôlé

Notions clés & Définitions

  • Méthode : Procédure ou fonction définie comme composante d’une classe ; elle comprend une entête et un bloc d’instructions qui constitue son corps.
  • Getter : Méthode qui retourne la valeur d’un attribut, généralement privé, et porte usuellement un nom de la forme getXXX.
  • Setter : Méthode qui modifie la valeur d’un attribut et porte usuellement un nom de la forme setXXX.
  • Paramètre : Valeur fournie à une méthode, qui peut effectuer des opérations sur cette valeur ou grâce à elle.

★ À maîtriser

📌 Une méthode d’instance s’appelle pour un objet en écrivant sa référence, un point, le nom de la méthode et ses arguments, sous la forme nomObjet.nomMethode(arg1, arg2, ...).

Compléments

  • L’entête d’une méthode précise son nom, son type de retour et une liste éventuellement vide de paramètres d’entrée typés.

  • Dans l’exemple de calculer_somme, self désigne l’objet courant, x et y sont des paramètres, et le résultat est renvoyé avec return.

  • Python n’oblige pas à déclarer le type des paramètres dans la signature d’une méthode.

📌 La visibilité d’une méthode détermine qui peut l’appeler : en UML, une méthode publique peut être appelée depuis toutes les classes, une méthode protégée est réservée aux classes héritières et une méthode privée est limitée à sa classe.

  • En Python, _nom et __nom indiquent des intentions de visibilité par convention de nommage, sans reproduire exactement les règles d’accès d’autres langages.

  • Une méthode est définie dans une classe, puis appelée sur un objet, et self représente l’objet concerné.

Astuce mémo

Getter lit, setter modifie

6. Objectifs et avantages de la POO

Notions clés & Définitions

  • Modularité : La modularité fait de chaque classe un module compact qui rassemble des données et des comportements, ce qui aide à réduire la complexité des applications.
  • Abstraction : Représentation d’entités proches du monde réel qui masque à l’utilisateur les détails inutiles de leur fonctionnement.
  • Réutilisabilité : Possibilité de reprendre une classe dans plusieurs programmes sans devoir la redéfinir à chaque fois.

★ À maîtriser

  • La POO vise à faciliter la conception, l’exploitation et la maintenabilité des gros programmes.

Compléments

  • Pour attribuer une note à un étudiant, l’utilisateur sélectionne l’étudiant et saisit la note, tandis que le mécanisme d’affectation reste caché.

  • L’héritage entre classes aide notamment à éviter la duplication du code.

  • Les avantages essentiels de la POO sont :

    • la modularité
    • l’abstraction
    • la réutilisation du code
    • une maintenance facilitée

Teste tes connaissances

Teste tes connaissances sur Programmation orientée objet avec 21 questions à choix multiples et corrections détaillées.

1. Comment la programmation procédurale organise-t-elle les données et les traitements ?

2. Dans une application orientée objet, comment les objets contribuent-ils à accomplir les tâches ?

Faire le QCM →

Révisez avec les flashcards

Mémorisez les concepts clés de Programmation orientée objet avec 48 flashcards interactives.

Comment la programmation procédurale organise-t-elle un programme ?

Elle le découpe en procédures ou fonctions qui manipulent des données séparées de leurs traitements.

Comment la programmation orientée objet organise-t-elle une application ?

En objets communicants réunissant chacun des données et des traitements.

Quelle est l’unité de travail en programmation procédurale ?

La fonction.

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