Je ne sais pas trop sur la définition de ' abstraction ' dans la POO
On février 10, 2021 by adminJessaie de comprendre la définition d «abstraction» en POO.
Jai rencontré quelques définitions principales. Sont-ils tous valides? Lun deux a-t-il tort? Je « suis confus. (Jai réécrit la définition avec mes propres mots).
Définition 1:
Labstraction est le concept de prendre un objet du monde réel et de le convertir en termes de programmation. Par exemple, créer une classe Human
et lui donner int health
, int age
, String name
, etc. propriétés et eat()
etc.
Définition 2:
Une définition plus générale. Labstraction est un concept qui a lieu nimporte où dans un système logiciel où « rendre les choses plus générales / plus simples / abstraites » est impliqué. Quelques exemples:
-
Une hiérarchie dhé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. Wh ile les classes inférieures de la hiérarchie sont plus concrètes et définissent des implémentations plus détaillées.
-
Utiliser lencapsulation pour masquer les détails de limplémentation dune classe aux autres classes, rendant ainsi la classe plus « abstrait » (plus simple) au monde logiciel extérieur.
Définition 3
Une autre définition générale: labstraction est le concept qui consiste à déplacer lattention des détails et de limplémentation concrète des choses vers les types de choses (ie classes), les opérations disponibles (cest-à-dire les méthodes), etc., rendant ainsi la programmation plus simple, plus générale et plus abstraite. (Cela peut avoir lieu nimporte où et dans nimporte quel contexte dans le système logiciel). Cela a lieu par exemple lors de lencapsulation, car lencapsulation signifie cacher les détails de limplémentation et ne montrer que les types de choses et leurs définitions plus générales et abstraites. Un autre exemple serait dutiliser un objet List
en Java. cet objet utilise en fait les détails dimplémentation dun ArrayList
ou dun LinkedList
, mais ces informations sont abstraites en utilisant le nom plus général List
.
Lune de ces définitions est-elle correcte? (Je fais référence à la définition la plus conventionnelle et acceptée ).
Commentaires
- Labstraction définit une " chose " comme étant un certain TYPE de chose (Animal = > Dog) afin de le réduire encore plus (Dog = > Caniche).
Réponse
Labstraction est lun des 3 piliers de la programmation orientée objet (POO). Cela signifie littéralement percevoir une entité dans un système ou un contexte dun point de vue particulier. Nous supprimons les détails inutiles et nous nous concentrons uniquement sur les aspects nécessaires au contexte ou au système considéré.
Voici une bonne explication:
En tant que personne, vous avez des relations différentes dans différents rôles. Lorsque vous êtes à l’école, vous êtes un « étudiant » . Lorsque vous êtes au travail, vous êtes un « Employee » . Lorsque vous êtes dans une institution gouvernementale, vous pouvez être considéré comme un « Citoyen » . Cela revient donc à savoir dans quel contexte regardons-nous une entité / un objet. Donc, si je modélise un Système de paie , je vous considérerai comme un Employé (PRN, temps plein / temps partiel, désignation) . Si je modélise un système dinscription aux cours , alors je considérerai vos aspects et caractéristiques comme un Étudiant (numéro de rôle, âge, sexe, cours inscrit) . Et si je modélise un Système d’information sur la sécurité sociale , je considérerai vos coordonnées comme un Citoyen (comme date de naissance, sexe, pays de naissance, etc.)
Rappelez-vous que labstraction (se concentrer sur les détails nécessaires) est différente de lencapsulation (cacher les détails du monde extérieur). Lencapsulation signifie cacher les détails de lobjet et fournir une interface décente pour que les entités du monde extérieur interagissent avec cet objet ou cette entité.Par exemple, si quelquun veut connaître mon nom, il ne peut pas accéder directement à mes cellules cérébrales pour savoir quel est mon nom. Au lieu de cela, cette personne demandera mon nom. Si un conducteur veut accélérer un véhicule alors il y a une interface (pédale daccélérateur, vitesse, etc.) à cet effet.
La première définition nest pas très claire. Def 2 est bonne mais elle a tendance à confondre le débutant en essayant de lier labstraction avec lencapsulation et lhéritage. Def 3 est la meilleure des 3 définitions car elle définit clairement ce quest labstraction avec précision.
Commentaires
- Vous diriez donc que ' ressemble à une généralisation au lieu dune spécification?
- @samyismyhero Exactement! Nous recherchons des attributs génériques et le comportement des objets pour labstraction.
- [Animal = > Dog] est une abstraction. Vous définissez les parties possibles quun " Animal " peut avoir pour créer un " Chien. " (Queue, pattes, fourrure, etc.). Ensuite, vous pouvez utiliser la classe " Dog " pour définir un caniche, un pit-bull, etc. Donc, vous ': déclarer des races de chiens basées sur la classe " Dog " au lieu dune " Animal. "
Réponse
La définition 1 nest certainement pas une abstraction. Cela décrit plus précisément la modélisation .
Les définitions 2 et 3 décrivent la même chose. Et les deux sont de très bonnes descriptions dune abstraction.
Commentaires
- Cest ' que je pensais !
abstract class Shape
lol!
Réponse
Chacune de ces définitions est très bien.
Labstraction est lendroit où vous vous concentrez uniquement sur les détails qui sont importants pour votre objectif.
Dans le premier cas, vous ne pouvez pas (pour le moment) inclure de vraies personnes dans votre code; vous vous concentrez sur des détails particuliers dune personne qui servent votre objectif. Dans un autre programme, vous devrez peut-être vous concentrer sur différents détails. Ce serait différentes abstractions dune personne, et chacune peut être également valable dans son contexte .
Les deuxième et troisième définitions poursuivent cette idée en lappliquant aux entités logicielles.
Laisser un commentaire