Что такое абстракция в ООП?

Абстракция является одним из основных концепций объектно-ориентированного программирования. Абстракция определяет модель создания компонента приложения. Реализация абстракции зависит от языка и его особенностей и процессов.

1. Что такое абстракция?

Абстракция – это процесс скрытия внутренних деталей приложения от внешнего мира. Абстракция используется для описания вещей в простых терминах. Она создает границу между приложением и клиентскими программами.

2. Абстракция в реальной жизни

Абстракция присутствует в почти всех механизмах реальной жизни.

  • Ваш автомобиль – отличный пример абстракции. Вы можете запустить автомобиль, повернув ключ или нажав кнопку запуска. Вам не нужно знать, как запускается двигатель, какие компоненты есть в вашем автомобиле. Внутренняя реализация и сложная логика автомобиля полностью скрыты от пользователя.
  • Мы можем разогреть пищу в микроволновой печи. Мы нажимаем кнопки, чтобы установить таймер и тип пищи. В конечном итоге мы получаем горячую и вкусную еду. Внутренние детали микроволновой печи скрыты от нас. Нам предоставлен доступ к функциональности в очень простой форме.

3. Абстракция в ООП

Объекты являются строительными блоками объектно-ориентированного программирования. Объект содержит некоторые свойства и методы. Мы можем скрыть их от внешнего мира с помощью модификаторов доступа. Мы можем предоставить доступ только к необходимым функциям и свойствам другим программам. Это общая процедура реализации абстракции в ООП.

4. Каковы различные типы абстракции?

Существует два типа абстракции.

  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. Внутренние детали реализации скрыты от программы-клиента. Ссылки: Wikipedia, Oracle Docs

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