CodeGym /Cours Java /Frontend SELF FR /Introduction à l'OO

Introduction à l'OO

Frontend SELF FR
Niveau 39 , Leçon 1
Disponible

2.1 Concepts de base de l'OO

Au cœur de l'approche orientée objet de la programmation se trouve le paradigme OO. C'est lorsque toutes les entités du programme sont considérées comme des objets. Les objets — ce sont des données + des méthodes/fonctions qui font des choses avec ces données.

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

Dans un programme moyen, il y a des milliers d'objets, dans un grand programme — des millions. Pour réduire un peu le chaos, il a été décidé d'organiser les objets en classes, et les classes d'objets en une certaine hiérarchie.

C'est intéressant !
La notion d'hiérarchie de classes vient du monde animal, où il y a des humains qui sont des primates, qui sont des mammifères, etc.

Chaque objet a une classe, à partir de laquelle il est généré. D'une part, une classe est une sorte de modèle d'objet, d'autre part, c'est un objet indépendant avec ses propres caractéristiques (dont ci-dessous).

Pour mieux comprendre le concept de classes, consulte les définitions suivantes :

Classe — c'est un modèle ou un schéma pour créer des objets, qui définit les attributs et les méthodes, caractéristiques pour tous les objets de ce type. Les classes permettent d'organiser les données et les fonctions qui travaillent avec ces données en une entité unique.

Objet — une instance de classe. Chaque objet possède un état (déterminé par les attributs) et un comportement (déterminé par les méthodes).

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 leur accès.

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

Polymorphisme — permet d'utiliser une interface unique pour travailler avec des objets de différentes classes. Ceci est atteint grâce à la redéfinition des méthodes dans les classes enfants qui héritent des parents.

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 ne serait-ce que la moitié — super. Ensuite, nous détaillerons chacun de ces points.

2.2 Abstraction

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

Imagine que tu conçois la structure de ta future entreprise. Tu peux répartir les responsabilités du secrétaire : les « répartir » sur plusieurs autres postes. Tu peux diviser le poste de directeur exécutif 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-le, une bonne division du programme en objets. En général, tout grand programme peut être conçu de dizaines de manières différentes en termes d'objets interactifs. L'abstraction permet de sélectionner les caractéristiques principales et de négliger les secondaires.

abstraction

L'abstraction — c'est comme une stratégie dans le domaine militaire. Une mauvaise stratégie — et aucune tactique brillante ne pourra corriger la situation.

2.3 Encapsulation

Le but de l'encapsulation est d'améliorer la qualité des interactions entre les choses en les simplifiant.

Encapsulation

Et le meilleur moyen de simplifier quelque chose — c'est de cacher tout ce qui est complexe aux yeux des autres. Par exemple, si vous êtes assis dans le cockpit d'un Boeing, vous ne comprendrez pas immédiatement comment le piloter :

cockpit du Boeing

D'un autre côté, pour les passagers de l'avion, tout semble plus simple : ils achètent un billet, s'assoient dans l'avion, décollent et atterrissent. On peut facilement voyager d'un continent à l'autre, en ayant seulement les compétences de « acheter un billet » et « monter dans l'avion ». Toutes les complexités comme la préparation de l'avion au vol, le décollage, l'atterrissage et diverses situations d'urgence sont cachées de nous. Sans parler de la navigation par satellite, de l'autopilote et des centres de contrôle dans les aéroports. Tout cela simplifie notre vie.

Du point de vue de la programmation, l'encapsulation — c'est la « dissimulation de l'implémentation ». J'aime cette définition. Notre classe peut contenir des centaines de méthodes et réaliser des comportements très complexes dans diverses situations. Mais nous pouvons cacher toutes ses méthodes (en encadrant leurs noms par « __ » de deux côtés), et pour interagir avec d'autres classes, n'en laisser que deux ou trois. Ainsi, toutes les autres classes de notre programme ne verront que ces trois méthodes dans cette classe et n'appelleront que celles-ci. Et toute la complexité sera cachée à l'intérieur de la classe, comme le cockpit aux passagers heureux.

2.4 Héritage

L'héritage a deux aspects : l'aspect de la programmation et l'aspect de la vie réelle. Du point de vue de la programmation, l'héritage — c'est une relation spéciale entre deux classes. Mais il est beaucoup plus intéressant de savoir ce qu'est l'héritage du point de vue de la vie réelle.

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

  1. créer la chose dont nous avons besoin à partir de rien, en dépensant beaucoup de temps et d'efforts ;
  2. créer la chose dont nous avons besoin en nous basant sur une déjà existante.

La stratégie la plus optimale semble être : nous prenons une bonne solution existante, nous l'améliorons un peu, nous l'adaptons à nos besoins et nous l'utilisons.

Si nous suivons l'histoire de l'émergence de l'homme, il s'avère que depuis l'apparition de la vie sur la planète, des milliards d'années se sont écoulées. Et si nous imaginons que l'homme est apparu à partir du singe (sur la base du singe), seulement quelques millions d'années se sont écoulées. Créer à partir de zéro est plus long. Beaucoup plus long.

En programmation, il est aussi possible de créer une classe sur la base d'une autre. La nouvelle classe devient une descendante (héritière) d'une classe 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 adéquate comme parent de notre nouvelle classe, et alors toutes les données et les méthodes de la classe parent apparaissent automatiquement dans la nouvelle classe. Pratique, non?

2.5 Polymorphisme

Le polymorphisme — est un concept de la programmation. Il décrit une situation où derrière une interface unique se cachent différentes implémentations. Si on essaie de rechercher ses analogies dans la vie réelle, l'une de ces analogies pourrait être le processus de conduite d'une voiture.

Si une personne sait conduire un camion, elle peut aussi bien être au volant d'une ambulance, ou d'une voiture de sport. Une personne peut conduire une voiture peu importe le type de voiture, car elles ont toutes la même interface de conduite : un volant, des pédales et un levier de vitesses. L'intérieur des voitures est différent, mais elles ont toutes le même interface de conduite.

En revenant à la programmation, le polymorphisme permet de s'adresser de manière uniforme aux objets de différentes classes (généralement ayant un ancêtre commun) — une chose difficile à surestimer. Sa valeur est d'autant plus grande que le programme est vaste.

OO — ce sont des principes. Des lois internes. Chacun d'eux nous limite en quelque sorte, mais offre de grands avantages quand le programme atteint une grande taille. Les quatre principes de l'OO sont comme les quatre pieds d'une chaise. Enlevez ne serait-ce qu'un, et tout le système devient instable.

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