이 글은 오브젝트 책 3장을 읽고 정리한 글입니다.
객체 지향의 패러다임의 핵심은 역할, 책임, 협력이다. 오늘은 이에 대해 정리하고 이야기 해보고자 한다.
먼저 객체 지향의 본질은 단순히 여러 기능을 클래스로 쪼개서 구현하는 것이 아닌 객체들의 공동체를 창조하는 것이다.
협력
객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용이다. 이러한 상호작용을 통해 객체들은 더 큰 책임을 수행할 수 있게 된다. 이러한 상호작용에 의해 객체들의 행동이 결정이 된다.
이러한 협력은 객체를 설계할 때 일종의 문맥이 되기 때문에 서로 다른 객체들이 특정 협력으로 묶일 때는 이들을 협력하는 파트너로 생각하고 설계를 해야한다.
책임
객체가 협력에 참여하기 위해 수행하는 로직이다.
이러한 책임은 2가지로 구분될 수 있는데 하는것과 아는 것이 그것이다. 이에 대해 좀 더 자세히 설명하자면
- 하는 것
- 스스로 하는 것
- 다른 객체의 행동을 시작 시키는 것
- 다른 객체의 활동을 제어하고 조절하는 것
- 아는 것
- 사적인 정보
- 관련된 객체를 아는 것
- 자신이 계산해낼 수 있는 것
객체에 전달되는 메시지는 행동으로 이어지고 이는 객체의 책임으로 이어진다. 또한 이러한 행동이 객체의 상태를 결정하게 된다.
이러한 메시지가 객체 선택하는 행동은 2가지 중요한 이유가 존재한다.
- 객체가 최소한의 인터페이스를 가지게 한다.
- 객체가 추상적인 인터페이스를 가지게 한다.
그럼 어떻게 책임을 결정하게 될까? 메시지를 누구한테 보내게 해야할까?
메시지는 객체의 행동을 결정한다. 따라서 그러한 행동에 필요한 정보를 가장 잘 아는 객체를 선택해서 보내야할 것이다. 이를 정보 전문가 패턴이라고 하고 이렇게 책임을 찾고 책임을 수행할 적절한 객체를 찾아 책임을 할당하는 방식을 책임 주도 설계라고 한다.
역할
객체들이 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 것(책임의 집합)
이를 쉽게 설명하면 프로그램이 실행 될 때 소프트웨어 기계 장치에서 적절한 객체로 메워 넣을 수 있는 하나의 슬롯으로 생각 할 수 있다.
그럼 굳이 책임을 군집화 시켜야하는 이유가 무엇이 있을 까? 유연하고 재사용 가능한 협력을 얻는데 중요하다.
우리가 같은 역할을 하는 두 개의 협력에 대해서(할인 정책[비율 할인, 금액할인]) 해당 역할에 대한 인터페이스 구현을 하게 되면 코드의 중복을 피할 수 있다.
물론 역할을 항상 가지고 가야하는 개념은 아니다. 특정 역할을 하는 객체가 1개일 수 있기 때문이다. 따라서 객체에게 중요한 것은 행동이며 역할은 객체를 추상화 해서 객체 자체가 아닌 협력에 초점을 맞출 수 있게 해준다.
이 글은 오브젝트 책으로 부터 내용을 정리한 글입니다.
더 자세한 내용은 아래 오브젝트 책을 참고해주세요.
http://www.yes24.com/Product/Goods/74219491
긴 글 읽어주셔서 감사합니다.
틀린 부분이 있으면 댓글을 달아주시면 감사하겠습니다.
📧 : may3210@g.skku.edu
'Computer Science > 객체지향' 카테고리의 다른 글
[오브젝트] 객체지향 프로그래밍 (0) | 2022.02.22 |
---|---|
[오브젝트] 절차지향과 객체지향 (0) | 2022.02.21 |