"은행은 정기 예금 계좌와 보통 예금 계좌를 제공한다. 고객들은 자신의 계좌에 돈을 입금할 수 있으며 계좌에서 돈을 인출할 수 있다. 그리고 각 계좌는 기간에 따라 이자를 지급한다. 계좌마다 이자는 달라진다."
문서에 등장하는 명사가 클래스의 후보가 된다.
그 다음, 필요한 클래스만을 선별한다. 어떤 단어는 다른 단어의 속성일 수도 있고, 어떤 단어는 다른 단어의 인스턴스가 되는 게 적합할 수도 있으므로, 필요한 클래스만을 선별하고 관계를 정리해야함.
**
EX
은행 계좌를 나타내는 Account 객체 - 계좌번호, 잔고 포함해야함.
고객을 나타내는 Client 객체 - 이름, 주소, 아이디 포함해야함.
EX
은행을 나타내는 Bank 클래스 - addAccount(), addClient()
계좌를 나타내는 Account 클래스 - deposit(), withdraw()
요구 사항 문서에서 "동사"에 해당되는 부분이 메소드가 되는 경우가 많다.
데이터 구조나 알고리즘은 아직 생각하지 말자. 이러한 결정에 대해서는 세부 설계 단계까지 남겨두는 것이 가장 좋다.
대부분의 클래스는 단독으로 존재하지 않는다. 클래스가 특정한 동작을 수행할 수 있지만, 원하는 것을 얻기 위해서는 다른 클래스와 상호 작용해야하는 경우가 많다. 하나의 클래스는 다른 클래스의 정보가 필요하거나, 무언가를 해주기를 원하는 경우가 있다.
이러한 클래스 간의 관계를 설정하는 부분 중 가장 중요한 것이 상속, 구성이다.
<인피티니 북스, 파워 자바 공부하고 정리한 내용>