본문 바로가기
객체지향

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

by browoo97 2022. 3. 24.

행동이 상태를 결정한다.

애플리케이션 안에 살아갈 앨리스 객체를 설계할 때 초보자들은 앨리스 객체에게 필요한 상태가 무엇인지를 찾고 키와 위치를 앨리스에 추가한다. 그리고 나서야 키와 위츠를 변경하거나 조회할 수 있는 행동이 무엇이지를 고민한다.

하지만 상태를 먼저 결정하고 행동을 나중에 결정하는 방법은 설계에 나쁜 영향을 끼친다.

 

첫째, 상태를 먼저 결정할 경우 캡슐화가 저해된다.

둘째, 객체를 협력자가 아닌 고립된 섬으로 만든다.

셋째, 객체의 재상용이 저하된다.

 

설계자로서 우리는 협력의 문맥에 맞는 적절한 행동을 수행하는 객체를 발견하거나 창조해야 한다.

결과적으로 우리가 애플리케이션 안에서 어떤 행동을 원하냐느가 어떤 객체가 적합하지를 결정한다.

객체의 적합성을 결정하는 것은 상태가 아니라 행동이다.

 

은유와 객체

많은 사람들은 객체지향을 단지 현실 세계를 모방하는 것이라고 오해하며, 현실 서계에 존재하는 객체들을 모방한 후 필요한 부부난 취해 소프트웨어 객체로 구현하는 과정이라고 말한다.

또한 현실 세계의 추상화라고도 하는데, 여기서 추상화란 실제의 사물에서 자신의 원하는 특성만 취하고 필요 없는 부분을 추려 핵심만 표현하는 행위를 말한다.

 

그러나 안타깝게도 객체지향은 세계는 현실 세계의 단순 모방이 아니다.

 

소프트웨어 상품은 실제 세계의 상품이 하지 못하는 가격 계산과 같은 행동을 스스로 수행할 수 있다. 이것은 소프트웨어 상품이 실제 세계의 상품을 단순화하거나 추상화한 것이 아니라 특성이 전혀 다른 어떤 것임을 의미한다.

 

현실 세계 객체 vs 소프트웨어 객체

현실 속에서는 수동적인 존재가 소프트웨어 객체로 구현될 때는 능동적으로 변한다.

 

심지어 현실 세계에는 존재조차 하지 않는 것들도 소프트웨어 안에서는 생생한 생명을 가진 존재로 재 탄생한다.

 

따라서 소프웨어 안에 구축되는 객체지향 설계는 현실을 모방한 것이 아니다. 현실을 조금 참고할 뿐 궁금적인 목적은 현실과 전혀 다른 새로운 세계를 창조하는 것이다.

오히려 객체지향 세계의 거리는 현실 속의 객체보다 더 많은 특징과 능력을 보유한 객체들로 넘쳐난다.

 

은유

현실 세계와 객지향 세계 사이의 관계를 좀 더 정확하게 설명할 수 있는 단어는 은유이다.

은유는 표현적 차이 또는 의미적 차이라는 논점과 관련성이 높다. 은유 관계에 있는 실제 객체의 이름을 소프트웨어 객체의 이름으로 사용하면 표현적 차이를 줄여 소프트웨어의 구조를 쉽게 예측할 수 있다.

 

이는 이해하기 쉽고 유지보수가 용이한 소프트웨어로 이어진다. 바로 이러한 이유로 모든 객체지향 지침서에서는 현실 세계인 도메인에서 사용되는 이름을 객체에게 부여하라고 가이드하는 것이다.

'객체지향' 카테고리의 다른 글

객체지향의 사실과 오해(3-2)  (0) 2022.03.24
객체지향의 사실과 오해(3-1)  (0) 2022.03.24
객체지향의 사실과 오해(2-1)  (0) 2022.03.24
SOLID 객체지향 - 스프링  (0) 2022.03.24
객체지향의 사실과 오해(1)  (0) 2022.03.24

댓글