OOPの「抽象化」の定義を理解しようとしています。
私はいくつかの主要な定義に出会いました。それらはすべて有効ですか?それらの1つは間違っていますか?よくわかりません。(定義を自分の言葉で書き直しました)。
定義1:
抽象化とは、現実世界からオブジェクトを取り出し、それをプログラミング用語に変換する概念です。そのような作成などのHuman
クラスを、それを与えint health
、int age
、String name
、などの性質、およびeat()
等の方法。
定義2:
より一般的な定義。抽象化は、「物事をより一般的/単純化/抽象化する」ことが関係するソフトウェアシステムのどこででも起こる概念です。いくつかの例:
継承階層。上位クラスがより単純またはより一般的であり、より一般的で抽象的な実装を定義します。階層の下位クラスはより具体的であり、より詳細な実装を定義します。
カプセル化を使用して、クラスの実装の詳細を他のクラスから隠すことにより、クラスを外部ソフトウェアの世界により「抽象化」(単純化)します。
定義3
別の一般的な定義:抽象化とは、物事の詳細や具体的な実装から、物事の種類(クラス)、利用可能な操作(メソッドなど)にフォーカスを移動する概念です。より抽象的な。(これは、ソフトウェアシステム内の任意のコンテキストで実行できます)。カプセル化は実装の詳細を隠し、物の種類とそれらのより一般的かつ抽象的な定義のみを表示することを意味するため、例えばカプセル化するときに行われます。Anotehrの例ではList
、Javaでオブジェクトを使用します。このオブジェクトは実際にArrayList
aまたはaの実装詳細を使用しますLinkedList
が、この情報はより一般的な名前を使用して抽象化されList
ます。
これらの定義は正しいですか?(私は最も一般的で受け入れられている定義に言及しています)。