OOPSにおける抽象化とは何ですか?

抽象化はオブジェクト指向プログラミングの中核の概念の一つです。抽象化はアプリケーションコンポーネントを作成するためのモデルを定義します。抽象化の実装は言語固有の機能とプロセスに依存します。

1. 抽象化とは何ですか?

抽象化はアプリケーションの内部詳細を外部の世界から隠すプロセスです。抽象化は物事を簡単な言葉で記述するために使用されます。これはアプリケーションとクライアントプログラムの間に境界を作成するために使用されます。

2. 現実の中の抽象化

抽象化はほとんどすべての現実の機械に存在します。

  • 車は抽象化の素晴らしい例です。キーを回すかスタートボタンを押すことで車を始動できます。エンジンがどのように始動しているかや、車がどのようなコンポーネントを持っているかを知る必要はありません。車の内部の実装と複雑なロジックはユーザーから完全に隠されています。
  • 電子レンジで食事を温めることができます。タイマーと食べ物の種類を設定するためにボタンを押します。最終的には温かくておいしい食事が得られます。電子レンジの内部の詳細は私たちから隠されています。機能には非常に簡単な方法でアクセスできています。

3. OOPSにおける抽象化

オブジェクトはオブジェクト指向プログラミングの基本要素です。オブジェクトにはいくつかのプロパティとメソッドが含まれています。これらをアクセス修飾子を通じて外部から隠すことができます。他のプログラムに対しては必要な機能とプロパティのみをアクセス可能にすることができます。これがOOPSにおける抽象化を実装する一般的な手順です。

4. 抽象化の異なる種類は何ですか?

抽象化には2つの種類があります。

  1. データ抽象化
  2. プロセス抽象化

4.1) データ抽象化

オブジェクトデータが外部に見えない場合、データ抽象化が発生します。必要な場合、オブジェクトのデータへのアクセスはいくつかのメソッドを通じて提供されます。

Data Abstraction

4.2) プロセス抽象化

オブジェクトのすべての機能についての詳細を提供する必要はありません。ユーザーの操作に関与するさまざまな関数の内部実装を隠すことで、プロセスの抽象化が作成されます。

Process Abstraction

5. Javaにおける抽象化

Javaにおける抽象化は、インターフェース抽象クラスを介して実装されます。これらは、実際の実装クラスの基本実装または契約を作成するために使用されます。Car.java:基本インターフェースまたは抽象クラス

package com.journaldev.oops.abstraction;

public interface Car {

	void turnOnCar();

	void turnOffCar();

	String getCarType();
}

ManualCar.java、AutomaticCar.java:Carの実装クラス。

package com.journaldev.oops.abstraction;

public class ManualCar implements Car {

	private String carType = "Manual";
	
	@Override
	public void turnOnCar() {
		System.out.println("turn on the manual car");
	}

	@Override
	public void turnOffCar() {
		System.out.println("turn off the manual car");
	}

	@Override
	public String getCarType() {
		return this.carType;
	}
}
package com.journaldev.oops.abstraction;

public class AutomaticCar implements Car {

	private String carType = "Automatic";

	@Override
	public void turnOnCar() {
		System.out.println("turn on the automatic car");
	}

	@Override
	public void turnOffCar() {
		System.out.println("turn off the automatic car");
	}

	@Override
	public String getCarType() {
		return this.carType;
	}
}

ユーザープログラム:Carの機能が使用されるテストプログラムを見てみましょう。

package com.journaldev.oops.abstraction;

public class CarTest {

	public static void main(String[] args) {
		Car car1 = new ManualCar();
		Car car2 = new AutomaticCar();

		car1.turnOnCar();
		car1.turnOffCar();
		System.out.println(car1.getCarType());

		car2.turnOnCar();
		car2.turnOffCar();
		System.out.println(car2.getCarType());

	}

}

クライアントプログラムはCarとCarが提供する機能についてのみ知っています。内部の実装の詳細はクライアントプログラムから隠されています。参考文献:WikipediaOracle Docs

Source:
https://www.digitalocean.com/community/tutorials/what-is-abstraction-in-oops