퍼블릭 인터페이스와 오퍼레이션
퍼블릭 인터페이스
= 객체가 의사소통을 위해 외부에 공개하는 메시지의 집합
오퍼레이션
= 퍼블릭 인터페이스에 포함된 메시지.
객체지향 관점에서 오퍼레이션을 퍼블릭 인터페이스처럼 생각하면 될듯하다.
수행 가능한 어떤 행동에 대한 추상화.
오퍼레이션에 명시된대로 실제로 실행되는 코드는 메서드라고 부른다.
따라서 퍼블릭 인터페이스의 관점에서 보면 "메서드 호출"보다는 "오퍼레이션 호출"이라고 표현하는 것이 더 적절하다.
디미터 법칙 - 묻지 말고 시켜라
디미터 법칙은 훌륭한 메시지는 객체의 상태를 묻지 말고 원하는 것을 시켜야 한다는 사실을 강조한다.
객체 외부에서 해당 객체의 상태를 기반으로 결정을 내리는 것은 객체의 캡슐화를 위반한다.
이 과정에서 자연스럽게 진정한 캡슐화를 이룰 수 있게 된다.
객체를 값(데이터)로 바라보는게 아니라 자율성을 갖는 존재로 인식하는 것.
맹목적으로는 따르지 말자
물으려는 객체가 정말로 데이터인 경우도 있다.
디비터 법칙의 위반 여부는 묻는 대상이 객체인지 자료 구조인지에 달려있다고 설명한다.
가끔씩은 물어야 한다.
명령-쿼리 분리 원칙
명령 = 객체의 상태를 수정하는 오퍼레이션 (프로시저)
쿼리 = 객체의 정보를 반환하는 오퍼레이션 (함수)
명령-쿼리 분리 원칙은 오퍼레이션(메서드)은 부수효과를 발생시키는 명령이거나, 부수효과를 발생시키지 않는 쿼리 중 하나여야 한다는 것이다.
즉, 질문이 값을 수정해선 안 된다.
퍼블릭 인터페이스에 오퍼레이션을 정의할 때 참고할 지침을 제공한다.
명령-쿼리 분리 원칙을 준수한 인터페이스를 명령-쿼리 인터페이스라고 부른다.
객체는 블랙박스이며, 객체의 인터페이스는 상태를 보기 위한 디스플레이와 상태를 변경하기 위한 버튼의 집합이다.
이런 스타일의 인터페이스를 사용함으로써 객체의 캡슐화와 다양한 문맥에서의 재사용을 보장한다.
'CS > OOP' 카테고리의 다른 글
[오브젝트] 8장 - 좋은 의존성과 나쁜 의존성 (0) | 2024.01.29 |
---|---|
[오브젝트] 7장 : 기능 분해의 측면에서 본 OOP (1) | 2024.01.23 |
[오브젝트] 5장 : 책임 할당과 책임 중심 설계 (0) | 2024.01.18 |
[오브젝트] 4장 - 데이터 중심 설계의 문제점과 캡슐화 (0) | 2024.01.15 |
[오브젝트] 3장 - 역할, 책임, 협력 (0) | 2024.01.11 |