JAVA

[JAVA]추상화

당고개 2023. 10. 24. 22:30

내용에 중점을 두는 것보다 핵심적인 개념을 추려내는 것을 추상화라고 합니다. 프로그램을 설계하거나 코딩을 할 때도 핵심적인 것을 추려내는 것은 중요합니다. 그리고 추상화를 하는 과정에서는 공통적인 것을 추려내는 것도 포함됩니다.

추상화를 간단히 요약하면 다음과 같습니다.

  1. 추상화는 핵심적인 것을 추려내는 것이다.
  2. 추상화를 하는 방법은 핵심적인 것만 추려서 노출시킨다.
  3. How보다 What에 포커스를 둔다.

그림의 인간에게는 네 가지 행위가 있습니다.

  1. 식탁에 앉는다.
  2. 숟가락을 들다.
  3. 숟가락으로 밥을 푸다.
  4. 밥을 입으로 가져간다.

네 가지 행위가 존재하는 이유는 단 하나의 핵심 행위 때문에 존재합니다. 바로 밥을 먹기 위해서 존재하는 행위들이죠. 현실 세계에서 우리가 사람들과 밥을 먹을 때 밥을 먹으라고 하지 밥을 이렇게 저렇게 먹으라고 얘기해 주지는 않습니다.

꼭 밥뿐만은 아닙니다. 일을 할 때도 일하는 방법을 가르치는 것은 핵심 행위를 할 수 있도록 가르치는 것입니다. 본질 목적은 문제 해결과 핵심 행위에 중점을 두고 있습니다.

이러한 핵심 행위는 바라보는 관점에 따라 달라질 수 있습니다. 예시로 식탁에 앉는 것을 핵심 행위라고 본다면 어떤 식탁에 앉는지는 중요하지 않습니다. 식탁에 앉기만 하면 됩니다. 그리고 부수적인 행위는 어떤 식탁인지 설명하는 것이 되겠지요.

행위를 쪼개고 쪼개다 보면 결국에는 핵심 행위들의 집합이 됩니다. 이러한 핵심 행위들을 잘 판단하는 것이 가장 먼저 해야 할 일입니다.

Person 클래스에는 다형성, 추상화, 캡슐화의 개념이 동시에 존재합니다. 다형성을 다시 복기하면 여러 가지 형태에 속할 수 있는 성질이며 Rice, Spoon, Table을 기반으로 다양한 여러 클래스들로 확장되었습니다. 그리고 다형성의 성질을 이용하여 부수적인 행위는 각 관련된 세부적인 클래스의 행위로 넘기고 핵심 행위만 노출되어 있습니다.

핵심 행위가 목적이라면 굳이 부수적인 행위를 노출할 필요가 없지요.

Person 클래스의 eat() 메서드는 앉고, 들고, 푸고, 먹는다 이 세가지에만 집중합니다. 그리고 Person 클래스의 eat() 메서드를 호출하는 명령자도 핵심 행위만 노출하면 됩니다. 어떻게 밥을 먹는지에 대한 행위는 숨겨집니다.

다시 정리하면

  1. 다형성 - Rice, Spoon, Table을 기반으로 다양한 여러 클래스들로 확장
  2. 추상화 - 핵심적인 개념만 추림, eat(), seat(), taken, scoop(), eaten()
  3. 캡슐화 - 핵심 행위가 아닌 것을 숨김

"내가 구현하려는 핵심 행위는 무엇인가?"
"내가 무엇을 하려고 하는 것인가?"

 

 

 

출처 : https://www.codelatte.io/courses/java_programming_basic/E5OKW41I7B5L7INM

'JAVA' 카테고리의 다른 글

[JAVA]익명 클래스  (0) 2023.10.31
[JAVA]추상클래스와 인터페이스  (0) 2023.10.25
[JAVA]오버라이드(Override)  (0) 2023.10.23
[JAVA]다형성  (0) 2023.10.19
[JAVA]상속과 생성자  (0) 2023.10.18