Oui ! !!! Si je dis L'encapsulation est une sorte d'abstraction de portée spécifique avancée. ,
Combien d'entre vous ont lu/supprimé ma réponse ? Essayons de comprendre pourquoi je dis cela.
J'ai besoin de clarifier deux choses avant ma demande.
L'un est le masquage des données et l'autre est l'abstraction.
Masquage des données
La plupart du temps, nous ne donnerons pas un accès direct à nos données internes. Nos données internes ne doivent pas sortir directement, c'est-à-dire qu'une personne extérieure ne peut pas accéder directement à nos données internes. C'est une question de sécurité puisque nous devons protéger les états internes d'un objet particulier.
Abstraction
Pour simplifier, cacher les implémentations internes est appelé abstraction. Dans l'abstraction, nous nous concentrons uniquement sur les choses nécessaires. Fondamentalement, nous parlons de "quoi faire" et non de "comment faire" dans l'abstraction. La sécurité peut également être obtenue par l'abstraction puisque nous n'allons pas mettre en évidence "comment nous mettons en œuvre". La maintenabilité sera augmentée puisque nous pouvons modifier l'implémentation mais cela n'affectera pas notre utilisateur final.
J'ai dit : "L'encapsulation est une sorte d'abstraction de portée spécifique avancée". Pourquoi ? parce que nous pouvons voir l'encapsulation comme une dissimulation de données + abstraction.
encapsulation = dissimulation de données + abstraction
Dans l'encapsulation, nous devons cacher les données afin que la personne extérieure ne puisse pas les voir et nous devons fournir des méthodes qui peuvent être utilisées pour accéder aux données. Ces méthodes peuvent avoir des validations ou d'autres caractéristiques à l'intérieur de ces choses également cachées à une personne extérieure. Donc, ici, nous cachons l'implémentation des méthodes d'accès et cela s'appelle l'abstraction.
C'est pourquoi j'ai dit comme ci-dessus que l'encapsulation est une sorte d'abstraction.
Alors, où se trouve le différence ?
La différence est que l'abstraction est générale si nous cachons quelque chose à l'utilisateur pour des raisons de simplicité, de maintenabilité et de sécurité,
L'encapsulation est un concept spécifique lié à la sécurité des états internes, dans lequel nous cachons l'état interne (dissimulation des données) et nous fournissons des méthodes pour accéder aux données. La mise en œuvre de ces méthodes est également cachée à la personne extérieure (abstraction).
Pourquoi nous avons besoin d'abstraction Lorsque vous faites des conceptions, vous ne parlez pas d'implémentations. Vous dites que si vous donnez ces paramètres à cette méthode, elle donnera ces résultats. Nous cachons l'implémentation interne de la méthode et parlons de ce qu'elle va faire, c'est donc une abstraction.
Exemple
public int add(int a, int b);
Cette définition de méthode nous dit que si vous donnez deux variables, elle fera l'addition et retournera le résultat.
Ici, nous ne regarderons pas l'implémentation et nous ne verrons que ce que cette méthode fait et non comment elle le fait. Les implémentations des méthodes peuvent être différentes selon les développeurs. 1.
public int add(int a, int b){
return a + b;
}
public int add(int a, int b){
return b + a;
}
Deux méthodes font la même chose, mais leur mise en œuvre diffère.
En gros,
L'abstraction est nécessaire pour modéliser le système. L'encapsulation est nécessaire pour renforcer la sécurité du système.