IT 관련 책 정리 및 후기/객체지향의 사실과 오해

[2장] 이상한 나라의 객체

JUN0126 2022. 7. 4. 20:50

 

객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리한다.

 

해당 챕터에서는 앨리스 이야기를 기준으로 객체의 패러다임을 설명하고 있습니다.

 

앨리스는 이야기 중 작은 문을 통과해야하는데 문을 통과하려면 키가 작아야 통과를 할 수 있었는데, 음료를 마시거나, 부채질을 하거나 행동을 통하여 키를 줄이거나 늘릴 수 있습니다.

 

이러한 행동을 객체지향의 패러다임으로 보았을 때, 앨리스의 키를 변화 시키는 것은 앨리스의 행동(음료를 마시거나 부채질을 함) 이며, 앨리서의 행동에 따라 앨리스의 상태(키) 가 변하게 된다.

 

앨리스가 한 행동의 결과는 앨리스의 상태의 의존적이다, 음료를 마시거나, 부채질을 함으로써 키가 변하기 때문이다.

하지만 행동 간에 순서도 중요한데 행동을 통하여 상태가 변하기 때문에 앨리스의 예로 들자면 키가 200cm 앨리스는 음료수를 마셔도 키가 180cm 이므로 문을 통과할 수 없습니다. 문을 통과 하려면 키를 줄이는 다른 행동을 추가적으로 해야 합니다.

이러한 예시를 통하여 행동의 결과는 상태에 의존적이나 행동 간에 순서도 중요하다는 것을 알 수 있습니다.

또한 앨리스가 어떠한 상태에 있더라도 앨리스는 앨리스 그 자체로 식별이 가능합니다. (필자는 인스턴스의 변수의 느낌이라 생각합니다)

 

객체의 다양한 특성을 효과적으로 설명하기 위해서는 객체를 상태, 행동, 식별자를 지닌 실체로 보는것이 효과적입니다.

 

객체가 다른 객체와 협력하는 유일한 방법은 다른 객체에게 요청을 보내는 것입니다.

앨리스라는 객체는 키가 줄어들기 위해서 음료수라는 객체에게 상태를 변화시켜달라는 요청을 보냅니다.

하지만 1장 내용에서도 있다 싶이 모든 객체는 자신의 상태를 스스로 관리하는 자율적인 존재이므로 앨리스는 음료수라는 객체에게 요청을 보내고 음료가 줄어드는 행위는 음료수 객체가 자체적으로 행해야 합니다. 하지만 음료수가 어떻게 줄어드는지 내용은 알 수 없죠

이것을 캡슐화라고 부릅니다. 객체는 외부 행위로부터 요청을 받지만 처리하는 과정을 공개하지는 않는다는 것이죠 

 

 

행동이 상태를 결정한다

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

 

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

  - 상태에 초점을 맞출 경우 상태가 객체 내부로 캡슐화되지 못하고 공용 인터페이스에 그대로 노출되버릴 확률이 높아진다.

2. 상태를 먼저 고려하게 되면 협력을 해야하는 객체지향에서 자연스럽게 협력에 적합하지 못하는 객체를 창조합니다

3. 객체의 재사용성이 저하된다.

 

객체지향 설계는 애플리케이션에 필요한 협력을 생각하고 협력에 참여하는 데 필요한 행동을 생각한 후 행동을 수행할 객체를 선택하는 방식으로 수행됩니다.

 

은유와 객체

추상화 (Abstraction)

 - 실제의 사물에서 자신이 원하는 특성만 취하고 필요없는 부분을 추려 핵심만 표현하는 행위

 

현실 속 객체와 소프트웨어 객체의 차이점

 - 현실 속 객체는 수동적인 존재이고, 소프트웨어 객체로 구현될 때는 능동적인 존재로 객체는 존재

 

객체의 의인화라는 관점은 소프트웨어 객체 관점에서 바라볼 수 있는데, 현실 속 객체에서는 눈에 보이는 객체들을 수동적으로 볼 수 있으나

소프트웨어 관점에서는 눈에 보이지 않는 객체를 객체화(의인화) 하여 객체를 바라볼 수 있는 점이 객체의 의인화 관점이라 생각합니다.

 

 

결론

창조한 객체의 특성을 상기시킬 수 있다면 현실 속의 객체의 이름을 이용해 객체를 묘사하라, 그렇지 않다면 깔끔하게 현실을 무시하고 자유롭게 여러분만의 새로운 세계를 창조하기 바란다 - 조영호

 

 

 

 

 

해당 내용은 객체지향의 사실과 오해 를 읽으며 제가 이해한 내용으로 정리한 내용입니다.

자세한 내용과 적확한 내용은 책을 읽어주시길 바랍니다. (책을 읽는것을 추천드립니다)

 

책 : https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=60550259

 

객체지향의 사실과 오해

위키북스 IT Leaders 시리즈 23권. 객체지향이란 무엇인가? 이 책은 이 질문에 대한 답을 찾기 위해 노력하고 있는 모든 개발자를 위한 책이다.

www.aladin.co.kr