web-dev-qa-db-ja.com

「データの抽象化」とは正確にはどういう意味ですか?

データの抽象化とは何を指しますか?実際の例と一緒に提供してください。

12
Naruto

抽象化には2つの部分があります。

  • 非表示特定の観点からは重要ではない詳細
  • 特定の観点から重要な詳細を特定し、それらの詳細を持っている場合は、アイテムが同じクラスであると見なします。

たとえば、在庫を処理するプログラムを設計している場合、システムに在庫がある特定のタイプのアイテムの数を調べたいと思います。インターフェイスシステムの観点から、この情報をデータベース、csvファイル、SOAPインターフェイスまたはパンチカードを介してリモートリポジトリから取得するかどうかは関係ありません。ただ気にするだけです。 widget.get_items_in_stock()と言うことができ、整数を返すことがわかります。

後でその番号を別の方法で記録することにした場合、widgetがまだget_items_in_stock()を持っている限り、インターフェイスを設計する人はそれを知ったり、気にしたり、心配したりする必要はありません。方法。同様に、ウィジェットクラスをサブクラス化し、get_square_root_of_items_in_stock()メソッドを追加しても、インターフェイスは気にする必要はありません。新しいクラスのインスタンスをそれに渡すこともできます。

したがって、この例では、hiddenデータの取得方法の詳細を確認し、get_items_in_stock()メソッドを持つものはすべて同じクラスのインスタンスであると判断しました。 (またはそのサブクラス)特定の目的のため。

19
aaronasterling

データ抽象化とは、データがマシンに保存されているときではなく、人間が遭遇したときにデータを処理できるようにするデバイスです。

最下位レベルでは、すべてのプリミティブデータ型は抽象化されています。プログラマーとして、通常、データをビットレベル(最終的に格納される方法)で処理する必要はありませんが、整数、浮動小数点数、文字などとして処理する必要があります。 。

次に、その抽象化にレイヤーを追加します。おそらく、2つの整数がPointを表すか、月、曜日などを表す列挙と列挙です。

各抽象化レイヤーで、私たちはマシンからさらに離れ、(願わくば)データの人間の理解に近づきます。これにより、パフォーマンスが低下する可能性があります。ポイントを2つの整数で最も効率的に表すことができるとは限りません。これは、抽象化が使用される場合の開発(および保守)時間の短縮によって補われます。

10
JohnMcG

プログラムするアプリケーションに適した新しいデータ型を作成する手法は、データ抽象化と呼ばれます。

6
Asif Alam

抽象化は人体から骨格を隠すことです。皮膚はそれを含む素晴らしい方法をします。 (私がそこにいるのがどれほど抽象的であるかを見てください。

水のボトルを持っている場合は、蓋を開けて、外れるまでひねることで飲むことができます。

_bool lid_open = false;
void open_water_bottle_by_twisting() { lid_open = true; }
_

しかし、水筒は容器です。容器は、液体が開いて飲めるようになるまで液体を保持します(液体が飲めると仮定します)。

_class Container 
{ 
    bool lid_open = false;

protected: 
    Container() {}
    void open_by_twisting()
    {
        lid_open = true;
    }
public:
    virtual ~Container();
};

class WaterBottle : public Container
{
    WaterBottle() : Container() {}
public:
    ~WaterBottle();
};
_

ただし、すべてのコンテナが同じ方法で開かれるわけではありません。ウォーターボトルなどの一部の容器には、ねじって外せる蓋が付いています。エクササイズボトルのように蓋がないものもあります。これらには、保管用に下に曲げたり、飲用に上に曲げたりできる曲がりくねったストローが含まれています。

_class Container 
{ 
    bool lid_open;
    bool straw_open;

protected:
    void TurnLid() { lid_open = true; }
    void BendStraw() { straw_open = true; }
    Container() : lid_open(false), straw_open(false){}

public:
    virtual void open() = 0;
    virtual ~Container();
};

class WaterBottle : public Container
{

public: 
    WaterBottle() : Container() {}
    void open()
    {
        TurnLid();
    }
    ~WaterBottle();
};

class ExerciseBottle : public Container
{
public:
    ExerciseBottle() : Container() {}
    void open()
    {
        BendStraw();
    }
    ~ExerciseBottle();
};
_

しかし、クライアントはExerciseBottleExerciseBottleopen()の実装が何であるかを知りません。 BendStraw()を呼び出し、_straw_open_をtrueに設定します。ただし、ExerciseBottleは、このすべての作業を実行するために1つの関数を呼び出すだけです。クライアントは、open()の実装で使用されるいくつかのアクションを実行する必要はありません。 WaterBottleの場合も同様です。 そしてそれが抽象化ですバックエンドがすべての作業を行うことをクライアントに知らせます。 「実装をインターフェースから分離する」という用語が使用される場合、これが意味されます。

1
Jossie Calderon

抽象化とは、重要な情報のみを外の世界に提供し、その背景の詳細​​を隠すことを意味します。 ur Computerでは、モニター、キーボード、マウスしか見ることができません。内部配線については何も知りません。これは抽象化です。

1
Nutan Kaushik

データの抽象化は、データを取得できる範囲で分解することとして説明されているようです。食べ物は、アップル、オレンジ、ピザを抽象化したものになります。動物は猫、牛、豚の抽象化です。食品オブジェクトは、次の擬似コードのようなものになります。

class food{

 name;
 calories;
 weight;

 public eat(name);

 }

すべての食品には、名前、カロリー量、および重量があります。それはかなり抽象的なものです。

次に、継承するオブジェクトを作成できますが、これは少し抽象的ではありません。

class pizza inherits food{

  toppings;

  say_toppings();

}

ピザにはトッピングがありますが、名前、カロリー、重量は食べ物から受け継がれています。

基本的に、抽象化は、各アイテムの最低レベルに到達し、それらから拡張するクラスを作成することとして説明されています。それはあなたのコードもより再利用可能にします...あなたがあなたの基本クラスの食品に十分に悪いことをし、そしてそれについて抽象的なすべてを含めれば、食品業界で働く誰もがあなたのクラスを使うことができます。

1
user2296112

私はこの質問がずっと前に尋ねられたことを知っています。しかし、それでも、他の人がabstractionの概念を非常に簡単に理解するのに役立つかもしれない1つの実際の例を共有したいと思います。

抽象化の実際のアナロジーは次のように機能する可能性があります:あなた(オブジェクト)ブラインドデートに会うために手配していて、彼らがレストランであなたを認識できるように彼らに何を伝えるべきかを決定しています。あなたはあなたがどこにいるのか、あなたの身長、髪の色、そしてあなたのジャケットの色についての情報を含めることにしました。これは、手順(あなたを見つけるあなたの日付)がスムーズに機能するのに役立つすべてのデータです。そのすべての情報を含める必要があります。一方で、この状況に関係のないあなたに関する情報がたくさんあります。あなたの社会保障番号、お気に入りのサッカー選手はすべて、あなたの日付を見つけるのに役立たないため、この特定の状況とは無関係です。あなた。

0
Bacteria

DATA抽象化の日常生活の例を見つけることは困難です。ただし、プログラミング言語のデータ型、DBMSのテーブルとビュー、LinkedList、List、Queue、Stackなどのデータ構造はデータの抽象化です。これらの抽象化は、特定の方法でデータにアクセスする方法を提供します。

この記事 データの抽象化を理解し、抽象化を詳細に制御するのに役立つ場合があります。また、制御とデータの抽象化の実際の例もいくつかあります。

0
Vishal Shukla

背景の詳細​​や説明を含めずに、本質的な特徴を表現する行為を指します

0

オンとオフを切り替えたり、チャンネルを変更したり、音量を調整したり、スピーカー、VCR、DVDプレーヤーなどの外部コンポーネントを追加したりできるテレビの実際の例を見てみましょう。ただし、内部の詳細がわからない場合は、無線またはケーブルを介して信号を受信する方法、信号を変換する方法、そして最終的に画面に表示する方法がわかりません。

0

データの抽象化:必要な情報をユーザーに提供し、不要な情報をユーザーから隠すために使用されます。これはデータ抽象化と呼ばれます。それはあなたのビジネスロジックを世界の外から隠します。

技術例:Console.WriteLine();

非技術的な例:テレビのリモコン、車のリモコン。

詳細: リアルタイムの例によるデータの抽象化

0

抽象化とは、背景の詳細​​や説明を含めずに、重要な機能を表現する行為を指します。

0
Ripal shah

ソフトウェア開発の特定のシナリオに従ってデータ属性を制限し、無関係な属性をすべて削除する手法。これにより、ソフトウェア開発が簡単になります。

0
Muhammad Naveed

2進数システムなどのコンピュータシステムの保存方法とは異なり、人間との対話や遭遇が容易なデータの詳細を使用する複雑なシステムです。 Neema、Rohan、Upendo(プログラマー)による回答

0
UPENDO JOSEPHAT

単にデータの抽象化は、ユーザーから不要なデータを隠すことに他なりません。例:人は単に電話をかけたいだけで、「いいえ」を選択またはダイヤルするだけです。この情報を呼び出すボタンをクリックします。彼にとっては十分です。彼は、接続がどのように行われるか、電話をかける背後にあるプロセスや音声がどのように転送されるかについて知りたくありません。

0
Shadab pirjad3