0

アプリケーションで使用するデータ構造には、多くの場合、さまざまな種類の大量の情報が含まれており、特定の情報が複数の独立したデータ構造に属している場合があります。たとえば、人事データのファイルには、従業員に関する名前、住所、およびその他のさまざまな情報を含むレコードが含まれている場合があります。また、各レコードは、特定の従業員を検索するために 1 つのデータ構造に属したり、統計クエリに答えるために別のデータ構造に属したりする必要がある場合があります。

この多様性と複雑さにもかかわらず、大規模なクラスのコンピューティング アプリケーションには、データ オブジェクトの一般的な操作が含まれており、限定された特定の理由で、データ オブジェクトに関連付けられた情報にアクセスする必要があります。必要な操作の多くは、基本的な計算手順の自然な派生物であるため、さまざまなアプリケーションで必要とされます。基本的なアルゴリズムの多くは、このような操作を効率的に実行する機能をクライアント プログラムに提供できる抽象化層を構築するタスクに効果的に適用できます。したがって、このような操作に関連する多数の ADT を詳細に検討します。それらは、オブジェクトのタイプに関係なく、抽象オブジェクトのコレクションに対するさまざまな操作を定義します。

上記のテキストは、C++ のアルゴリズムで Robert Sedwick によって抽象データ型のコンテキストで説明されています。

私の質問は

「大規模なクラスのコンピューティング アプリケーションには、データ オブジェクトの一般的な操作が含まれ、限定された特定の理由で、それらに関連付けられた情報にアクセスする必要がある」という著者の意味。? ここで、著者は一般的な操作と特定の理由の限られた数によって何を意味するのでしょうか?

クライアントプログラムがそのような操作を効率的に実行できるように、「抽象化のレイヤーを構築する」とはどういう意味ですか?

ありがとう!

4

4 に答える 4

0

彼は基本的にSTLが何をするかを説明しています。私はSedgewickを嫌いではありません。それは古典的で、1986年に私のコピーを購入しましたが、彼は非常に洗練されていない世界のために書いています。必ずアルゴリズムを使用してください。しかし、私は一般的なソフトウェアエンジニアリングに関係することは何でも調整し、より最近のものを読みます。

于 2012-08-21T11:33:59.117 に答える
0

ジェネリック操作とは、データの種類や操作方法を明示的に知らなくても、データを処理できるコードを記述することです。

C++ ライブラリの std::find を検討してください。

template<class InputIterator, class T>
InputIterator find(InputIterator first, InputIterator last, const T& value)
{
    for ( ; first != last; ++first) 
        if (*first == value)
            return first;

    return last;
}

このコードは、イテレータ (コンテナだけでなく) を提供できる任意のシーケンス、および参照によって渡され、 を使用して比較できる任意の型に対して機能します。T==

について他に何も知る必要はありませんT

于 2012-08-21T11:04:15.257 に答える
0

プログラム (アルゴリズム) が動作するオブジェクトを作成することで、実際の問題をコンピューターが理解できるものに変換します。通常、仕事をする方法はたくさんあります。コンピューティングの観点から効率的であるだけでなく、コードを読みやすく、保守しやすいモデルを選択することが重要です。

汎用アルゴリズムは汎用データでのみ実行できるため、コードへのアクセスの抽象レイヤーは、データ インターフェイスにあまり煩わされることなく、アルゴリズムを効率的に変更できることを意味します。

インターフェイスが同じままである限り、実装は変更できます。これは、コード (またはデザイン) が完成し、1 つのタスクに集中していることを意味します。さまざまなプログラム部分間の複雑なリンクを回避することで、テスト、デバッグ、および拡張がはるかに簡単なソリューションにつながります。

于 2012-08-21T10:52:21.960 に答える
0

抽象インターフェースは意図されていると思います。それらの適切な実装により、クライアントは実現の詳細に沈むことがなく、したがってアクションを効率的に実行し、抽象クラスから派生したさまざまなタイプの汎用オブジェクトに対してアクションを実行できます。また、ジェネリックプログラミングのコアであるテンプレートはここでカバーされていると思います

于 2012-08-21T10:49:38.783 に答える