자바은행 - 요구사항 분석

자바로 구현하는 은행 프로그램을 실습한다.

만들 프로그램에 대한 명확한 이해를 동료와 공유해야 하는데, 그러기 위해서는 아래 시나리오와 같은 작업이 필요하다.

시나리오

  • 은행은 계좌를 등록한다.
  • 은행은 계좌번호로 계좌를 찾을 수 있다.
  • 은행은 계좌 소유자 이름으로 계좌를 찾을 수 있다.
  • 은행은 모든 계좌의 목록을 볼 수 있다.
  • 계좌는 소유자명, 계좌번호, 잔액으로 구성된다.
  • 계좌는 입금, 출금, 잔액 확인 기능이 있다.
  • 계좌 잔액 변화가 있을 때마다 거래 내용에 기록된다.
  • 거래 내용은 거래 일자, 거래시간, 거래금액, 입금 또는 출금으으로 구성된다.

클래스 다이어그램

시나리오로부터 클래스와 필드, 메소드를 추출해 내어야 한다. 시나리오에서 명사는 클래스나 필드로, 동사는 메소드가 된다. 자바은행 클래스다이어그램 추상화 단계 분석/설계 단계에서의 산출물은 아래와 같은 클래스 다이어그램이다. 자바은행 클래스다이어그램

Transaction, Bank, Account 클래스에서 미루어 짐작 가능한 게터getters와 세터setters 메소드는 생략했다.

-는 private, +는 public, #는 protected 접근자를 의미한다.

클래스 다이어그램은 클래스 구조뿐만 아니라 객체와 객체 간의 관계도 나타낸다.
클래스 사이에 선이 연결되어 있다면 그 클래스로부터 생성된 객체는 서로 관계가 있다.

다이아몬드는 객체가 다른 객체를 부품처럼 가진다는 의미이다.

객체가 다른 객체를 부품처럼 가지는 관계를 'has a'관계라고 한다.
은행은 여러 계좌를 가지고 있으므로 은행과 계좌 클래스는 "has a" 관계다.

'has a'관계 중에서 본체가 사라지면 부품도 같이 사라지는 강한 결합이라면 이를 합성(Composition)이라 하고 검은 다이아몬드로 표현한다.

본체가 사라지더라도 부품이 사라지지 않는 약한 결합을 집합(Aggregation)이라 하고 속이 빈 다이아몬드로 표현한다.

자바에선 합성이나 집합 모두 레퍼런스 변수로 구현한다.
이 변수에 부품에 해당하는 객체 레퍼런스가 할당된다.

0..*는 부품 객체의 수로서, 0 이상을 의미한다.

화살표는 객체가 다른 객체의 메소드를 호출하는 방향이다.

클래스 다이어그램 외에 유즈 케이스 다이어그램Use Case Diagram, 시퀀스 다이어그램Sequence Diagram등 다양한 다이어그램이 필요할 수 있다.
하지만 간단한 프로그램은 클래스 다이어그램만으로 충분하다.

참고