
객체지향 설계
- 객체지향 설계란 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가지는 것
데이터 중심의 설계
- 책임 할당의 방식이 아닌 데이터 중심의 설계의 문제점들을 알아보자
- 데이터 중심의 설계는 객체의 책임이 아니라 객체의 상태에 집중을 한다
- 객체의 상태는 구현에 속하기 떄문에 캡슐화의 원칙이 무너진다
- 데이터 중심 설계이지만 캡슐화의 원칙을 지키기위해 사용하는게 데이터 접근자와 수정자를 사용하는 것
캡슐화
- 캡슐화란 변경 가능성이 높은 부분을 객체 내부로 숨기는 추상화 기법
- 캡슐화를 사용하는 목적은 유지보수성이다.
캡슐화 위반
- 데이터 중심으로 설계한 클래스들은 메서드로만 객체의 내부 상태에 접근할 수 있다
- 주로 사용되는 것이 get과 set이다
- 예를 들어 getBuy, setBuy 메서드를 가진 클래스가 있다고 생각해보자,
메서드를 보고 내부에 buy라는 이름의 인스턴스 변수가 있다는 사실을 드러낸다 - 위와 같은 방법은 대부분의 내부 구현이 퍼블릭 인터페이스에 그래도 노출될 수밖에 없는 것
- 하나의 클래스 내에 내부 구현된 접근자와 수정자가 많다면, 코드중복이 발생할 확률이 높고, 변경에 취약하다는 문제점들을 가진다
데이터 중심 설계의 문제점
- 본질적으로 너무 이른 시기에 데이터에 대해 결정하도록 강요한다
- 협력이라는 문맥을 고려하지 않고 객체를 고립시킨채 오퍼레이션을 결정한다
- 데이터 중심 설계 방식에 익숙한 개발자들은 절차적 프로그래밍 방식을 따른다
- 이러한 방식은 접근자와 수정자가 public속성과 큰 차리가 없기 때문에 캡슐화는 무너진다
이 단원에서는 지금까지 설계하는 방식이 절차적프로그래밍을 따르고 자주 사용하는 get과 set 메서드가 왜 완벽하게 캡슐화를 시킬 수 없는지 예를 들어 이해할 수 있는 단원이다. 핵심적인 내용은 같은데 다양한 관점에서 바라보면서 이해가 더 깊게 되는 것 같다.
'IT자료실 > 기술서적' 카테고리의 다른 글
오브젝트 - 기술서적 스터디 6단원-메시지와 인터페이스 (0) | 2023.07.24 |
---|---|
오브젝트 - 기술서적 스터디 5단원-설계품질 트레이드 오프 (0) | 2023.07.11 |
오브젝트 - 기술서적 스터디 3단원-역할 책임 협력 (0) | 2023.07.04 |
오브젝트 - 기술서적 스터디 2단원-객체지향 프로그래밍 (0) | 2023.07.04 |
오브젝트 - 기술서적 스터디 1단원-객체, 설계 (0) | 2023.06.25 |