추상화(abstraction)
설명할 추상화에 대해서는 OOP언어 공통의 내용입니다.
추상화는 구체적인 것을 분해해서 관심 영역에 대한 특성만을 가지고 재조합하는것 입니다.
말그대로 필요한 정보들만 간추려서 구성하는 것입니다.
OOP에서 추상화를 진행할 때 고려해야 할 사항
-
어떤 종류의 객체들을 정의할 것인가?
-
각 객체는 어떤 필드들과 메소드들을 갖는가?
자동차를 대상으로 추상화해보기
-
기름을 넣을수 있는 량
-
자동차 타입(소형,중형,대형 등)
-
시동을 건다.
-
움직인다.
-
브레이크를 건다.
-
시동을 끈다.
-
기름을 넣는다.
정도 추상화를 할 수 있습니다.
자동차는 날 수 없으므로 날다 라고 추상화가 불가능합니다.
아직까진 하늘을 나는 자동차는 없습니다.
그리고 추상화는 모든 객체에 공통적인 성질들만 담고 있어야 합니다.
위에 자동차를 추상화 한것도 모든 자동차의 공통적인 성질이기에 가능한겁니다.
보통은 추상화 후 코딩이지만 코딩중에 추상화도 가능합니다.
추상화 후 코딩은 설계한대로 짜면 되지만 코딩중에 추상화한다면 예상치 못한 곳을 변경할 수도 있으니 귀찮아집니다.
마치 알고리즘을 생각하고 코딩하는것과 비슷하다고 이해하시면 됩니다.
댓글