Latest web development tutorials

les données de l'abstraction de C

L'abstraction des données se réfère uniquement à fournir des informations critiques sur le monde extérieur, et de cacher les détails de leur arrière-plan de mise en œuvre, que les performances de seulement les informations nécessaires sans présenter les détails.

L'abstraction des données est une dépendance sur l'interface de programmation et de séparation de mise en œuvre (conception) technologie.

Prenons la vie réelle des exemples réels, comme un téléviseur, vous pouvez allumer et éteindre, changer de chaîne, régler le volume, l'ajout de composants externes (tels que les haut-parleurs, magnétoscope, lecteur DVD), mais vous ne connaissez pas son interne les détails de mise en œuvre, qui est, on ne sait pas comment il est reçu par un signal de câble, comment convertir le signal et éventuellement affiché sur l'écran.

Par conséquent, nous pouvons dire que le téléviseur sur son implémentation interne et les interfaces externes séparés, et vous ne connaissez pas son principe interne, directement par le biais de son interface externe (comme le bouton d'alimentation de la télécommande, contrôleur de volume sonore) peut contrôler le téléviseur.

Maintenant, nous allons passer aux affaires, il est en termes de programmation C ++, C ++données de classe abstractionpossible. Them au monde extérieur fournit une méthode commune pour l'exploitation d'un grand nombre d'objets de données, qui est, en fait, le monde extérieur ne savaient pas la mise en œuvre de la classe interne.

Par exemple, votre programme peut appeler la fonctionsort (), sans qu'il soit nécessaire de connaître la fonction des algorithmes utilisés pour trier les données.En fait, la fonction sous-jacente de la réalisation de la sorte en raison de référentiel différent varient, aussi longtemps que la même interface, appel de fonction comme d'habitude.

En C ++, nous utilisons notre propreclasse pour définir type de données abstrait (ADT).Vous pouvez utiliser la classeostream coutismeobjet à des données de sortie sur la sortie standard, comme suit:

#include <iostream>
using namespace std;

int main( )
{
   cout << "Hello C++" <<endl;
   return 0;
}

Ici, vous ne comprenez pas comment le textecoutisme affiché sur l'écran de l'utilisateur.Vous avez seulement besoin de connaître l'interface publique, coutisme implémentation sous-jacente peut être changé librement.

onglet Accès obligatoire Résumé

En C ++, nous utilisons l'onglet Accès pour définir la classe d'interface abstraite. Une classe peut contenir zéro ou plus accès étiquettes:

  • Tag définit l'utilisation des membres du public peuvent accéder à toutes les parties du programme. vue abstraite d'un type de données est public par ses membres définis.
  • L'utilisation de l'étiquette privée définie à l'aide des membres de la classe ne peut pas avoir accès au code. une partie privée du code en utilisant le type de détails de mise en œuvre de peau.

fréquence d'accès tag semble qu'il n'y ait pas de limite. Chaque balise spécifie l'accès suivi par des membres des niveaux d'accès définis. niveau d'accès attribué demeurera en vigueur jusqu'à ce que l'onglet Accès prochaine rencontre ou fermer le type de corps droite rencontré entre parenthèses.

Avantages d'abstraction de données

L'abstraction des données présente deux avantages importants:

  • Classe interne est protégé contre inadvertance erreur de niveau utilisateur a causé des dommages à l'état de l'objet.
  • Avec la mise en œuvre de la classe peut changer au fil du temps, afin de répondre aux besoins changeants, ou répondre à ces exigences ne changent pas le rapport d'erreur de code de niveau utilisateur.

Section privée définit les données membres de la classe, si seulement dans la préparation de ces auteurs peuvent librement modifier les données. Si les changements mis en œuvre, il vous suffit de vérifier le code de la classe pour voir quel impact ce changement peut provoquer. Si les données sont publiques, tout accès direct à l'ancienne forme des membres de la fonction de représentation des données sont susceptibles d'être affectés.

données d'instance Résumé

Programme C ++, toute classe avec les membres de l'abstraction de données publiques et privées peut être utilisé à titre d'exemples. Prenons les exemples suivants:

#include <iostream>
using namespace std;

class Adder{
   public:
      // 构造函数
      Adder(int i = 0)
      {
        total = i;
      }
      // 对外的接口
      void addNum(int number)
      {
          total += number;
      }
      // 对外的接口
      int getTotal()
      {
          return total;
      };
   private:
      // 对外隐藏的数据
      int total;
};
int main( )
{
   Adder a;
   
   a.addNum(10);
   a.addNum(20);
   a.addNum(30);

   cout << "Total " << a.getTotal() <<endl;
   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

Total 60

La classe au-dessus des chiffres ensemble et renvoie la somme.addNum Membre publique et GetTotalest l' interface externe, les utilisateurs ont besoin de savoir pour pouvoir utiliser leur classe. membres privéstotal des utilisateurs ne doivent pas savoir, mais la classe peuvent travailler nécessaire.

Stratégie de conception

Résumé de séparer le code dans l'interface et la mise en œuvre. Ainsi, dans la conception des composants, l'interface doit rester indépendante de la mise en œuvre, de sorte que si vous modifiez la mise en œuvre sous-jacente, l'interface restera inchangé.

Dans ce cas, indépendamment de tout programme à l'aide de l'interface, l'interface ne sera pas affectée, seulement pour réaliser la dernière recompilation.