Concept POO pour débutants : qu'est-ce que l'abstraction ?

30 octobre 2021

Un concept clé dans Programmation orientée objet (POO) est une abstraction. Et c'est aussi l'un des plus déroutants.

L'abstraction dans la programmation orientée objet consiste à ne montrer que les attributs essentiels de quelque chose et à masquer toute information d'implémentation qui n'est pas nécessaire pour l'utilisateur.

Cela permet aux utilisateurs de ne pas être submergés par la logique cachée qui rend la logique complexe des utilisateurs. Ainsi, la POO fait abstraction de la logique cachée afin que l'utilisateur ne soit pas obligé de la comprendre ou même d'y penser.



Mais d'abord, laissez-nous vous donner un aperçu des POO.

Table des matières

Qu'est-ce que la POO ?

La POO ou la programmation orientée objet est un type de programmation qui est fondamental pour le paradigme de la programmation.

C'est la méthodologie de programmation la plus populaire qui est adaptée par de nombreux programmeurs au cours de leur carrière éducative.

Contrairement à la programmation procédurale, la programmation orientée objet présente divers avantages :

  • Les OOP gardent le Java code DRY, c'est-à-dire Ne vous répétez pas, en facilitant la maintenance, la modification et le débogage du code. Cela signifie qu'un programmeur peut réduire la répétition du code en extrayant le code commun et en le plaçant à un seul endroit.
  • Il est plus rapide et a une exécution plus facile que la programmation procédurale.
  • Vous pouvez développer des applications réutilisables dans un temps de développement plus court contenant moins de code à l'aide des OOP.
  • Il donne une structure de programme claire.

Il y a deux bases à la programmation orientée objet : classe et objet.

    Classer -Il s'agit d'un modèle d'objets ou d'un plan pour créer des objets spécifiques. Par exemple, une large catégorie comme un chien est une classe qui définit l'attribut comme la couleur, la race, le nom, etc., que les objets ou les instances de la classe.Objet -Les objets sont des instances de classe qui héritent de toutes les variables et méthodes d'une classe. Par exemple, une classe - Chien a des objets comme Dalmatien, Berger allemand, Saint-Bernard, Golden Retriever, etc.

Les OOP ont quatre piliers : l'héritage, l'abstraction, l'encapsulation et le polymorphisme.

    Héritage– Lorsqu'un objet enfant hérite de toutes les propriétés et comportements d'un objet parent, on parle d'héritage. Par exemple, un chiot dalmatien aura également les mêmes caractéristiques que ses parents.Abstraction– Cacher les détails et les fonctionnalités inutiles et ne montrer que ce qui est important pour travailler est une abstraction. Par exemple, les os, les muscles et d'autres éléments sont cachés à l'intérieur de notre peau, ce qui fournit une abstraction aux chiens et leur permet de faire d'autres actions et activités.Encapsulation- L'encapsulation signifie lier le code avec des données dans une seule unité ou les lier ensemble. Les classes et les objets sont encapsulés dans Java et d'autres langages POO. Par exemple, le chien est une classe qui englobe tous les types et races de chiens.Polymorphisme– Exécuter une même tâche de différentes manières s'appelle le polymorphisme. Par exemple, parler est une méthode mais se pratique différemment : un chien aboie, un humain parle, un chat miaule, un oiseau gazouille, etc.

Cet article se concentre sur un seul concept de POO - l'Abstraction.

Qu'est-ce qu'une abstraction en POO ?

Dans les POO, l'abstraction est l'un des concepts les plus importants qui permet aux programmeurs de se concentrer uniquement sur les aspects importants du système considéré.

L'abstraction permet au programmeur de se concentrer sur les détails d'implémentation des actions vers les classes, les méthodes disponibles, etc., pour simplifier la programmation.

Voir également 2 meilleures façons de se débarrasser des virus informatiques

Nous pouvons comprendre l'abstraction en utilisant des exemples d'héritage et d'encapsulation :

Dans une hiérarchie d'héritage, les classes parentes ou les classes supérieures contiennent une implémentation simple et générale, mais la classe enfant ou la classe inférieure contient une implémentation plus détaillée des classes supérieures. Ceci est une abstraction.

Lorsqu'un programmeur cache les détails d'implémentation d'une classe aux autres classes dans l'encapsulation, la classe est plus simple.

Exemple

Rien ne peut être mieux compris sans exemples. Les exemples fournissent une approche pratique qui permet à chacun de mieux comprendre de quoi quelqu'un parle.

Considérons quelques exemples concrets pour comprendre l'abstraction.

1. Cafetière

Plus de 1,4 milliard de tasses de café sont servies chaque jour dans le monde, et environ 45 % d'entre elles proviennent des États-Unis. Nous pouvons donc dire que le café est l'une des boissons les plus appréciées au monde.

Les cafés préparent le café à l'aide d'une machine à café en y injectant de l'eau et des grains de café. Ils allument la machine et sélectionnent ensuite le type de café requis, après quoi la machine prépare pour vous le café le plus délicieux.

Mais vous êtes-vous déjà arrêté et avez-vous découvert comment la machine prépare le café. Quelle est la température idéale qu'il utilise ? Quelle est la quantité de café qu'il met dedans ?

Aucun droit?

Ainsi, la machine à café fait abstraction de son fonctionnement interne et vous permet de préparer votre tasse de café et d'en profiter.

Le même concept est utilisé dans les langages de programmation orientés objet comme Java. Le fonctionnement interne du système est soustrait au programmeur afin qu'il puisse profiter de la programmation.

2. Voiture

Une voiture est un autre exemple concret d'abstraction.

La voiture est un système complexe composé de divers éléments tels que le moteur, la batterie, le radiateur, les essieux avant et arrière, le système de transmission, le système de direction, le système de suspension, le système électrique et bien d'autres.

Cependant, il n'est pas nécessaire de tout savoir sur ces pièces pour faire fonctionner la voiture.

L'utilisation d'une voiture est aussi simple que de tourner la clé dans le contact ou d'appuyer sur le bouton de démarrage, puis de conduire.

Il n'est pas nécessaire de comprendre comment le moteur de la voiture démarre, le système d'alimentation en carburant, le système électrique, etc. Vous pouvez démarrer votre voiture et partir.

3. Micro-ondes

Un micro-ondes est une machine complexe à l'intérieur mais possède une interface assez simple et facile à utiliser.

L'écran tactile ou les boutons sont tout ce avec quoi nous interagissons pour cuisiner, réchauffer, cuire, réchauffer et griller nos aliments.

De nos jours, les micro-ondes peuvent être démarrés à l'aide de téléphones portables et disposent de nombreuses fonctionnalités de menu de pré-cuisson telles que des gâteaux cuits au four, du lait chaud, des spaghettis, des pizzas, etc., qui ont des réglages de température et de temps prédéfinis. Nous n'avons qu'à sélectionner l'option et appuyer sur le bouton de démarrage.

Il n'est pas nécessaire de comprendre comment les aliments sont cuits, comment fonctionnent les micro-ondes, comment fonctionnent les réglages de température, etc.

Nous utilisons le micro-ondes et nous nous concentrons sur d'autres aspects importants tels que la saveur du gâteau, les ingrédients pour le thé/café, le temps de réchauffage et d'autres menus de cuisine.

Ceci est un autre excellent exemple d'abstraction, qui nous aide à comprendre la programmation orientée objet.

Comprenons maintenant la POO à l'aide d'un exemple technique.

4. Demande de passeport

Lors de la création d'une demande de passeport, vous devez accéder aux données d'un client à partir de la base de données, qui contient divers types de détails liés à divers clients.

Voir également 26 meilleurs logiciels d'enregistrement audio gratuits

Les enregistrements de la table des clients contiennent des informations relatives aux clients dans les colonnes suivantes :

  • Prénom
  • Nom de famille
  • Adresse
  • Numéro de contact
  • Aliments préférés
  • passe-temps
  • Films préférés
  • Chansons préférées
  • Preuve de citoyenneté américaine
  • Pièce d'identité avec photo émise par le gouvernement

Cependant, toutes les informations contenues dans ces colonnes ne sont pas pertinentes pour l'obtention d'un passeport.

Les enregistrements liés aux aliments préférés, aux passe-temps, aux chansons préférées et aux films préférés ne sont pas requis lors de la demande de passeport.

Ainsi, lorsque seuls les champs obligatoires sont sélectionnés dans le pool de données, l'abstraction peut être vue lorsque nous avons récupéré, sélectionné et/ou supprimé des informations relatives aux clients.

Ces informations peuvent être utilisées pour diverses autres utilisations telles que des applications bancaires, des applications hospitalières, des bases de données gouvernementales, des informations de portail, etc., sans grande modification.

C'est un avantage de l'abstraction dans la programmation orientée objet (POO).

Avec ces quatre exemples, nous espérons que vous comprendrez un peu mieux les POO. Comprenons maintenant comment l'abstraction est faite en Java.

L'abstraction en Java

En Java, l'abstraction peut être réalisée à l'aide d'interfaces et de classes abstraites.

1. Interface

L'interface est comme un plan de classe qui a des méthodes et des variables. Cependant, les méthodes déclarées dans une interface ne contiennent personne. Les méthodes et variables déclarées dans l'interface doivent être implémentées par la classe qui implémente l'interface.

Par exemple, une interface Fun contient les éléments suivants :

|__+_|

La classe Fun implémentant l'interface Fun doit implémenter play().

En java, l'interface est déclarée avec l'aide du mot-clé Interface et est utilisée pour fournir une abstraction totale.

Ainsi, toutes les méthodes d'interface sont publiques et ont un corps vide, tous les champs étant publics, statiques et finals par défaut.

Syntaxe de l'interface :

|__+_|

Une classe peut implémenter une interface et peut être implémentée à l'aide du mot clé implements. Cette classe doit implémenter toutes les méthodes et contenir toutes les variables déclarées dans les interfaces qu'elle implémente.

Importance

  • Le couplage lâche et l'abstraction totale peuvent être obtenus à l'aide d'interfaces.
  • Les interfaces contiennent des variables finales, statiques et publiques, donnant une abstraction totale, tandis que les classes abstraites donnent une abstraction partielle.
  • En Java, il est impossible d'effectuer plusieurs héritages, mais plusieurs héritages peuvent être obtenus à l'aide d'interfaces.

En tant que mise à jour de Java 8, des méthodes par défaut et statiques ont été ajoutées aux interfaces, et dans le cadre de Java 9, des méthodes privées ont été ajoutées aux interfaces.

2. Classe abstraite

Abstract est un mot clé en Java utilisé pour fournir une abstraction dans le cadre de la programmation orientée objet. C'est un modificateur de non-accès.

Classe abstraite - est une classe qui implémente partiellement l'abstraction en Java. Ici, l'abstraction partielle signifie que contrairement aux interfaces, toutes les méthodes n'ont pas de définition de méthode dans une classe abstraite.

Les objets de classe abstraite ne peuvent pas être instanciés, et donc toute sous-classe qui implémente une classe abstraite doit implémenter toutes ses méthodes, ou la sous-classe doit être déclarée elle-même une classe abstraite.

La syntaxe de la classe abstraite est :

|__+_|

Méthodes abstraites – sont des méthodes qui n'ont qu'une définition mais pas d'implémentation. Ils sont déclarés dans une classe abstraite à l'aide d'un modificateur de type abstrait.

Les méthodes abstraites sont également appelées responsabilité des sous-classes car elles dépendent également de la classe qui les implémente car elles font partie d'une classe abstraite.

La syntaxe d'une méthode abstraite est :

Type_retour abstrait (liste_paramètres) ;

Il existe quelques règles concernant les méthodes abstraites :

Une méthode abstraite ne peut être déclarée qu'au sein d'une classe abstraite. Ainsi, toute classe contenant une ou plusieurs méthodes abstraites doit être déclarée abstraite.

Voir également 5 correctifs pour empêcher le navigateur Avast de s'ouvrir au démarrage

Il existe quelques combinaisons illégales entre d'autres modificateurs et un modificateur abstrait qui doivent être reconnues -

  • Natif abstrait
  • Résumé strictfp
  • Résumé statique
  • Résumé synchronisé
  • Final
  • Résumé privé

Maintenant, la question se pose, si nous avons des interfaces, quand utilisons-nous des méthodes et des classes abstraites ?

Lorsque deux sous-classes ou plus ont un morceau de code similaire faisant la même chose mais l'implémentant différemment, des méthodes abstraites sont déclarées.

Avec les interfaces, vous pouvez uniquement définir la fonctionnalité mais ne pouvez pas l'implémenter, alors qu'avec une classe abstraite, les sous-classes peuvent implémenter ou remplacer les méthodes.

Différence

Nous sommes maintenant familiarisés avec l'abstraction en Java et comment nous pouvons y parvenir. Considérons maintenant quelques différences pour clarifier notre confusion sur la différence entre l'abstraction et l'encapsulation et pourquoi nous avons besoin d'une classe abstraite et d'interfaces.

1. Abstraction et encapsulation

L'abstraction et l'encapsulation font partie des quatre piliers des POO - héritage, encapsulation, polymorphisme et abstraction.

Cependant, contrairement aux deux autres, la plupart des gens confondent toujours l'encapsulation et l'abstraction car ils ont une signification similaire.

Voyons la différence pour mieux comprendre.

Abstraction Encapsulation
Cacher les détails indésirables tout en montrant les détails essentiels s'appelle l'abstraction en programmation.En programmation, l'encapsulation signifie lier le code et les données en une seule unité.
Avec l'abstraction, un programmeur peut se concentrer sur les informations qu'un objet doit contenir.L'encapsulation permet de cacher les détails internes et les mécanismes derrière le fonctionnement d'un objet pour assurer la sécurité.
Nous pouvons résoudre des problèmes de niveau de conception à l'aide de l'abstraction dans la programmation orientée objet.Nous pouvons résoudre les problèmes d'implémentation à l'aide de l'encapsulation dans la programmation orientée objet.

2. Classe abstraite et interfaces

En Java, l'abstraction peut être réalisée à la fois par une classe abstraite et une interface.

Les interfaces permettent une abstraction à 100 % et la classe abstraite ne permet qu'une abstraction partielle, mais ces types ont leurs avantages et leurs inconvénients.

Nous avons besoin des deux en Java pour effectuer l'abstraction. Comprenons comment ils sont tous les deux différents les uns des autres.

Classe abstraite Interface
Une classe abstraite est une classe Java avec un mot-clé abstrait contenant des variables finales finales, statiques et statiques avec l'un des spécificateurs d'accès.La seule variable finale statique publique est autorisée pour les interfaces.
Les héritages multiples ne sont pas pris en charge dans la classe abstraite.L'interface prend en charge plusieurs héritages.
Il peut y avoir des méthodes abstraites et non abstraites à l'intérieur d'une classe abstraite.Dans une interface, seules les méthodes abstraites sont autorisées.
Les méthodes publiques protégées et abstraites sont possibles dans une classe abstraite.Seules les méthodes publiques abstraites sont autorisées dans une interface.
Une classe abstraite peut implémenter une interface.Une interface ne peut pas implémenter une classe abstraite.

Avantages de l'abstraction

Dans la programmation orientée objet, l'abstraction permet à un programmeur de réduire la complexité de la conception et de la mise en œuvre du processus logiciel.

Plusieurs liés les classes peuvent être regroupées en tant que frères et sœurs en utilisant l'abstraction en java la programmation.

L'abstraction permet à un programmeur d'éviter la duplication de code dans un programme et d'augmenter la réutilisabilité.

Avec l'abstraction, la sécurité d'une application ou d'un programme est augmentée car les programmeurs ne sont autorisés à accéder qu'aux détails importants pour eux.

Résumé

L'abstraction est l'un des concepts les plus utiles présents dans tous les langages de programmation orientés objet tels que C++ , Java, C#, etc.

Il est essentiel qu'en tant que programmeur, vous compreniez l'abstraction et comment y parvenir, et nous espérons que cet article vous a été utile.

Foire aux questions (FAQ)

Que sont l'abstraction et l'encapsulation ?

Abstraction - Il s'agit d'un concept de base de la POO qui implique que l'utilisateur ne voit que les détails qui sont importants pour lui et que tous les autres détails inutiles sont masqués en toute sécurité.
Encapsulation – C'est aussi un concept de base de la POO. L'encapsulation signifie lier les données et le code en une seule entité afin que les détails puissent être protégés du monde extérieur.

Qu'est-ce que l'abstraction ?

Selon le dictionnaire Cambridge, l'abstraction désigne une situation vague qui n'est pas basée sur des événements réels.
Cependant, en programmation, l'abstraction signifie cacher des détails inutiles à l'utilisateur et les montrer suffisamment pour faciliter sa concentration sur d'autres problèmes complexes.

Donnez des exemples concrets d'abstraction ?

Certains exemples d'abstraction réels sont ATM (tout ce que nous faisons est de cliquer sur des boutons et des flux de trésorerie), micro-ondes, voiture, etc.

Quel est un exemple d'abstraction en programmation ?

Dans le monde de la programmation, nous pouvons voir l'abstraction si nous observons les langages de programmation. Nous sommes passés des langages machine et avons lentement ajouté des couches d'abstraction pour masquer les fonctions internes de la machine au fur et à mesure que nous atteignions des langages de haut niveau. Cela nous a permis de passer du simple calcul mathématique à des problèmes plus complexes.

Quelles sont les 4 bases de la POO ?

Les quatre principes de base des POO sont l'héritage, l'encapsulation, le polymorphisme et l'abstraction.