Поиск по сайту:

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


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

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

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

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

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

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

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

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

4. Какие существуют типы абстракций?

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

  1. Абстракция данных
  2. Абстракция процесса

4.1) Абстракция данных

Когда данные объекта не видны внешнему миру, создается абстракция данных. При необходимости доступ к данным Объектов осуществляется некоторыми методами.

4.2) Абстракция процесса

Нам не нужно подробно рассказывать обо всех функциях объекта. Когда мы скрываем внутреннюю реализацию различных функций, задействованных в пользовательской операции, это создает абстракцию процесса.

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;
	}
}

Пользовательская программа: Давайте рассмотрим тестовую программу, в которой будут использоваться функции автомобиля.

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());

	}

}

Программа-клиент знает только об Автомобиле и функциях, которые предоставляет Автомобиль. Детали внутренней реализации скрыты от клиентской программы. Ссылки: Документы Oracle