J'essaie de comprendre la définition de «l'abstraction» dans la POO.
J'ai rencontré quelques définitions principales. Sont-ils tous valables? Est-ce que l'un d'eux a tort? Je suis confus. (J'ai réécrit la définition avec mes propres mots).
Définition 1:
L'abstraction est le concept de prendre un objet du monde réel et de le convertir en termes de programmation. Tels que la création d' une Human
classe et lui donnant int health
, int age
,String name
, etc. propriétés et eat()
méthodes , etc..
Définition 2:
Une définition plus générale. L'abstraction est un concept qui se déroule n'importe où dans un système logiciel où «rendre les choses plus générales / plus simples / abstraites» est impliqué. Quelques exemples:
Une hiérarchie d'héritage, où les classes supérieures sont plus simples ou plus générales, et définissent une implémentation plus générale et abstraite. Alors que les classes inférieures de la hiérarchie sont plus concrètes et définissent des implémentations plus détaillées.
Utiliser l'encapsulation pour cacher les détails de l'implémentation d'une classe aux autres classes, rendant ainsi la classe plus «abstraite» (plus simple) pour le monde logiciel extérieur.
Définition 3
Une autre définition générale: l'abstraction est le concept de déplacer le focus des détails et de la mise en œuvre concrète des choses, vers les types de choses (par exemple les classes), les opérations disponibles (par exemple les méthodes), etc., rendant ainsi la programmation plus simple, plus générale, et plus abstrait. (Cela peut avoir lieu n'importe où et dans n'importe quel contexte dans le système logiciel). Il a lieu par exemple lors de l'encapsulation, car l'encapsulation signifie cacher les détails de l'implémentation et n'afficher que les types de choses et leurs définitions plus générales et abstraites. Un exemple anotehr serait d'utiliser un List
objet en Java. cet objet utilise en fait les détails d'implémentation d'un ArrayList
ou d'un LinkedList
, mais ces informations sont abstraites en utilisant le nom plus général List
.
L'une de ces définitions est-elle correcte? (Je fais référence à la définition la plus conventionnelle et acceptée ).