Что такое абстракция в ООП?
Абстракция — одна из основных концепций объектно-ориентированного программирования. Абстракция определяет модель для создания компонента приложения. Реализация абстракции зависит от особенностей и процессов языка.
1. Что такое абстракция?
Абстракция — это процесс сокрытия внутренних деталей приложения от внешнего мира. Абстракция используется для описания вещей простыми словами. Он используется для создания границы между приложением и клиентскими программами.
2. Абстракция в реальной жизни
Абстракция присутствует почти во всех реальных машинах.
- Ваша машина — отличный пример абстракции. Вы можете завести автомобиль, повернув ключ или нажав кнопку запуска. Вам не нужно знать, как заводится двигатель, какие все узлы есть в вашем автомобиле. Внутренняя реализация автомобиля и сложная логика полностью скрыты от пользователя.
- Мы можем разогреть еду в микроволновой печи. Нажимаем какие-то кнопки, чтобы установить таймер и тип еды. В итоге получаем горячую и вкусную еду. Внутренние детали микроволновки скрыты от нас. Нам был предоставлен доступ к функциям очень простым способом.
3. Абстракция в ООП
Объекты — это строительные блоки объектно-ориентированного программирования. Объект содержит некоторые свойства и методы. Мы можем скрыть их от внешнего мира с помощью модификаторов доступа. Мы можем предоставить другим программам доступ только к необходимым функциям и свойствам. Это общая процедура реализации абстракции в ООП.
4. Какие существуют типы абстракций?
Существует два типа абстракции.
- Абстракция данных
- Абстракция процесса
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