Java - 추상화에 대해 알아보자.
Java - 추상화에 대해 알아보자.
추상화란?
추상화란 객체지향 4대 요소 중 하나로, 세부적인 특징은 버리고 핵심 정보들을 추출하여 모델링하는 것을 말한다.
추상화를 하는 이유는 추상화를 함으로써 시스템의 복잡도를 낮출 수 있기 때문이다.
추상화는 아래와 같이 2가지로 나눌 수 있다.
- 데이터 추상화
- 프로세스 추상화
데이터 추상화
예를 들어 설명해보자면 철수, 영희, 돌쇠 이렇게 3명의 사람이 있다고 가정해보자.
이들은 모두 다른 사람들이지만 공통적인 특징들을 가진다.
예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public abstract class Person {
private String name;
private int age;
private String gender;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getGender() {
return gender;
}
}
public class 철수 extends Person { }
public class 영희 extends Person { }
public class 돌쇠 extends Person { }
위 코드처럼 공통적으로 가진 특징들을 추상화하여 분리한 후 사용하면 철수, 영희, 돌쇠 클래스 내부에 복잡도를 떨어뜨릴 수 있다.
정리하자면 데이터 추상화는 어떤 데이터가 중요한지 설계하는 것을 말하는 것이다.
프로세스 추상화
프로세스 추상화란, 내부 구현 로직을 모르더라도 무슨 일을 하는지만 알고 쓸 수 있는 것을 말한다.
이번에도 예시를 들어서 설명해보겠다.
예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public interface Car {
int accelerate(int speed);
int brake(int speed);
}
public class KoreanCar implements Car {
@Override
public int accelerate(int speed) {
return speed + 15;
}
@Override
public int brake(int speed) {
return speed - 15;
}
}
public class UsaCar implements Car {
@Override
public int accelerate(int speed) {
return speed + 20;
}
@Override
public int brake(int speed) {
return speed - 20;
}
}
사용 예시
1
2
3
4
5
6
7
8
9
10
public class Main{
public static void main(String[] args){
Car myCar = new KoreanCar();
System.out.println(myCar.accelerate(50));
myCar = new UsaCar();
System.out.println(myCar.accelerate(50));
}
}
위 예시에서 확인할 수 있듯이 내부 구현 로직을 몰라도 정의된 행위(인터페이스의 메서드)만 보고도 무엇을 하는지 알 수 있게 하는 것이 프로세스 추상화이다.
This post is licensed under CC BY 4.0 by the author.