본문 바로가기
객체지향

객체지향의 사실과 오해(3-1)

by browoo97 2022. 3. 24.

타입과 추상화

지하철 노선도는 거미줄처럼 도시 곳곳을 연결하고 있는 구불구불한 운행 노선과 불규칙적인 역 간의 거리를 알아보기 쉽게 지형 정보를 제거하고 역 사이의 연결성을 강조화하여 현실을 단순화하였다.

지하철 노선도의 핵심은 지도가 당연히 가져야 한다고 생각되는 ‘정화성을’을 버리고 ‘목적’에 집중한 것이다. 이는 이해하기 쉽고 단순하며 사용 목적에 부합하도록 복잡한 실제 노선을 지하철 노선도로 추상화한 것이다.

진정한 의미에서 추상화란 현실에서 출발하되 불필요한 부분을 도려내가면서 사물의 놀라운 본질을 드러나게 하는 과정이라고 할 수 있다.

객체지향 패러다임은 객체라는 추상화를 통해 현실의 복잡성을 극복한다. 그리고 아름다운 애플리케이션을 개발하기 위한 첫걸음은 추상화의 두 차원을 올바르게 이해하고 적용하는 것이다.

 

객체지향과 추상화

앨리스 이야기에서 앨리스는 하얀 토끼를 제외한 모든 객체를 “트럼프”라는 하나의 개념으로 단순화해서 바라보았다. 정원사, 병사, 왕자와 공주, 하객으로 참석한 왕과 왕비들, 하트 잭, 하트 왕과 하트 여왕이라는 구체적인 인물들을 일일이 나열하는 대신 ‘기껏해야 트럼프에 불과해’라고 말함으로써 앨리스는 정원 안에 도열해 있던 인물들의 복잡다단한 면을 깔끔하게 추상화해 버린 것이다.

결과적으로 앨리스는 정원에 있는 인물들을 두 개의 그룹으로 나눴다. 하나는 트럼프의 그룹이고 또 다른 하나는 토끼의 그룹이다. 이는 정원에 내재된 복잡성을 효과적으로 감소시킨다.

이처럼 공통점을 기반으로 객체들을 묶기 위한 그릇을 ‘개념’이라고 한다. 나아가 객체에 어떤 개념을 적용하는 것이 가능해서 개념 그룹의 일원이 될 때 객체를 그 개념의 “인스턴스”라고 한다.

일반적으로 객체의 분류 장치로서 개념 이야기를 할때 세가지 관점을 언급한다.

  • 심볼 : 개념을 가리키는 간략한 이름이나 명칭
  • 내연 : 개념의 완전한 정의를 나타내며 내연의 의미를 이용해 객체가 개념에 속하는지 여부를 확인할 수 있다.
  • 외연 : 개념에 속하는 모든 객체의 집합

트럼프라는 개념의 심볼, 내연, 외연은 다음과 같이 표현할 수 있다.

  • 심볼 : 트럼프
  • 내연 : 몸이 납작하고 두 손과 두 발은 네모 귀퉁이에 달려 있는 등장인물
  • 외연 : 정원사, 병사, 신하, 왕자와 공주, 하객으로 참석한 왕과 왕비들, 하트 잭, 하트 왕과 하트 여왕

그러나 개념이 심볼, 내연, 외연으로 구성돼 있다는 사실보다는 개념을 이용해 객체를 분류할 수 있다는 사실이 더 중요하다. 개념을 이용해 공통점을 가진 객체들을 분류할 수 있다는 아이디어는 객체지향 패러다임이 복잡성을 극복하는 데 사용하는 가장 기본적인 인지 수단이기 때문이다.

분류란 객체에 특정한 개념을 적용하는 작업이다. 객체에 특정한 개념을 적용하기로 결심했을 때 우리는 그 객체를 특정한 집합의 멤버로 분류하고 있는 것이다.

개념은 객체들의 복잡성을 극복하기 위한 추상화 도구이다. 추상화를 사용함으로써 우리는 극도로 복잡한 이 세상을 그나마 제어 가능한 수준으로 단순화 할 수 있는 것이다.

 

객체는 소중하다. 따라서 소중한 객체를 안전하고 적절한 장소에 보관할 수 있도록 개발자의 인지능력을 발휘해 최대한 직관적으로 분류하라.

댓글