CodeGym /Cours Java /Python SELF FR /Introduction à l'OOP

Introduction à l'OOP

Python SELF FR
Niveau 15 , Leçon 2
Disponible

2.1 Concepts de base de l'OOP

La programmation orientée objet repose sur le paradigme de l'OOP. C'est quand toutes les entités du programme sont considérées comme des objets. Les objets sont des données + méthodes/fonctions qui effectuent des actions sur ces données.

On peut aussi dire qu'un objet a un état et un comportement. L'état de l'objet est déterminé par ses données, qui sont stockées dans ses variables internes. Le comportement de l'objet est l'ensemble de toutes les actions effectuées par ses méthodes.

Il y a des milliers d'objets dans un programme moyen, des millions dans un grand. Pour réduire le chaos, on a décidé d'organiser les objets en classes, et les classes en une sorte de hiérarchie.

C'est intéressant! La conception de hiérarchie de classes a été empruntée au monde animal, où il y a des humains, qui sont des primates, qui sont des mammifères, etc.

Chaque objet a une classe utilisée pour le créer. D'un côté, une classe est un modèle d'objet, de l'autre, c'est un objet autonome avec ses caractéristiques propres (en bas).

Pour mieux comprendre la notion de classe, consulte les définitions suivantes:

Classe:

Une classe est un modèle ou un schéma pour créer des objets, qui définit les attributs et méthodes caractéristiques de tous les objets de ce type. Les classes permettent d'organiser les données et fonctions qui les manipulent en une unité cohérente.

Objet:

Un objet est une instance de classe. Chaque objet possède un état (défini par les attributs) et un comportement (défini par les méthodes).

Encapsulation:

L'encapsulation consiste à cacher l'implémentation interne de la classe et à fournir une interface pour interagir avec les objets de cette classe. Cela aide à protéger les données et à gérer l'accès à celles-ci.

Héritage:

L'héritage permet à une classe (enfant) d'hériter des attributs et méthodes d'une autre classe (parent). Cela favorise la réutilisation du code et simplifie sa maintenance.

Polymorphisme:

Le polymorphisme permet d'utiliser une interface unique pour travailler avec des objets de différentes classes. Ceci est obtenu par la redéfinition des méthodes dans les classes enfants, qui sont héritées des parents.

Abstraction:

L'abstraction consiste à extraire les caractéristiques communes des objets et à créer des classes qui représentent ces caractéristiques communes. Cela aide à simplifier les systèmes complexes et à les rendre plus compréhensibles.

Si tu as compris au moins la moitié – super. Ensuite, nous examinerons chacun de ces points plus en détail.

2.2 Abstraction

Un bon exemple d'abstraction dans la vie réelle est la description des postes dans une entreprise ou organisation. Le titre de poste est une chose, mais les responsabilités de chaque poste spécifique en sont une autre.

Imagine que tu conçois la structure de ta future entreprise. Tu peux distribuer les tâches d'un secrétaire entre plusieurs autres postes. Tu peux diviser le poste de directeur général en plusieurs postes indépendants : directeur financier, directeur technique, directeur marketing, directeur des ressources humaines. Ou, par exemple, combiner les postes de gestionnaire de bureau et de recruteur en un seul.

Du point de vue de la programmation, l'abstraction est, disons, une bonne manière de diviser un programme en objets. Généralement, tout grand programme peut être présenté sous forme d'objets interagissant de différentes manières. L'abstraction permet de sélectionner les caractéristiques principales et d'omettre celles qui sont secondaires.

L'abstraction, c'est un peu comme une stratégie militaire. Une mauvaise stratégie — et aucune tactique géniale ne peut redresser la situation.

2.3 Encapsulation

Le but de l'encapsulation est d'améliorer la qualité de l'interaction entre les éléments en simplifiant leur interaction.

Et le meilleur moyen de simplifier quelque chose est de cacher toute la complexité aux yeux indésirables. Par exemple, si on te met dans le cockpit d'un Boeing, tu ne comprendras pas tout de suite comment le piloter:

Par contre, pour les passagers de l'avion tout semble plus simple: tu achètes un billet, tu montes dans l'avion, il décolle et atterrit. Tu peux aisément voyager d'un continent à un autre, juste en sachant «acheter un billet» et «monter dans l'avion». Toutes les complexités sous forme de préparation de l'avion pour le vol, de décollage, d'atterrissage et de diverses situations imprévues sont cachées de nous. Sans parler de la navigation par satellite, du pilote automatique et des centres de contrôle dans les aéroports. Et cela nous rend la vie plus facile.

Du point de vue de la programmation, l'encapsulation est le «cachage de l'implémentation». J'aime cette définition. Notre classe peut contenir des centaines de méthodes et implémenter un comportement très complexe dans diverses situations. Mais nous pouvons cacher toutes ses méthodes aux regards indiscrets (en encadrant leurs noms par «__» des deux côtés), et pour l'interaction avec d'autres classes, ne laisser qu'une ou deux méthodes. Alors toutes les autres classes de notre programme ne verront que ces trois méthodes et appelleront spécifiquement celles-ci. Et toutes les complexités seront cachées à l'intérieur de la classe, comme le cockpit des pilotes pour les heureux passagers.

2.4 Héritage

L'héritage a deux facettes. Une facette de programmation et une facette de vie réelle. Du point de vue de la programmation, l'héritage est une relation spéciale entre deux classes. Mais ce qui est beaucoup plus intéressant, c'est ce que l'héritage signifie du point de vue de la vie réelle.

Si nous devions créer quelque chose dans la vie réelle, nous avons deux options:

  1. créer ce dont nous avons besoin à partir de zéro, en dépensant beaucoup de temps et d'énergie;
  2. créer ce dont nous avons besoin sur la base de ce qui existe déjà.

La stratégie la plus optimale ressemble à ceci: prendre une bonne solution existante, la modifier un peu, l'adapter à nos besoins et l'utiliser.

Si nous suivons l'histoire de l'homme, nous découvrirons que depuis l'apparition de la vie sur la planète, des milliards d'années se sont écoulés. Et si on imagine que l'homme est issu du singe (basé sur le singe), il ne s'est écoulé que quelques millions d'années. Créer à partir de zéro prend plus de temps. Beaucoup plus de temps.

En programmation aussi, il est possible de créer une classe basée sur une autre. La nouvelle classe devient une descendante (héritière) déjà existante. C'est très avantageux quand il y a une classe qui contient 80%–90% des données et méthodes dont nous avons besoin. Nous déclarons simplement la classe appropriée comme parent de notre nouvelle classe, alors dans la nouvelle classe, toutes les données et méthodes de la classe parent apparaissent automatiquement. Pratique, n'est-ce pas?

2.5 Polymorphisme

Le polymorphisme est un concept de programmation. Il décrit une situation où différentes implémentations sont cachées derrière une seule interface. Si on essaie de chercher ses analogies dans la vraie vie, l'une d'elles serait le processus de conduite d'une voiture.

Si une personne peut conduire un camion, elle peut également conduire une ambulance ou une voiture de sport. Une personne peut conduire une voiture indépendamment du type de voiture, car elles ont toutes la même interface de conduite: volant, pédales et levier de vitesse. L'architecture interne des voitures est différente, mais elles ont toutes la même interface de commande.

Revenons à la programmation, le polymorphisme permet d'interagir de manière uniforme avec des objets de diverses classes (ayant généralement un ancêtre commun) – c'est un atout qu'il est difficile de surestimer. Sa valeur est d'autant plus grande que le programme est important.

OOP — ce sont des principes. Des lois internes. Chacun d'eux nous limite quelque part, mais nous donne de grands avantages lorsque le programme atteint une grande taille. Les quatre principes de l'OOP sont comme les quatre pieds d'un tabouret. Si tu en enlèves même un seul, tout le système devient instable.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION