객체지향에서의 역할, 책임, 협력

2025. 3. 17. 17:22·cs/객체지향

객체는 상태와 행위를 갖는 독립적인 개체이다. 객체 지향 프로그래밍(Object-Oriented Programming)은 객체를 이용하여 어플리케이션 문제를 정의하고, 기능을 설계하고 구현하는 프로그래밍 방식이다. 여기서 객체 지향의 의미를 역할, 책임, 협력 관점에서 설명한다.

 

사람들은 일상생활에서 특정한 역할(Role)을 부여 받는다. 카페에서 손님을 대응하는 캐시어 와 주문이 들어오는 커피를 제작하는 바리스타를 예시로 들 수 있다. 각 역할들은 책임(Responsibility)이라는 개념을 내포하고 있다. 캐시어는 손님으로부터 주문을 받는 책임이 있고 결제를 도와주는 책임이 있고 커피가 나왔으면 손님에게 전달할 책임이 있다. 바리스타도 주문이 들어온 커피를 제작할 책임이 있다. 사람들은 독립적인 존재이긴 하지만 혼자서 살아갈 수는 없는 타인과 함께 살아가는 협력해야 하는 존재이다.

 

실세계와 마찬가지로 객체 지향 세계에서 객체는 특정한 역할(Role) 을 갖고 역할에 맞는 여러 책임(Responsibility)을 지닌다. 어플리케이션의 기능을 설계하고 구현하기 위해서는 각 기능을 더 작은 책임으로 분할하고 그 책임은 적절한 역할을 수행할 수 있는 객체에 의해 수행된다.

 

객체도 독립적인 존재로 자율성을 갖지만 어플리케이션의 기능을 혼자 해결할 수 없어 다른 객체들과 협력해야 하는 존재이다. 객체는 협력과 관련하여 두 가지 조건을 충족해야 좋은 객체의 협력으로 볼 수 있다.

  • 객체는 충분히 협력적이어야 한다. 외부의 도움을 없이 혼자서 해결하는 것은 좋은 객체 지향이 아니다. 객체의 협력은 요청과 응답이라는 메시지의 형태로 이루어지는데, 다른 객체의 요청을 응할 수 있어야 하고 필요하다면 다른 객체에게 요청을 보낼 수 있어야 한다.
  • 객체는 자율적이어야 한다. 다른 객체가 요청을 보냈을 때 요청에 응할 지 여부와 요청에 대한 처리 방식을 결정하는 것은 요청을 받은 객체이다. 

객체지향을 마주쳤을 때 사람들은 클래스라는 단어를 떠올린다. 클래스는 객체를 설계위한 방식으로 매우 중요한 부분이긴 하지만 객체 지향에서의 핵심은 객체이다. 클래스의 구조와 메서드가 아니라 객체의 역할, 책임, 협력에 집중해야 좋은 객체 지향이 될 수 있다.

 

클래스가 아닌 객체를 지향해라

 

 

참조

객체지향의 사실과 오해(위키북스) - 조영호 지음

'cs > 객체지향' 카테고리의 다른 글

디자인 패턴  (0) 2025.07.18
객체의 특징  (0) 2025.03.18
'cs/객체지향' 카테고리의 다른 글
  • 디자인 패턴
  • 객체의 특징
khw7385
khw7385
khw7385 님의 블로그 입니다.
  • khw7385
    khw7385 님의 블로그
    khw7385
  • 전체
    오늘
    어제
    • 분류 전체보기 (43)
      • 코딩테스트 (7)
      • 자바 (3)
      • 스프링 (3)
      • cs (7)
        • 자료구조 (3)
        • 알고리즘 (1)
        • 객체지향 (3)
      • 개발일지 (6)
        • 트러블슈팅 (1)
      • 데이터베이스 (3)
        • Redis (2)
        • MySQL (1)
      • 기타 (2)
      • devops (6)
      • LG CNS AM INSPIRE (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
khw7385
객체지향에서의 역할, 책임, 협력
상단으로

티스토리툴바