우아한테크코스 프리코스의 과제들을 다시 개발해보며 객체지향
설계 / 도메인
설계를 연습하고자 한다.
객체지향이란 무엇인가... 요즘 객체지향의 사실과 오해
라는 책을 읽고 있는데, 많은 도움이 된다. 그 책을 읽으면서 스스로 내린 정의는
객체지향이란, 객체들이 어떤 메시지를 주고 받으며 협력할 것인지 그 공동체를 구축하는 것이라고 생각한다.
이러한 객체지향을 기반으로 도메인을 주도로 개발하는 것이 DDD, Domain Driven Development라고 생각한다. DDD에 다가가는 시작으로 도메인을 모델링하는 것을 시작으로 개발을 연습하고자 한다.
Domain이란? 사용자들이 관심을 가지고 있는 특정 분야나 주제로, 소프트웨어는 도메인에 존재하는 문제들을 해결하기 위해 개발된다.
클래스 : 객체가 어떻게 구현되는지에 대한 구체적인 코드 (아메리카노, 카페라떼, 마끼아또는 각각 다른 클래스)
타입 : 객체의 인터페이스 (아메리카노, 카페라떼, 마끼아토는커피
라는 타입)
객체지향이란 메시지를 통해 객체들의 협력관계를 구축하는 것이다. 이를 위해서 객체지향의 사실과 오해
에서는
협력을 설계할 때는 객체보다는 메시지를 먼저 선택하고 그 후에 메시지를 수신하기에 적절한 객체를 선택해야 합니다.
라고 한다. 따라서 이 단계에서는 필요한 메시지들을 정의해서 나열한다.
결국 객체지향 -> 도메인 모델링으로 이어지며 메시지를 주고 받으면서 협력하는 객체의 공동체
를 설계해야 한다. 이를 위해 클래스 / 타입을 구분한 것이었디.
따라서 다음으로는 메시지를 주고 받는 타입타입간의 관계를 설정함으로써 도메인을 모델링하는 것이다.
이 단계에서는
하는 것이 중요하다.
설계는 처음에 완성하면 좋지만, 중간에 추가되는 경우에는 언제든 수정하면서 설계한다.
위 방법을 통해 우아한테크코스 프리코스 2주 차 과제인 숫자 야구 게임을 도메인 모델링 해보자.