본문 바로가기
반응형
오브젝트

3. 역할, 책임, 협력 - 3

by brightGarden02 2022. 10. 14.

오브젝트 책(챕터3: 역할, 책임, 협력)

목차

  1. 역할
    1. 역할과 협력
    2. 유연하고 재사용 가능한 협력
    3. 객체 대 역할
    4. 역할과 추상화
    5. 배우와 배역

 

챕터3 역할, 책임, 협력에서

역할에 대해 다루려고 합니다.

 

  1.  역할
    1. 역할과 협력
      1. 객체는 협력이라는 주어진 맥락 안에서 특정한 목적을 갖게 된다. 객체의 목적은 협력 안에서 객체가 맡게 되는 책임의 집합으로 표시된다. 역할: 객체가 어떤 특정한 협력 안에서 수행하는 책임의 집합 협력을 모델링할 때는 특정한 객체가 아니라 역할에게 책임을 할당한다고 생각하는 것이 좋다. → 역할에 특별한 이름을 부여하지는 않았지만 실제로는 익명의 역할을 찾고 그 역할을 수행할 수 있는 객체를 선택하는 방식으로 설계가 진행됐다고 생각하는 것이 자연스럽다.
    2. 유연하고 재사용 가능한 협력
      1. 역할이 중요한 이유는 역할을 통해 유연하고 재사용 가능한 협력을 얻을 수 있기 때문이다.
      2. 역할은 다른 것으로 교체할 수 있는 책임의 집합이다.
      3. 요점은 동일한 책임을 수행하는 역할을 기반으로 두 개의 협력을 하나로 통합할 수 있다. 협력이 더 유연해졌다.
      4. 책임과 역할을 중심으로 협력을 바라보는 것이 바로 변경과 확장이 유연한 설계로 나아가는 첫걸음이다. 역할을 구현하는 가장 일반적인 방법은 추상클래스와 인터페이스를 사용하는 것이다. 추상 클래스: 책임의 일부를 구현해 놓은 것 인터페이스: 일체의 구현 없이 책임의 집합만을 나열해 놓은 것
    3. 객체 대 역할
      1. 역할은 객체가 참여할 수 있는 일종의 슬롯이다.
      2. 협력에 참여하는 후보가 여러 종류의 객체에 의해 수행될 필요가 있다면 그 후보는 역할. 단지 한 종류의 객체만이 협력에 참여할 필요가 있다면 후보는 객체가 된다.
      3. 객체와 역할 만약 동일한 종류의 객체가 하나의 역할을 항상 수행한다면 둘은 동일하다. 하지만 어떤 협력에서 하나 이상의 객체가 동일한 책임을 수행할 수 있다면 역할은 서로 다른 방법으로 실행할 수 있는 책임의 집합이 된다. 역할이란 프로그램이 실행될 때 소프트웨어 기계 장치에서 적절한 객체로 메워 넣을 수 있는 하나의 슬롯으로 생각할 수 있다. 배우가 극중에서 믿을 수 있는 배역을 맡아서 하려는 것처럼 객체는 의미 있는 역할을 정의하는 책임을 통해 애플리케이션의 기능을 담당하게 된다.
      4. 다시 말해 협력에 적절한 책임을 수행하는 대상이 한 종류라면 간단하게 객체로 간주한다. 만약 여러 종류의 객체들이 참여할 수 있다면 역할이라고 부르면 된다.
      5. 설계 초반에는 적절한 책임과 협력의 큰 그림을 탐색하는 것이 가장 중요한 목표여야한다 역할과 객체를 명확하게 구분하는 것은 그렇게 중요하지 않다. → 애매하다면 단순하게 객체로 시작하고 반복적으로 책임과 협력을 정제해가면서 필요한 순간에 객체로부터 역할을 분리해내는 것이 가장 좋은 방법이다.
    4. 역할과 추상화
      1. 추상화를 이용한 설계가 가질 수 있는 두가지 장점
        1. 추상화 계층만을 이용하면 중요한 정책을 상위 수준에서 단순화할 수 있다
        2. 설계가 좀더 유연해진다
      2. 프레임워크나 디자인 패턴과 같은 재사용 가능한 코드나 설계 아이디어를 구성하는 핵심적인 요소가 바로 역할이다.
    5. 배우와 배역
      1. 배우와 배역간의 관계 배역은 연극 배우가 특정 연극에서 연기하는 역할이다. 배역은 연극이 상영되는 동안에만 존재하는 일시적인 개념이다. 연극이 끝나면 연극 배우는 배역이라는 역할을 벗어 버리고 원래의 연극 배우로 돌아온다.
      2. 동일한 배역을 여러 명의 배우들이 연기할 수 있다.
      3. 배우와 배역간에 추가적인 특성 서로 다른 배우들이 동일한 배역을 연기할 수 있다. 하나의 배우가 다양한 연극 안에서 서로 다른 배역을 연기할 수 있다.
      4. 연극 안에서 배역을 연기하는 배우라는 은유는 협력 안에서 역할을 수행하는 객체라는 관점이 가진 입체적인 측면들을 훌륭하게 담아낸다. 협력 = 연극 코드 = 극본 객체는 협력이라는 실행 문맥 안에서 특정한 역할을 수행한다. 객체는 협력이 끝나고 협력에서의 역할을 잊고 원래의 객체로 돌아올 수 있다. 역할은 객체의 페르소나다.
      5. 객체는 여러 역할을 가질 수 있지만 특정한 협력 안에서는 일시적으로 오직 하나의 역할만이 보여진다는 점에 주의하라. 이것은 배우가 하나의 연극에서 오직 하나의 배역을 연기하는 것과 동일하다. 객체가 다른 협력에 참여할 때는 이전의 역할은 잊혀지고 해당 협력에서 바라보는 역할의 측면에서 보여질 것이다.
      6. 역할은 특정한 객체의 종류를 캡슐화하기 때문에 동일한 역할을 수행하고 계약을 준수하는 대체 가능한 객체들은 다형적이다.

     

'오브젝트' 카테고리의 다른 글

4. 설계 품질과 트레이드오프  (0) 2022.10.14
3. 역할, 책임, 협력 - 4  (0) 2022.10.14
3. 역할, 책임, 협력 - 2  (0) 2022.10.14
3. 역할, 책임, 협력 - 1  (0) 2022.10.14
2. 객체지향 프로그래밍  (0) 2022.10.14

댓글


반응형
반응형