Latest web development tutorials

C ++ abstrakcji danych

Abstrakcja danych odnosi się tylko do zapewnienia krytycznych informacji do świata zewnętrznego, a ukryć szczegóły realizacji ich tle, że wykonanie tylko niezbędnych informacji bez konieczności przedstawiania szczegółów.

abstrakcji danych jest zależność od interfejsu programowania i wdrażania separacji (projektu) technologii.

Weźmy rzeczywistym życie realne przykłady, takie jak telewizor, można włączać i wyłączać, zmieniać kanały, regulować głośność, dodawanie elementów zewnętrznych (takich jak głośniki, magnetowid, odtwarzacz DVD), ale nie wiem, jej wewnętrzny szczegóły realizacji, to znaczy, że nie wiem, jak to jest odbierane przez sygnał telewizji kablowej, jak i sygnał w końcu na ekranie konwersji.

Dlatego możemy powiedzieć, telewizor do swojego wewnętrznego wdrażania i interfejsy zewnętrzne oddzielone i nie znam jego zasady wewnętrznej, bezpośrednio poprzez interfejs zewnętrznego (takich jak przycisk zasilania na pilocie, regulator głośności) można sterować telewizorem.

Teraz przejdźmy do rzeczy, to jest w zakresie programowania C ++, C ++dane klasy abstrakcjimożliwe. Je ze światem zewnętrznym zapewnia wspólny sposób prowadzenia dużej liczby obiektów danych, która jest w rzeczywistości, świat zewnętrzny nie wiedział wdrożenie wewnętrznego klasy.

Na przykład, program może wywołać funkcjisort (), bez konieczności wiedzieć funkcję algorytmów służących do sortowania danych.W rzeczywistości, podstawowa funkcja realizacji rodzaju ze względu na różne repozytorium zmieniać się, o ile tego samego łącza, połączenia funkcji, jak zwykle.

W języku C ++, wykorzystujemy naszą własnąklasę zdefiniować abstrakcyjny typ danych (ADT).Można użyć klasyostream coutobiektu do danych wyjściowych do standardowego wyjścia, jak następuje:

#include <iostream>
using namespace std;

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

Tutaj nie rozumiem, w jaki sposób tekstcout wyświetlane na ekranie użytkownika.Trzeba tylko wiedzieć, interfejs publiczny do, cout bazowy wdrożenie mogą być dowolnie zmieniane.

Karta Dostęp obowiązkowe Streszczenie

W C ++, używamy kartę Dostęp do zdefiniowania klasy abstrakcyjnej interfejsu. Klasa może zawierać zero lub więcej etykiet dostępu:

  • Tag definiuje użycie członków publicznych może uzyskać dostęp do wszystkich części programu. Streszczenie widok typu danych jest publicznie przez zdefiniowany jej członkowie.
  • Korzystanie z prywatnego etykiecie określono za pomocą elementów klasa nie może mieć dostępu do kodu. Prywatna część kodu przy użyciu typu detali ukryj realizacji.

tag częstotliwości Dostęp wydaje nie ma limitu. Każdy znacznik określa dostęp następuje przez członków określonych poziomów dostępu. Przydzielony poziom dostępu pozostanie w mocy do czasu zakładce Spotkanie dostępu następnego lub zamknąć odpowiedni rodzaj ciała napotkany w nawiasie.

abstrakcja danych Korzyści

Abstrakcja danych ma dwie ważne zalety:

  • Klasa wewnętrzna jest zabezpieczony przed przypadkowym błędem na poziomie użytkownika spowodował uszkodzenie stanu obiektu.
  • Wraz z wdrożeniem klasy mogą zmieniać się w czasie, w celu dostosowania się do zmieniających się potrzeb lub spełnienia tych wymagań nie zmieniają raport o błędzie Kod poziomie użytkownika.

Sekcja prywatna definiuje elementy danych z tej klasy, jeśli tylko do wytwarzania tych autorów, można dowolnie zmieniać dane. Jeśli wdrażane zmiany, trzeba tylko sprawdzić kod dla klasy, aby zobaczyć, jaki wpływ ta zmiana może spowodować. Jeśli dane są jawne, każdy bezpośredni dostęp do starej formy członków funkcyjnych reprezentacji Dane mogą ulec zmianie.

Streszczenie dane instancji

C ++ programu, każda klasa z członkami publicznego i prywatnego pozyskiwania danych mogą być używane jako przykłady. Rozważmy następujące przykłady:

#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;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Total 60

Klasę wyżej numerów razem i zwraca sumę. Publiczne UżytkownikaddNum i getTotaljest zewnętrzny interfejs, użytkownicy muszą wiedzieć, w celu wykorzystania ich klasę. Członków prywatnychogółem użytkownicy nie muszą wiedzieć, ale klasa może pracować konieczne.

Strategia projektowania

Streszczenie oddzielić kod do interfejsu i implementacji. Dlatego przy projektowaniu komponentów, interfejs musi pozostać niezależny od implementacji, tak, że jeśli zmieni realizację bazowych, interfejs pozostanie niezmieniona.

W tym przypadku, niezależnie od jakiegokolwiek programu wykorzystującego interfejs, interfejs nie zostaną naruszone, tylko uświadomić sobie najnowszą kompilację.