抽象化とカプセル化:抽象化とカプセル化の違い

公開: 2021-02-09

目次

序章

すべてのプログラマーは、きちんとしたクリーンなコードを開発することに成功しており、鎧またはOOPの概念から適切な武器を使用する必要があります。 適切なOOPの概念を使用すると、複雑さが軽減され、オブジェクトのエンティティがコードの他の部分から分離されます。 また、読みやすさが向上し、必要に応じて簡単に変更できます。

また、継承のようなOOPの概念は、コードの拡張性を提供します。 これらの概念は、抽象クラスの定義、以前に実装されたコードの更新、実際のシナリオ用のアプリケーションの実装に役立ちます。

抽象化、カプセル化は、オブジェクト指向プログラミングの基本的な概念です。 そして、すべてのプログラマーは、クリーンで再利用可能なコードのためにこれらの概念を実装しています。 しかし、これら2つの概念の間にはかなりの数の違いがあります。この記事で、それらを理解しましょう。

最初に、抽象化とカプセル化の概念について簡単に説明します。

抽象化

抽象化は、不要なデータを非表示にし、関連するデータのみを表示するプロセスです。 大量のデータのうち、ユーザーに対する一部のデータの透明性を維持しているだけです。 オブジェクト指向プログラミングにおけるこの重要な概念は、コードの複雑さを軽減し、読みやすさを向上させます。

たとえば、オンラインコース登録ポータルを作成するタスクが割り当てられ、使用可能なデータフィールドが{名前、年齢、現在の職業、大学名、コース名、支払い方法、兄弟の名前、結婚歴、車両であるとします。番号}。

利用可能なデータフィールドを確認すると、コース登録ポータルに不要なフィールドがいくつかあることがわかります。{兄弟の名前、婚姻状況、車両番号}などのフィールドはコース登録に必要ありません。

したがって、具体的に、関連するデータのみを選択する必要があります。 必要なフィールドは{名前、年齢、現在の職業、大学名、コース名、支払い方法}です。これは、データ全体から選択した情報をエスコートしたため、OOPでの抽象化の例になります。

現在、この新しいデータは、コースステータストラッカー、コース完了レコードなどの他のアプリケーションにも使用できます。同じデータを変更せずに使用できます。

多くの人が抽象化と抽象クラスについてしばしば混乱します、それでそれらは両方とも関連していますか?

抽象クラスは抽象化とは異なり、抽象クラス/メソッドは、子クラスまたはサブクラスに実装することを目的として作成されます。 一方、抽象化とは、単にデータを非表示にし、public、protected、privateなどのアクセス指定子を使用して関連するデータのみを表示することです。

カプセル化

カプセル化とは、データメンバーをメンバー変数にバインドすることです。 これにより、変数への直接アクセスがプライバシーを侵害する可能性があり、実装を非表示にすることができないため、変数への直接アクセスが回避されます。

setやgetのようなクラスのいくつかの古典的なメソッドを経験したかもしれません。ここで、setメソッドは変数に値を更新または割り当てるために使用され、getメソッドは変数の値を読み取るまたは取得するために使用されます。 ここでは、そのクラスのオブジェクトを使用して変数に直接アクセスできますが、変数をプライベートにしたい場合は、これらの設定を使用してメソッドを取得する必要があります。

概念は単純です。setメソッドとgetメソッドをパブリックにし、変数をプライベートにします。 したがって、プライベートオブジェクトはクラスの外部ではアクセスできませんが、クラスの内部ではアクセスできるため、変数にはクラスの外部のパブリックメソッドを介してのみアクセスできます。 変数をメソッドにバインドまたはバンドルするこの概念は、カプセル化と呼ばれます。

これをよりよく理解するために、単純なJavaプログラムを見てみましょう。

クラスCourseRegistration {
プライベート文字列student_name;
プライベート文字列course_name;
public String getName (){
Student_nameを返します。
}
public void setName (String name){
this .student_name = name;
}
public String getCourse (){
コース名を返す;
}
public void setCourse (文字列コース){
this .course_name = course;
}
}
パブリッククラスupGrad {
public static void main (String [] args){
CourseRegistration c = new CourseRegistration();
c.setName( “ mithun” );
c.setCourse( “データサイエンス” );
System.out.println(c.getName());
System.out.println(c.getCourse());
}
}

上記のコードでは、クラスCourseRegistrationを作成しました。このクラスでは、メンバー変数の学生名とコース名がプライベートですが、setname関数とgetname関数を使用して別のクラスでアクセスしています。 メインクラスでは、CourseRegistrationタイプのオブジェクトを作成しました。 set関数とget関数を使用して、メンバー変数を初期化してアクセスしています。

抽象化の定義と例を見てきましたので、抽象化とカプセル化の利点と違いについて説明しましょう。

抽象化の利点

  • 関連するデータのみがユーザーに表示されるため、データのプライバシーは維持されます。
  • コードの複雑さを軽減し、読みやすさを向上させます。
  • 抽象化を実装するクラスは、それらを継承することで親クラスとして使用できるため、再利用性が向上し、重複が減少します。

カプセル化の利点

  • これは、データメンバーをメンバー関数にバインドするのに役立ちます。
  • エラー分析の効率とユーザーフレンドリーを向上させます。
  • データのアクセシビリティと透明性を制御する際にプログラマーに柔軟性を提供します。

抽象化とカプセル化の違い

意味

  • 抽象化は、コードの詳細と実装を隠しています。
  • カプセル化とは、データを隠し、コードの可視性を制御することです。

段階

  • 抽象化は設計レベルのプロセスです。
  • カプセル化は、実装レベルのプロセスです。

極めて重要な能力

  • 抽象化は、クラスの実装ではなく、クラスインスタンスで何ができるかを考慮します。
  • カプセル化は、データバインディングと、データの透明性の維持を制御するのに役立ちます。

使用事例

  • 抽象化は設計レベルのプロセスであり、プロジェクトの設計段階での複雑さを軽減するために使用されます。
  • カプセル化は実装レベルのプロセスであり、プロジェクトの実装段階でプライバシーを提供し、データの透明性を制御するために使用されます。

実装方法

  • 抽象化は、Javaのクラスとインターフェースを使用して実現できます。
  • カプセル化もクラスを使用して実装され、データプライバシーの制御は、protected、public、privateなどのアクセス指定子を指定することによって取得されます。

世界のトップ大学からオンラインでソフトウェア開発コース学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

結論

OOPの概念の重要性を理解し、抽象化とカプセル化の定義を理解しました。 抽象化とカプセル化の例をウォークスルーしました。 また、抽象化やカプセル化などのOOPの概念を使用することの利点についても検討しました。 そして最後に、抽象化とカプセル化の違いについて説明しました。

抽象化、カプセル化の定義と実装を理解したので、それらをコードに実装して、これから作成するコードの複雑さを軽減してみてください。

Java、フルスタック開発について詳しく知りたい場合は、upGrad&IIIT-Bのフルスタックソフトウェア開発のエグゼクティブPGプログラムをチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニング、9以上のプロジェクトを提供します。 、および割り当て、IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、およびトップ企業との雇用支援。

オブジェクト指向プログラミングの抽象化とは何ですか?

オブジェクト指向プログラミングの抽象化は、オブジェクトを構築することによって問題に関する高レベルの情報を表現する手法です。 抽象化はインターフェースの助けを借りて実装され、インターフェースの実装は実際のコードを使用して行われます。 抽象化は、異なるインターフェースを提供することにより、具体的な詳細が消費モジュールから隠されている場合に実装されます。 抽象化は、低レベルの詳細の実装の詳細を非表示にするために実装されます。 また、複雑な詳細を非表示にし、ユーザーにシンプルなインターフェイスを提供するためにも使用されます。

クラスとオブジェクトはプログラミングでどのように機能しますか?

クラスとオブジェクトは、すべてのオブジェクト指向プログラミング言語で採用されている2つの主要な概念です。 すべてのクラスには、使用および操作できる変数とメソッドのセットが含まれています。 オブジェクト指向プログラミング言語では、プログラム内のすべてのオブジェクトには特定のタイプがあり、オブジェクトの変数とメソッドは同じタイプのメソッドによってのみ操作できます。 ほとんどのオブジェクト指向言語では、クラスはオブジェクトを作成するために使用され、その逆も同様です。 オブジェクト指向プログラムは、オブジェクト、プロシージャ、およびデータ型で構成されています。 データやコードを含むオブジェクト指向プログラムのすべてがオブジェクトです。

カプセル化と抽象化の違いは何ですか?

抽象化は、コード内の不要な詳細を削除し、関連する部分に焦点を当てる方法です。 たとえば、2つの数値を乗算する関数を作成する代わりに、「乗算」関数を作成し、それを使用して任意の数値と任意の数値を乗算できます。 抽象化は、特定のデータを表す方法です。 カプセル化は、何かの複雑さを隠し、公開したい部分だけを公開する方法です。 たとえば、データの保存に使用する1つ以上のプライベートフィールドを持つクラスがある場合、カプセル化されています。 クラスにはデータが含まれ、パブリックデータを公開するメソッドがあります。