6
votes

L'interface est-elle le plus haut niveau d'abstraction?

Je suis confus à propos de l'abstraction et de l'encapsulation.Quelle est que la classe est que la classe est l'encapsulation car elle encapsule les données et le comportement, tandis que l'interface est une abstraction.Veuillez un commentaire


3 commentaires

Voici mon commentaire: Quoi? Vous devez expliquer plus.


Mauvais type d'interface. Vous devriez étiqueter cela avec OOP et quelle que soit la langue dont vous parlez, nous pouvons donc vous indiquer dans la bonne direction.


Ces terminologies sont-elles différentes dans différentes langues. Je suppose que oups est la même partout.


4 Réponses :


4
votes

Regardez l'article Wikipedia sur abstraction en informatique . En particulier, vous êtes probablement intéressé par l'abstraction en ce qui concerne la programmation orientée objet. J'ai cité une partie de la section correspondante ci-dessous:

en théorie de la programmation orientée objet, L'abstraction implique l'installation à Définir des objets représentant abstrait "Acteurs" qui peuvent effectuer des travaux, signaler sur et changer leur état, et "Communiquer" avec d'autres objets dans le système. Le terme encapsulation fait référence à la cachette des détails de l'état, mais extension du concept de type de données des langues de programmation antérieures à comportement associé le plus fortement avec les données et standardiser la voie que différents types de données interagissent, est le début de l'abstraction. Lorsque L'abstraction se déroule dans la Opérations définies, activant des objets de différents types à substituer, C'est ce qu'on appelle le polymorphisme. Quand cela produit dans la direction opposée, à l'intérieur des types ou des classes, les structurer à simplifier un complexe ensemble de relations, on appelle délégation ou héritage.

En règle générale, je dirais que les interfaces et les classes doivent être des exemples d'abstractions, traitant des données comme une "chose" conceptuelle plutôt que des données brutes. L'encapsulation est utilisée pour que ces abstractions fonctionnent bien avec d'autres abstractions de "choses" conceptuellement différentes. "


0 commentaires

13
votes

Je pense que votre terminologie est confuse.

  1. encapsulation - met les données et les fonctionnalités associées au même endroit. Nous pouvons obtenir cela à travers des classes

  2. polymorphisme - permet de gérer des valeurs de différents types de données à l'aide d'une interface uniforme .

    Le polymorphisme peut être obtenu en héritant des classes de base (avec des fonctions virtuelles) et / ou en implémentant des interfaces.

    Ces techniques (et autres) nous donnent abstraction , qui s'applique vraiment à tout des processus que nous utilisons pour briser un problème dans des composants plus petits.

    Modifier

    Q) Vous demandez "Puis-je dire que l'abstraction est la hiérarchie la plus haute qui est accomplie par encapsulation et polymorphisme?"

    a) Je ne peux pas répondre à cette question, je ne sais pas ce que vous entendez par "le plus haut" et "le plus élevé". Il n'y a pas de hiérarchie ici.

    La décomposition fonctionnelle est une forme d'abstraction, elle peut être réalisée sans utiliser l'orientation de l'objet, où Devrait-il venir dans la hiérarchie?

    Le meilleur que je puisse faire avec une hiérarchie est cette définition (tout de suite de ma propre tête, donc ymmv)

    1. L'abstraction est la pratique de briser un gros problème dans composants plus petits, donc chaque plus petit problème peut être travaillé dans isolement (relatif).
    2. Le polymorphisme est une technique que nous pouvons utiliser pour obtenir une abstraction. Ce implique d'identifier différents types de données et de comportement qui peuvent être traité de manière homogène.
    3. une interface ne déclare que des types de comportement, encapsulant le comportement dans un type. Il fournit non comportement réel ou données
    4. une classe abstraite déclare les types de comportement, mais peut aussi fournir comportement et données, tous encapsulés dans un type.
    5. Par conséquent, une interface peut être vue comme fournissant un plus simple ou Purer forme de polymorphisme que résumé Classes.

1 commentaires

Puis-je dire que l'abstraction est la hiérarchie la plus haute qui est accomplie à travers l'encapsulation et le polymorphisme.



1
votes

Le but de l'encapsulation est de masquer les détails de la mise en œuvre:

Exemple très artificiel: P> xxx pré>

Vous pouvez modifier plus tard ceci en: p>

public class Person {
  private int age;
  private boolean isInUSA


  public boolean canBuyBeverage(Beverage b) {
    if( b.containsAlchohol() ) {
       if( isInUSA )
           return age >= 21;
       else
           return age >= 18;
    }
    else {
        return true;
    }
  }

}


0 commentaires

2
votes

Je pense que vous en avez eu raison. Une interface dit, largement: c'est ce que ce genre de chose est . Une classe dit: Voici comment cette chose fonctionne; Je vais cacher les détails en moi . Une classe est une implémentation (généralement) concrète de l'abstraction de l'interface.


0 commentaires