Skip to Content
Suffering builds character

5. 추상화

1. 추상화, Abstraction

구체(具體)와 추상(抽象)

구체
사물이 직접 경험하거나 지각할 수 있도록 일정한 형태와 성질을 갖춤

추상
여러 사물이나 개념에서 공통적인 특성이나 속성 따위를 추출하여 파악하는 작용

구체화 ← 대조 → 추상화

abstraction2 Ref. 만화의 이해, 스콧 맥클라우드

2. 추상화 in 객체지향

객체지향에서 추상화란 객체로 설계하기 위한 대상이 가진 공통점들을 추출하는 작업 이라고 볼 수 있음

만약 사람이라는 클래스를 설계할 경우, 주변에서 보이는 사람들을 관찰해서 공통점만을 추출함

추출 과정은 크게 속성과 역할로 구분하여 추출함

2-1. 속성(field) 추출 작업

1. 개별 대상 탐색
한소희는 사람이고, 본질적으로는 생명체이기 때문에 **나이(age)**가 있으며, 차은우도 마찬가지

2. 탐색한 결과를 토대로 공통점 추출
사람은 모두 나이(age)가 있음
따라서 나이에 해당하는 age 속성을 사람이라는 클래스(class Person)가 가질 수 있는 하나의 속성으로 추출

2-2. 역할(method) 추출 작업

1. 개별 대상 탐색
한소희와 차은우는 걸을 수 있음

2. 탐색한 결과를 토대로 공통점 추출
사람은 모두 걸을 수 있음(walk)

걸을 수 있는 행위에 해당하는 walk()를 사람 클래스(class Person)가 가질 수 있는 하나의 행위이자 기능(method)으로 추출

2-3. 사람이 가진 모든 속성과 행위를 전부 정의해야 할까?

속성 - 나이, 몸무게, 키 등
역할 - 먹다, 자다, 울다, 노래하다 등

→ 작성하고자 하는 프로그램 or 프로젝트에 따라 경계, 범위를 정하면 됨

3. 객체 지향에서 추상화란,

구체적인 것을 분해해서 개발하고자 하는 관심 영역(애플리케이션 경계, Application Boundary)에 있는 특성만 추출하여 재조합하는 것
→ 추상화란 일련의 모델링(Modeling) 과정

이러한 추상화 과정을 통해 만들어지는 것이 하나의 class

Person.java
class Person { ... }
Penguin.java
class Penguin { ... }
Last updated on