You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
저는 은닉화와 캡슐화가 이뤄진 코드가 자율성이 있는 코드가 아닐까요?
이유는 은닉화와 캡슈화가 이뤄진 코드의 경우, 모듈성이 향상된 코드 즉, 독립성이 올라간 코드라고 생각합니다.
독립성이 올라간다면, 해당 모듈을 건드렸다고 다른 모듈에서의 사이드이펙트가 생기는 것을 줄일 수 있기떄문에 자연스레 더 자율적으로 사용할 수 있다고 생각합니다.
"객체지향의 세계에서 객체는 다른 객체의 상태에 직접적으로 접근할 수도, 상태를 변경할 수도 없다. 자율적인 객체는 스스로 자신의 상태를 책임져야 한다. .. 간접적으로 객체의 상태를 변경하거나 조회할 수 있는 방법이 필요하다. "고 하며 행동에 대한 언급을 합니다.
저의 생각을 정리해보자면, 자율적인 객체는 자기의 상태를 스스로 관리하는 객체라고 합니다. 외부에서 상태는 직접적으로 접근하지 못하고 행동을 통해 요청을 보낼 수 있도록 상태와 행동을 캡슐에 담아서 행동만 외부로 노출하는 것이 캡슐화라고 이해했습니다. 요청을 반영할지 말지는 객체가 스스로 선택하는 것이고요. (앨리스와 음료수 예시를 떠올려봅니다..) 그래서 캡슐화를 하게 되면 객체의 자율성을 높일 수 있다고 이해했습니다.
메서드를 분리하는 것이 왜 객체의 자율성을 높이는 것인지 생각을 해보았는데요. 오래도록 책을 뒤적거리다가 발견했어요. 코드로 어떻게 구현될 수 있는지 궁금합니다.
32쪽에서 자율성이 있는 객체는 요청이 왔을 때, 요청에 응할지 말지 - 응한다면 어떤 방식으로 응할지 스스로 결정할 수 있다고 합니다. 그래서 35쪽에서 "외부의 요청이 무엇인지를 표현하는 메시지와 요청을 처리하기 위한 구체적인 방법인 메서드를 분리하는 것은 객체의 자율성을 높이는 핵심 메커니즘"이라고 표현한 것같습니다.
책을 읽다보면 자율성에 대한 말이 많이 나옵니다!
객체가 충분히 자율적이어야 한다고 하고 있고, 객체 스스로 관리를 하고 외부에서는 접근이 허락된 수단만을 통해서만 객체와 의사소통을 해야 한다고 하고 있습니다.
그렇다면 은닉화와 캡슐화가 이뤄진 코드가 자율성이 있는 코드인 걸까요?
추가적으로 메서드를 분리하는 것이 객체의 자율성을 높이는 핵심 매커니즘이라 하고 있는데 메서드의 기능 분리를 하는 것이 객체의 자율성을 높이는 이유는 무엇일까요?
The text was updated successfully, but these errors were encountered: