웹사이트 검색

OOPS에서 추상화란?


추상화는 객체 지향 프로그래밍의 핵심 개념 중 하나입니다. 추상화는 응용 프로그램 구성 요소를 만드는 모델을 정의합니다. 추상화 구현은 언어별 기능 및 프로세스에 따라 다릅니다.

1. 추상화란?

추상화는 외부 세계에서 응용 프로그램의 내부 세부 정보를 숨기는 프로세스입니다. 추상화는 간단한 용어로 사물을 설명하는 데 사용됩니다. 응용 프로그램과 클라이언트 프로그램 사이에 경계를 만드는 데 사용됩니다.

2. 실생활에서의 추상화

추상화는 거의 모든 실제 기계에 존재합니다.

  • 자동차는 추상화의 좋은 예입니다. 키를 돌리거나 시작 버튼을 눌러 자동차를 시동할 수 있습니다. 엔진이 어떻게 시작되는지, 자동차의 모든 구성 요소가 무엇인지 알 필요가 없습니다. 자동차 내부 구현 및 복잡한 로직은 사용자에게 완전히 숨겨져 있습니다.
  • 전자레인지로 음식을 데울 수 있습니다. 타이머와 음식 종류를 설정하기 위해 몇 가지 버튼을 누릅니다. 마지막으로 따뜻하고 맛있는 식사를 합니다. 전자레인지 내부 세부 정보는 숨겨져 있습니다. 매우 간단한 방식으로 기능에 액세스할 수 있습니다.

3. OOPS의 추상화

개체는 개체 지향 프로그래밍의 빌딩 블록입니다. 개체에는 몇 가지 속성과 메서드가 포함되어 있습니다. 액세스 수정자를 통해 외부 세계에서 숨길 수 있습니다. 우리는 다른 프로그램에 필요한 기능과 속성에 대해서만 액세스를 제공할 수 있습니다. 이것은 OOPS에서 추상화를 구현하는 일반적인 절차입니다.

4. 추상화의 다른 유형은 무엇입니까?

추상화에는 두 가지 유형이 있습니다.

  1. 데이터 추상화
  2. 프로세스 추상화

4.1) 데이터 추상화

개체 데이터가 외부 세계에 표시되지 않으면 데이터 추상화가 생성됩니다. 필요한 경우 몇 가지 방법을 통해 개체 데이터에 대한 액세스가 제공됩니다.

4.2) 프로세스 추상화

개체의 모든 기능에 대한 세부 정보를 제공할 필요는 없습니다. 사용자 작업과 관련된 다양한 기능의 내부 구현을 숨기면 프로세스 추상화가 생성됩니다.

5. 자바의 추상화

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가 제공하는 기능에 대해서만 알고 있습니다. 내부 구현 세부 정보는 클라이언트 프로그램에서 숨겨집니다. 참조: 오라클 문서