Encapsulation vs Abstraction
Encapsulation et Abstraction sont deux concepts différents mais liés trouvés dans les langages OOP (Object Oriented Programming). L'encapsulation est le concept de combinaison de données et de comportement en une seule entité. D'un autre côté, l'abstraction est le processus de présentation du comportement d'une entité par opposition à la façon dont elle est implémentée.
Qu'est-ce que l'encapsulation ?
L'encapsulation est le processus d'encapsulation des données et des opérations qui les opèrent dans une seule entité. Cela signifie essentiellement que pour accéder aux données, certaines méthodes prédéfinies doivent être utilisées. En d'autres termes, les données encapsulées ne sont pas directement accessibles. Cela garantit que l'intégrité des données est préservée car l'utilisateur ne peut pas accéder directement aux données et les modifier comme il le souhaite. Les utilisateurs obtiendront ou définiront les valeurs de données uniquement via les méthodes accessibles au public pour les utilisateurs. Ces méthodes fournissent généralement une validation des données afin que seules les données au format approprié puissent être insérées dans les champs. Par conséquent, les avantages de l'encapsulation sont triples. Grâce à l'encapsulation, le programmeur peut rendre les champs d'une classe en lecture seule ou en écriture seule. Deuxièmement, une classe peut avoir un contrôle total sur ce qui est stocké dans ses champs. Enfin, les utilisateurs d'une classe n'ont pas à se soucier de la façon dont ses données sont stockées. En Java, le programmeur peut déclarer toutes les variables d'instance comme privées et fournir des méthodes get et set (qui sont publiques) pour accéder et modifier les champs privés.
Qu'est-ce que l'abstraction ?
L'abstraction est le processus de séparation des détails de présentation des détails d'implémentation. Ceci est fait pour que le développeur soit soulagé des détails de mise en œuvre plus complexes. Au lieu de cela, le programmeur peut se concentrer sur la présentation ou les détails comportementaux de l'entité. En termes simples, l'abstraction se concentre sur la manière dont une certaine entité peut être utilisée plutôt que sur la manière dont elle est implémentée. L'abstraction cache essentiellement les détails de mise en œuvre, de sorte que même si la méthodologie de mise en œuvre change avec le temps, le programmeur n'aurait pas à s'inquiéter de la façon dont cela affecterait son programme. Un système peut être abstrait en plusieurs couches ou niveaux. Par exemple, les couches d'abstraction de bas niveau révéleront les détails du matériel, tandis que l'abstraction de haut niveau ne révélera que la logique métier de l'entité. Le terme abstraction peut être utilisé pour désigner à la fois une entité et un processus, ce qui entraîne une certaine confusion. En tant que processus, l'abstraction signifie extraire les détails essentiels tout en ignorant les détails non essentiels d'un élément ou d'un groupe d'éléments, tandis qu'en tant qu'entité, l'abstraction signifie un modèle ou une vue d'une entité avec uniquement les détails essentiels. En Java, le programmeur peut utiliser le mot clé abstract pour déclarer une classe en tant qu'entité abstraite, qui représente les caractéristiques essentielles de définition d'une entité du monde réel.
Quelle est la différence entre l'encapsulation et l'abstraction ?
Même si l'encapsulation et l'abstraction sont des concepts étroitement liés que l'on trouve dans les langages de programmation orientés objet, ils présentent des différences essentielles. L'abstraction est une technique qui nous aide à identifier ce qui doit être visible et ce qui doit être caché. L'encapsulation est la technique pour emballer l'information de telle sorte qu'elle rende visible ce qui devrait être visible et cache ce qui devrait être caché. En d'autres termes, l'encapsulation peut être identifiée comme une étape au-delà de l'abstraction. Alors que l'abstraction réduit un objet du monde réel à ses caractéristiques de définition essentielles, l'encapsulation étend cette idée en modélisant et en reliant cette fonctionnalité de cette entité.