티스토리 뷰
추상화라는 단어는 프로그래밍 분야 이외에도 다양한 곳에서 사용되고 있다.
미술분야에서 추상화는 어떤 대상의 실제 모습을 전부 다 있는 그대로 그리는 것이 아니다.
피사체의 특징과 화가의 생각과 느낌이 결합되어 그림이 그려진다.
추상화를 객체지향 프로그래밍 관점에서 살펴보면 특정한 객체를 구현함에 있어서
그 객체의 모든 것을 모두 표현하는 것이 아니라 아주 중요한 특징들만 뽑아서 표현하는 것이다.
말 그대로 핵심을 추출(abstraction)하여 객체를 구현하는 것이다.
추상화는 객체지향 프로그래밍의 중요한 원칙 중의 하나이다.
이것은 프로그래밍시에 필요 없는 부분은 생략하고 객체의 속성 중에서 가장 중요한 것들에만 집중하여
개략화하자는 것이다.
즉, 객체에서 공통된 속성과 행위(메서드)를 추출하는 것이다.
지나치게 세세한 정보는 무시하고 반드시 필요한 필수 불가결한 정보들로 객체를 구현하자는 것이다.
예컨대, 시계를 객체지향 기법을 사용하여 추상화 한다고 가정해 보자.
그러면 시계에서 가장 중요한 것은 시, 분, 초가 표현되도록 하는 것이다.
즉, 시계의 필수 기능이 구현되도록 중요한 사항이 추출되어 프로그램으로 구현되면 족하다는 것이다.
public class Clock{
int hour;
int minute;
int second;
public void timedisplay( ) {
//시간 출력 함수
}
}
대강 위와 같은 식으로 필수 기능을 구현하면 된다.
예컨대 시계줄, 방수 등 부가적인 기능은 우선적으로 구현할 기능이 아니다.
추상화를 통해서 얻어지는 것은 객체를 표현함에 있어서 가장 중요한 것 혹은 반드시 필요한 부분만을 표현하는 것이다.
이런 방식으로 소프트웨어를 작성하면 불필요한 부분을 제거함으로써 원하는 부분에 집중할 수 있다.
그리고 시간과 비용이 절약되어진다.
따라서 객체를 추상화하는 데 뛰어난 능력을 가진 개발자가 고급 개발자임은 두 말할 필요가 없다.
'IT > 프로그래밍' 카테고리의 다른 글
객체지향 프로그래밍에서 상속성(Inheritance) (0) | 2021.02.16 |
---|---|
캡슐화 (Encapsulation)와 정보 은닉 (Information Hiding) (0) | 2021.02.14 |
프로그래밍은 어떻게 발전해 왔는가? (0) | 2021.02.14 |