国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

數(shù)據(jù)抽象

2018-08-12 22:03 更新

數(shù)據(jù)抽象

數(shù)據(jù)抽象是指對外只提供基本信息并且隱藏他們的背景細節(jié),即只呈現(xiàn)程序中所需的信息而沒有提供細節(jié)。

數(shù)據(jù)抽象是一種編程(和設計)技術,依賴于接口和實現(xiàn)的分離。

讓我們舉一個現(xiàn)實生活中的例子。一個電視,你可以打開和關閉,改變頻道,調整音量,并添加外部組件,比如揚聲器,錄像機,以及 DVD 播放器。但是你不知道它的內部細節(jié),也就是說,你不知道它如何通過無線技術或者通過電纜接收信號,如何轉化信號,以及最后將信號顯示在屏幕上。

因此,我們可以說電視機實現(xiàn)了外部接口與內部實現(xiàn)的清晰分離,你可以無需知道它的內部具體實現(xiàn),就可以通過其外部接口比如電源按鈕,更換頻道,音量控制。

現(xiàn)在,如果我們談論的是 C++ 編程, C++ 類提供了大量數(shù)據(jù)抽象的例子。他們提供了大量的針對外部世界的公有函數(shù)來滿足對象的功能或者操作對象數(shù)據(jù),即外部函數(shù)不知道類在內部是如何實現(xiàn)的。

例如,你的程序可以在不知道函數(shù)實際使用什么算法來對給定的值進行排序的情況下調用 sort() 函數(shù)。事實上,排序功能的底層實現(xiàn)可以在不同版本之間變化,只要接口保持不變,你的函數(shù)調用將仍然起作用。

在 C++ 中,我們使用類來定義自己的抽象數(shù)據(jù)類型( ADT )。您可以使用類 ostream 的 cout 對象對流數(shù)據(jù)進行標準輸出如下:

    #include <iostream>
    using namespace std;

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

在這里,你不需要了解 cout 如何在用戶的屏幕上顯示文本。你只需要知道的公共接口和的 cout 底層實現(xiàn)是可以自由改變的。

訪問標號實施抽象

在 C++ 中,我們使用訪問標號定義抽象接口類。一個類可以包含零個或多個訪問標簽:

  • 成員定義了一個公有標號,程序的所有部分都可以訪問這個公共標號。類型的數(shù)據(jù)抽象視圖由其公有成員定義。
  • 使用類的代碼不可以訪問帶有私有標號的成員。對于使用類的代碼,私有部分隱藏了類的實現(xiàn)細節(jié)。

一個訪問標號可以出現(xiàn)的次數(shù)通常是沒有限制的。每個訪問標號指定了隨后的成員定義的訪問級別。這個指定的訪問級別持續(xù)有效,知道遇到下一個訪問標號或看到類定義提的右花括號為止。

數(shù)據(jù)抽象的好處

數(shù)據(jù)抽象提供了兩個重要的優(yōu)勢:

  • 避免內部出現(xiàn)無意的,可能破壞對象狀態(tài)的用戶級錯誤?!   ?/li>
  • 隨著時間的推移類實現(xiàn)可能會根據(jù)需求或缺陷報告來做出修改,但是這種修改無需改變用戶級代碼。

通過只在類的私有部分定義數(shù)據(jù)成員,類作者可以自由的對數(shù)據(jù)進行更改。如果實現(xiàn)更改,只需要檢查類的代碼看看這個改變可能造成什么影響。如果數(shù)據(jù)是公開的,那么任何可以直接訪問舊的數(shù)據(jù)成員的函數(shù)都可能遭到破壞。

數(shù)據(jù)抽象舉例

任何一個用公有和私有成員實現(xiàn)一個類的 C++ 程序都是數(shù)據(jù)抽象的一個例子??紤]下面的例子:

    #include <iostream>
    using namespace std;

    class Adder{
       public:
      // constructor
      Adder(int i = 0)
      {
    total = i;
      }
      // interface to outside world
      void addNum(int number)
      {
      total += number;
      }
      // interface to outside world
      int getTotal()
      {
      return total;
      };
       private:
      // hidden data from outside world
      int total;
    };
    int main( )
    {
       Adder a;

       a.addNum(10);
       a.addNum(20);
       a.addNum(30);

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

編譯和執(zhí)行上面的代碼時,它產生以下結果:

    Total 60

上面的類實現(xiàn)了把數(shù)字加起來,并且返回總和。公有成員 addNumgetTotal 是對外的接口,用戶需要知道他們才能使用的類。私有成員 total 是用戶不需要知道的,但是它是為保證程序正常運行類必要的。

設計策略

抽象使代碼分離成接口和實現(xiàn)。所以在設計你的組件的時候,你必須保持接口獨立于實現(xiàn),因此,你才能做到在改變底層實現(xiàn)時,界面將保持不變。

在這種情況下,無論任何程序使用這些接口,他們不會受到影響,只需要重新編譯最新的實現(xiàn)。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號