추상화는 객체지향 프로그래밍의 핵심 개념 중 하나입니다. 추상화는 애플리케이션 구성 요소를 생성하기 위한 모델을 정의합니다. 추상화의 구현은 언어별 특징과 프로세스에 따라 달라집니다.
1. 추상화란 무엇인가?
추상화는 애플리케이션의 내부 세부사항을 외부 세계에서 숨기는 과정입니다. 추상화는 간단한 용어로 사물을 설명하는 데 사용됩니다. 이는 애플리케이션과 클라이언트 프로그램 간의 경계를 만드는 데 사용됩니다.
2. 현실 생활에서의 추상화
추상화는 실제로 모든 실생활 기계에 존재합니다.
- 당신의 자동차는 추상화의 좋은 예입니다. 당신은 키를 돌리거나 시작 버튼을 눌러 자동차를 시동할 수 있습니다. 당신은 엔진이 어떻게 시작되는지, 자동차가 가지고 있는 모든 구성 요소는 무엇인지 알 필요가 없습니다. 자동차의 내부 구현 및 복잡한 로직은 사용자로부터 완전히 숨겨져 있습니다.
- 우리는 전자레인지를 사용하여 음식을 데울 수 있습니다. 우리는 타이머를 설정하고 음식의 종류를 설정하기 위해 몇 가지 버튼을 누릅니다. 마지막으로, 우리는 뜨겁고 맛있는 식사를 얻습니다. 전자레인지의 내부 세부사항은 우리로부터 숨겨져 있습니다. 우리는 매우 간단한 방식으로 기능에 접근할 수 있게 되었습니다.
3. OOPS에서의 추상화
객체는 객체 지향 프로그래밍의 구성 요소입니다. 객체에는 속성과 메서드가 포함되어 있습니다. 우리는 이를 접근 한정자를 통해 외부 세계로부터 숨길 수 있습니다. 다른 프로그램에 필요한 기능과 속성에만 액세스를 제공할 수 있습니다. 이것은 OOPS에서 추상화를 구현하는 일반적인 절차입니다.
4. 다양한 종류의 추상화는 무엇인가요?
추상화에는 두 가지 유형이 있습니다.
- 데이터 추상화
- 프로세스 추상화
4.1) 데이터 추상화
객체 데이터가 외부 세계에서 보이지 않을 때 데이터 추상화가 생성됩니다. 필요한 경우 객체 데이터에 액세스할 수 있도록 몇 가지 메서드를 통해 제공됩니다.

4.2) 프로세스 추상화
내용을 번역하겠습니다.
“객체의 모든 기능에 대한 세부 정보를 제공할 필요는 없습니다. 사용자 작업에 관련된 여러 함수들의 내부 구현을 숨기면 프로세스 추상화가 생성됩니다.

5. 자바에서의 추상화
자바에서의 추상화는 인터페이스와 추상 클래스를 통해 구현됩니다. 이들은 실제 구현 클래스를 위한 기본 구현 또는 계약을 생성하는 데 사용됩니다. 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가 제공하는 함수에 대해서만 알고 있습니다. 내부 구현 세부 정보는 클라이언트 프로그램에서 숨겨져 있습니다. 참조: 위키백과, 오라클 문서“
Source:
https://www.digitalocean.com/community/tutorials/what-is-abstraction-in-oops