자바 코드 실습
역할,책임,협력(객체지향의 사실과 오해) -> 제일 중요한 것은 메시지다
협력
| 객체들이 어플리케이션의 기능을 구현하기 위해 수행하는 상호작용
- 두 객체 사이의 협력은 하나의 객체가 다른 객체에게 도움을 요청 할 때 시작 됨.
- 메시지 전송은 객체 사이의 협력을 위해 사용할 수 있는 유일한 커뮤니케이션 수단
- 객체가 객체에게 무엇인가를 요청, 다른 객체가 필요할 때 위임 또는 협력 함
- 객체를 자율적으로 하기 위해 내부 구현을 캡슐화 함
- 메시지를 전송해 협력을 요청, 메시지를 수신한 객체는 도움이 필요한 경우 또 요청해 처리
- 객체들 사이의 협력을 구성해 요청,응답을 통해 기능 구현
책임
| 객체가 협력에 참여하기 위해 수행하는 행동
하는 것
| 내가 하는 역할에 대한 책임
- 객체를 생성하거나 계산 수행하는 등의 스스로 하는것
- 다른 객체의 행동을 시작시키는 것
- 다른 객체의 활동을 제어하고 조절하는 것
아는 것
| 내가 도움 받을 객체를 아는 것
- 사적인 정보에 관해 아는것
- 관련된 객체에 관해 아는것
- 자신이 유도하거나 계산할 수 있는 것에 관해 아는것
역할
| 객체들이 협력안에서 수행하는 책임의 집합
- 협력 내에서 다른 객체로 대체할 수 있음을 나타내는 것
- 역할을 대체하기 위해서는 각 역할이 수신할 수 있는 메시지를 동일한 방식으로 이해해야 함
- 동일한 역할을 수행할 수 있다는 것은 해당 객체들이 협력 내에서 동일한 책임의 집합을 수행 할 수 있다는 것을 의미
- 객체지향 설계의 단순성,유연성,재사용성을 뒷받침
VO(value object)
| 값 객체를 뜻하며 데이터를 담는 객체를 의미
- read Only 속성을 가짐
- 읽기 전용이기 때문에 getter만 존재
다음과 같이 VO를 사용할 수 있음
public class AccountVo {
private String id;
private String pw;
public String getId() {
return this.id;
}
public String getPw() {
return this.pw;
}
}
VO 장점
- 데이터 전달을 위해 가장 효율적인 방법
- 가독성과 유지보수 측면에서 좋음
- Network traffic이 줄어들 수 있음
VO 단점
- 클래스 선언을 위해 많은 코드가 필요
- 파일 수가 많아지면 관리가 힘듦