SlideShare a Scribd company logo
1 of 15
Download to read offline
객체에 대한 이해
 객체지향의 사실과 오해  를 읽고
목차
1. 협력
2. 역할
3. 책임
4. 객체지향 설계 기법
협력
 협력 은 한 사람이 다른 사람에게 도움을  요청  할 때 시작된다.
3
협력
커피 주문이라는  협력 에 참여하는 모든 사람들은 정확하게 주문되고 주문된 커피가
손님에게 정확하게 전달될 수 있도록 맡은바  역활 과  책임 을 다한다.
 요청 
손님 ‐>(주문) 케시어 ‐>(커피 제조 요청) 바리스타 
 응답 
손님 (커피 완성)<‐ 케시어 (커피 완성)<‐ 바리스타 
4
협력
결과적으로 협력은 다수의 요청과 응답으로 구성되며 전체적으로 협력
은 다수의 연쇄적인 요청과 응답의 흐름으로 구성된다.
5
역할
사람들은 다른 사람과 협력 하는 과정 속에서 특정한  역할(role) 을 부
여 받는다.
6
역할
케페테리아에서 손님이 주문한 커피를 제조하기 위해 캐시어와 바리스
타가 협력 하는 과정속에는  손님 ,  캐시어 ,  바리스타 라는 역할이 존재
한다.
역할은 어떤 협력에 참여하는 특정한 사람이 협력 안에서 차지 하는  책임 이나  임무 를 의미
한다.
 손님  : 커피 주문 책임 
 캐시어  : 손님으로 부터 주문 받는 책임 
 바리스타  : 주문된 커피를 제조하는 책임
7
책임
역할이란 단어는 의미적으로 책임이라는 개념을 내포 한다.
8
책임
사람들이 협력을 위해 특정한 역할을 맡고 역할에 적합한 책임을 수행
한다는 사실은 몇가지 중요한 개념을 제시한다.
여러 사람이 동일한 역할을 수행 할 수 있다.
역할은 대체 가능성을 의미한다.
책임을 수행하는 방법은 자율적으로 선택 할 수 있다.
한 사람이 동시에 여려 역할을 수행 할 수 있다.
9
역할, 책임, 협력
사람이라는 단어를  객체 로, 에이전트 요청을  메시지 로,
에이전트가 요청을 처리 하는 방법을  메소드 로 바꾸면 대부분의 설명을
객체지향이라는 문맥으로 옮겨 올 수 있다.
10
객체지향의 본질
객체지향이란 시스템을 상호작용하는  자율적인 객체들의 공동체 로 바라보고 객체를 이용
해 시스템을 분할 하는 방법이다.
자율적인 객체란  상태 와  행위 를 함께 지니며 스스로 자기 자신을 책임지는 객체를 의미
한다.
객체는 시스템의 행위를 구현하기 위해 다른 객체와  협력 한다. 각 객체는 협력 내에서
정해진  역할 을 수행하며 역할은 관련된  책임 의 집합인다.
객체는 다른 객체와 협력하기 위해  메시지 를 전송하고, 메시지를 수신한 객체는 메시지
를 처리하는데 적합한  메서드 를 자율적으로 선택한다.
11
객체지향 설계 기법
책임‒주도 설계
(Responsibility‒Driven Design)
협력에 필요한 책임들을 식별하고 적합한 객체에게 책임을 할당하는 방식이다.
12
객체지향 설계 기법
디자인 패턴
(Design Pattern)
전문가들이 반복적으로 사용해는 해결 방법을 정의 놓은 설계 템플릿의 모음이다.
13
객체지향 설계 기법
테스트‒주도 개발
(Test‒Driven Development)
테스트를 먼저 개발하고 테스트를 통과하는 구체적인 코드를 추가하면서 애플리케이션을 완
성해가는 방식을 따른다.
14
추천 도서
한글서적
객체지향의 사실과 오해 ‒ 조영호  추천 
객체지향과 디자인 패턴 ‒ 최범균
UML 실전에서는 이것만 쓴다. ‒ 로버트 C. 마틴
영문서적
Applying UML and Patterns ‒ Craig Laman
Agile Software Development ‒ 로버트 C. 마틴
15

More Related Content

More from Daniel Lim

More from Daniel Lim (20)

스크럼 101
스크럼 101스크럼 101
스크럼 101
 
nodejs_101.pdf
nodejs_101.pdfnodejs_101.pdf
nodejs_101.pdf
 
For You
For YouFor You
For You
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
피드백 시스템
피드백 시스템피드백 시스템
피드백 시스템
 
13.code split
13.code split13.code split
13.code split
 
12.context api
12.context api12.context api
12.context api
 
11.react router dom
11.react router dom11.react router dom
11.react router dom
 
9.component style
9.component style9.component style
9.component style
 
7.component life cycle
7.component life cycle7.component life cycle
7.component life cycle
 
8.hooks
8.hooks8.hooks
8.hooks
 
6.component repeat
6.component repeat6.component repeat
6.component repeat
 
4.event handling
4.event handling4.event handling
4.event handling
 
5.ref 101
5.ref 1015.ref 101
5.ref 101
 
3.component 101
3.component 1013.component 101
3.component 101
 
2.jsx 101
2.jsx 1012.jsx 101
2.jsx 101
 
1.react 101
1.react 1011.react 101
1.react 101
 
Swagger? OAS? with NodeJS
Swagger? OAS? with NodeJSSwagger? OAS? with NodeJS
Swagger? OAS? with NodeJS
 
CuKu V1.3
CuKu V1.3CuKu V1.3
CuKu V1.3
 
Kubernetes object에 대하여
Kubernetes object에 대하여Kubernetes object에 대하여
Kubernetes object에 대하여
 

객체지향의 사실과 오해를 읽고