객체의 추상화란?
객체의 추상화에 대해 공부해보자
서론
한번쯤은 객체지향언어를 공부할때 추상화라는 개념에 대해서 들어봤을 것이다.
굉장히 중요한 개념으로 어떻게보면 우리가 객체를 구상할때 제일 생각하며 설계해야하는 부분이다.
오늘은 추상화라는 개념에 대해 알아보고 왜? 이런 개념을 적용해야하는지도 공부해보자
추상화란 무엇일까?
보통 추상화하면 떠오르는 단어는 미술과 관련된 단어일 것이다. 구체적인 대상의 형태를 그리는 것이 아닌 점이나 선, 면, 색의 순수한 조형 요소로 표현하는 미술 기법을 추상화라고한다. 물론 우리가 알아야하는 추상화라는 개념은 이것과는 다르지만 어떤면에서는 매우 비슷한 개념이다.
객체에서의 추상화란?
결론부터 얘기하자면 구체적이고 불필요한 부분을 생략하고 여러가지 객체들의 공통된 부분만을 모아서 객체를 정의하는 것을 추상화라고한다.
예를 들자면 강아지, 사람, 참치, 광어, 비둘기, 독수리가 있다고 치자.
하나하나 구체적인 특징을 가진 객체들이지만 이를 공통적인 특징으로 묶으면 어떻게 되는가?
강아지, 사람을 묶으면 포유류가 되고, 참치,광어를 묶으면 어류, 비둘기, 독수리를 묶으면 조류가 된다.
이렇게 덩어리지게 묶을 수록 공통된 특성만 남게되고 구체적이고 공통되지 못하는 특성은 버려지며 큰 개념으로 변한다.
또한 포유류, 어류, 조류를 묶으면 동물이라는 더욱 추상화된 개념으로 묶을 수 있다.
이렇게 작은 덩어리를 뭉치고 필요없는 부분을 버릴 수록 객체는 추상화가 되어간다.
여기서 알아야하는 것은 상위 객체로 갈 수록 추상적인 객체가 되어야한다는 것이다.

왜 추상화를 해야할까?
이제 추상화라는 개념은 알 것 같다.
그러면 왜 우리는 추상화라는 개념을 알고 사용해야하는가 하는 의문이 들 것이다.
그 이유는 객체지향설계 5원칙에 어느정도 설명이 되어있다.
또한 우리가 객체지향언어를 사용함에 있어 효율성과 유지보수적인면에서 추상화된 객체가 매우 유리하기 때문이다.
예를 들면 공통된 특성만을 모아둔 추상화된 상위 객체로부터 상속받은 하위 객체들이 있고, 하위 객체들과 똑같은 기능을 가진 별개의 객체가 5개가 있다고 하자.
우리는 코딩을 하다보면 무언가 기능을 추가하고 수정해야할 일이 생긴다.
그럴경우 추상화된 상위 객체로 부터 상속받은 하위 객체들은 상위 객체의 기능을 수정하면 따로 수정할 필요가 없다.
하지만 별개의 객체의 경우 하나하나 수정을 해줘야한다.
또한 별개의 객체들은 따로 코드를 짜줘야히지만, 상속을 받은 하위 객체들은 공통된 메소드와 프로퍼티를 상위 객체에 작성함으로써 재사용이 가능하다.
그외에도 코드길이가 줄어들어 가독성이 향상되고, 그 만큼 생산성이 증가할 것이다.
이처럼 추상화된 객체를 사용하는 것은 객체지향언어에서 필수라고 볼정도로 매우 중요하고 익혀야하는 개념인 것이다.
마치며
개인적으로 추상화라는 개념은 객체지향언어의 전부라고 생각한다. 객체지향언어를 공부하다보면 추상화가 안나오는 곳이 없을 정도로 매우 중요한 개념이니 꼭 숙지해두는 것이 좋다.