-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The essense of object orientation review and discussion, chapter 1 ~ 4 #422
The head ref may contain hidden characters: "417-\uAC1D\uCCB4\uC9C0\uD5A5\uC758-\uC0AC\uC2E4\uACFC-\uC624\uD574-1\uC7A5-4\uC7A5-\uCD1D-118\uD398\uC774\uC9C0-2024-05-31-1"
Conversation
우측에 있는 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
객체와 메시지 vs 클래스와 메서드
이 둘의 구분을 평소에 어느 정도 하고 있는지 생각해 보고 얘기해 보는 시간을 가져보면 좋을 것 같습니다.
객체와 클래스 정도는 구분하지만 그냥 실체와 껍데기 정도로만 구분합니다.
메시지와 메서드는 거의 구분하지 않습니다.
제 PR에도 작성했듯이 클래스와 객체를 틀과 그 틀로 만들어진 무언가(?)로 이해했습니다. 유명한 예시로는 붕어빵 틀에 반죽을 넣으면 붕어빵이 되는 것처럼요. |
단순하게 말을 한다면 전자는 동적인 형태의 구조를 그릴 수 있다는 점이고 후자는 정적인 모델에 가까운 것 같습니다. 객체와 메시지는 협력과정에서 상대방이 누구인지, 상관하지 않고 자신의 역할과 책임을 지닌 상태로 요청(메시지)를 하는 것이고 이를 객체는 자율적으로 받아 처리하는 구조라면, 클래스와 메서드는 앞선 과정을 그려내기 위한 청사진이나 도구에 가까운 것 같습니다. 이 개념으로 봤을 때는 두 개는 전혀 다른 개념 같다는 생각도 드네요. |
객체와 메시지 vs 클래스와 메서드 객체와 메시지는 상호 작용을 하는 협력 관점에 더 가깝다고 생각합니다. 메시지 자체가 다른 객체에게 협력을 요청하는 수단이므로 협력이라는 관점에 가깝다고 생각합니다. 클래스와 메서드는 상호작용 보다는 해당 클래스 자신이 할 수 있는 행위에 집중되는 것 같습니다. 여기서 메서드는 외부의 메시지를 받아서 클래스가 할 수 있는 행동이 될 수도 있습니다. |
객체와 메시지 vs 클래스와 메서드 사실 현업에서 일할 때는 객체의 협력을 표현하기위해서 메세지 라는 표현을 거의 사용하고 있진 않습니다 제가 맡고 있는 업무와 작성해야할 비즈니스로직이 객체지향 설계를 빡세게 해야 할만큼의 난이도도 아니기도 하고, 대부분 간단한 로직 설계 만으로도 문제를 해결할 수 있기 때문 인 것 같습니다 그래서 클래스와 메서드를 인지하고 활용하는 수준 입니다 다만, 책을 읽고 공부를 할 때는 더 엄밀하게 바라보려고 하는 편 입니다 |
저는 세 번째 읽는 책인데
아는 만큼 보인다고 몰랐을 때 알게 되는 내용과
알고 나서 이해가 되는 내용의 차이가 확실히 크다고 느껴집니다.
저번과 마찬가지로 책 내용만 정리하고
리뷰 내용과 논의 주제는 pull request 본문 내용으로 적습니다.
1장 협력하는 객체들의 공동체
과거에는 바리스타 예제를 통해 객체지향이 뭔지를 설명해준다고 생각을 했는데
지금 다시 보니 이 예제에서 객체지향에서 중요하다고 생각하는 키워드를 잘 설명했다는 느낌이 듭니다.
즉 2, 3, 4장에서 설명하는 내용의 핵심을 1장에서 설명했다는 점이 좋았습니다.
2장 이상한 나라의 객체
객체의 상태와 행동에 대해 생각해 본 적이 있나? 를 다시 돌아본 것 같습니다.
사실 테스트 코드 작성할 때는 행위 위주로 봤으면서 평소에 코드를 작성할 때는 그런 걸 의식을 잘 하지 못한다는 느낌이 듭니다.
그리고 이 부분을 읽고 나서 회사에서 코드를 짤 때 다시 의식해서 행위 위주로 생각해 보고 코드를 작성하고 바로 테스트 코드 케이스를 만들어 봤습니다.
3장 타입과 추상화
꼭 객체지향이 아니더라도 개발을 잘 하는 덕목중의 하나로 추상화는 잘 알고 있었는데
이 챕터를 읽고 다시 리마인드를 하게 되는 계기가 되었습니다.
4장 역할, 책임, 협력
역할, 책임, 협력에 관한 설명은 반복적으로 설명해서 이해가 잘 되는 부분이었고
마지막에 설계 방식에 대한 설명 중에 책임-주도 설계는 객체지향 설계 방식에서 적용할 수 있는 중요한 방법이라고 생각합니다.
그리고 테스트 주도 개발은 이 책 외에도 다른 책에서 언급하는 내용이 여기서도 언급되서 기분(?)이 좋습니다.
테스트 주도 개발의 핵심은 설계이고 설계에서 만들어진 메서드, 즉 객체의 메시지에 대해서 테스트 코드를 작성한 후에 객체의 책임을 코드로 작성한다는 내용을 여기서도 확인할 수 있었습니다.
논의 주제
설명
사실 제가 issue에 챕터 당 논의주제가 아니라 하나의 논의 주제라고 했는데
그 이유는 이번에 다시 8분이 참여를 하고
각자 얘기를 하는 시간을 15분 밖에 할당을 못하기 때문에 그렇게 정했습니다.
그래서 여러 논의 주제를 준비하신 분은 하나만 해주셔야 할 것 같습니다.
이제 저의 논의 주제
객체와 메시지 vs 클래스와 메서드
이 둘의 구분을 평소에 어느 정도 하고 있는지 생각해 보고 얘기해 보는 시간을 가져보면 좋을 것 같습니다.
저는 역할과 책임 정도는 이 책 이전에도 알고 있었던 부분이었는데
협력에 대해서는 이 책을 통해 잘 파악한 부분이었던 터라 이번에 다시 리마인드를 하게 됐습니다.