제어 추상화는 어떤 클래스의 메소드를 사용하는 사용자에게 해당 메소드의 작동방식과 같은 내부 로직을 숨기고 이를 실행하기 위한 인터페이스를 제공하는 것을 말한다.
예를들어
운전자가 자동차를 운전할 때, 운전자는 자동차 엔진 작동 프로세스가 어떻게 작동하는지에 대해서 알 필요가 없고, 핸들,액셀,브레이크 등을 통한 인터페이스만으로도 운전이 가능하다.
운전자는 자동차의 동작 세부원리를 몰라도 운전하는데 지장이 없기 때문
class Database {
public void insertData(String data) {
// 데이터베이스 연결 및 삽입 로직
System.out.println(data + "가 데이터베이스에 삽입되었습니다.");
}
}
public class Main {
public static void main(String[] args) {
Database db = new Database();
db.insertData("샘플 데이터");
}
}
사용자는 Database의 삽입 로직의 세부 사항을 알 필요 없이 그냥 insertData를 호출하기만 하면 된다.
제어 추상화를 통해 어떤 기능을 수행하는 방법을 숨기고, 사용자가 이해하고 사용할 수 있는 고 수준의 인터페이스를 제공하여 설계의 복잡성을 줄이고 소프트웨어의 품질을 높이는데 기여
대상을 간단한 개념으로 일반화하는 과정
객체들을 하나로 묶을 때 객체들의 공통 특징으로 묶어 이름을 붙이는 것을 데이터 추상화라 한다
예를들어, 강아지,고양이 -> 애완동물 로 추상화가 가능한데, 이처럼 추상화를 진행할 수록 객체의 디테일함은 사라지고 공통된 특징만 남게 된다.
// 애완동물
abstract class Pet {
짖다();
}
// 강아지
class Dog extends Pet {
@Override
짖다() { 멍멍 };
}
// 고양이
class Cat extends Pet {
@Override
짖다() { 야옹 };
}
public class Main {
public static void main(String[] args) {
Dog myDog = new Dog();
Cat myCat = new Cat();
myDog.짖다();
myCat.짖다();
}
}