-1

今日、私は抽象化について検索していて、この例を手に入れました....このプログラムが抽象化の概念をどのように実装しているか、またc ++での抽象化とは何かを詳しく説明してください

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

3 に答える 3

1

OOP(C++に限らず)のキーソースであるデータ抽象化と呼ぶべきです。

ウィキペディアから引用:

データの抽象化により、データ型の抽象的なプロパティとその実装の具体的な詳細が明確に分離されます。

あなたの例では、とAdderの 2 つのインターフェイスを持つ加算器のデータ抽象化です。この抽象化は、プライベート データ (この場合) を非表示 (またはカプセル化) し、そのカーネル動作のみを公開します: 数値を追加して現在の合計を返します。addNumgetTotaltotal

于 2013-02-17T14:50:28.570 に答える
0

publicがどのように影響を受けるかを知らずに、タスクを実行するためのメソッドにアクセスしていますprivate members。これはただですabstraction

心がどのように動くように指示するかを知らずに、手を動かしています。

Data Abstraction: 不要な詳細を非表示にします。あなたの場合、 のtotal計算方法を非表示にします。関数を呼び出すだけで、タスクは完了です。

Data Encapsulationdata:とのバインディングobject。あなたの場合、 を にバインドしtotalましたobject a。そのため、a許可なくアクセスすることはできません。

于 2013-02-17T14:51:59.727 に答える
0

コンストラクターと関数プロトタイプのみを考えてください。

class Adder {
  Adder(int i);
  void AddNum(int num);
  int getTotal();
};

実装は隠され、抽象化され、プロトタイプだけが残ります。

于 2013-02-17T15:03:49.793 に答える