私の質問が SO の基準を満たしていない場合は申し訳ありませんが、Grady BoochのABSTRACTIONの定義の最後の数単語を読むのに本当に苦労しました
「抽象化は、オブジェクトを他のすべての種類のオブジェクトと区別するオブジェクトの本質的な特性を示し、したがって、視聴者の視点に対して明確に定義された概念的境界を提供します 」
「視聴者の視点に対して」とはどういう意味か説明してください。どんな例でも本当に役に立ちます。
私の質問が SO の基準を満たしていない場合は申し訳ありませんが、Grady BoochのABSTRACTIONの定義の最後の数単語を読むのに本当に苦労しました
「抽象化は、オブジェクトを他のすべての種類のオブジェクトと区別するオブジェクトの本質的な特性を示し、したがって、視聴者の視点に対して明確に定義された概念的境界を提供します 」
「視聴者の視点に対して」とはどういう意味か説明してください。どんな例でも本当に役に立ちます。
それらは単に、抽象化を理解しようとする人の観点から、抽象化が何であり、何が含まれ、何が含まれないかを明確にする必要があることを意味します。
ただし、実装方法は、他の抽象化とそれほど明確に異なるわけではありません。
例えば:
AURI
は a とは異なる抽象化Name
です。開発者とユーザーにとって、どちらが何であるかは明らかです。ただし、実装に関しては、どちらも文字列に過ぎない可能性があります。
彼らが言おうとしているのは、セマンティクスと動作が抽象化を正しく定義することであり、それらがどのように実装されるかではないと思います。
OOP の世界での定義は異なり、必ずしも明確ではありません。たとえば、Tony Hoare による抽象化の定義を紹介します。
「抽象化は、現実世界の特定のオブジェクト、状況、またはプロセス間の類似性を認識し、それらの類似性に集中し、当面は違いを無視するという決定から生じます。」
多分これはあなたにとってより明確です。しかし、私はこれらの定義の言葉についてはあまり気にしません。
抽象化について理解することが重要なのは、エンティティ (またはオブジェクト) を完全に記述および識別する一連の動作 (インターフェイス) をユーザー (またはビューアー) に公開する機能があることです。これらの動作 (メソッド) を理解したら、これらのメソッドの実際の実装を無視できますし、無視する必要があります。ユーザーが気にする必要があるのは、入力パラメーターを提供し、正しい結果を受け取ることです。
これは抽象化のより実用的な定義だと思います。