자바은행 - 인터페이스 적용
인터페이스는 컴포넌트 기능을 정의한다고 했다.
Bank 클래스를 은행 컴포넌트 기능을 정의하는 인터페이스로 수정한다.
Bank.java를 열고 File - Save As 메뉴를 선택하여 MyBank.java로 저장하고 컴파일 오류를 수정한다.
Bank.java를 다시 열고 아래와 같이 수정한다.
Bank.java
package net.java_school.bank; import java.util.List; public interface Bank { //계좌를 생성한다. publlic void addAccount(String accountNo, String name); //계좌를 생성한다. publlic void addAccount(String accountNo, String name, double balance); //계좌를 생성한다. public void addAccount(String accountNo, String name, String kind); //계좌를 생성한다. public void addAccount(String accountNo, String name, double balance, String kind); //계좌번호로 계좌를 찾는다. public Account getAccount(String accountNo); //소유자명으로 계좌를 찾는다. public List<Account> findAccountByName(String name); //모든 계좌를 반환한다. public List<Account> getAccounts(); }
MyBank.java 파일을 열고 강조된 부분을 참고하여 수정한다.
MyBank.java
package net.java_school.bank; import java.util.ArrayList; import java.util.List; public class MyBank implements Bank { private List<Account> accounts = new ArrayList<Account>(); @Override public void addAccount(String accountNo, String name) { Account account = getAccount(accountNo); if (account != null) throw new DuplicateAccountException("중복된 계좌입니다."); accounts.add(new NormalAccount(accountNo, name)); } @Override public void addAccount(String accountNo, String name, double balance) { Account account = getAccount(accountNo); if (account != null) throw new DuplicateAccountException("중복된 계좌입니다."); accounts.add(new NormalAccount(accountNo, name, balance)); } @Override public void addAccount(String accountNo, String name, String kind) { Account account = this.getAccount(accountNo); if (account != null) throw new DuplicateAccountException("중복된 계좌입니다."); if (kind != null && kind.equals("-")) { accounts.add(new MinuslAccount(accountNo, name)); } else { accounts.add(new NormalAccount(accountNo, name)); } } @Override public void addAccount(String accountNo, String name, double balance, String kind) { Account account = this.getAccount(accountNo); if (account != null) throw new DuplicateAccountException("중복된 계좌입니다."); if (kind != null && kind.equals("-")) { accounts.add(new MinusAccount(accountNo, name, balance)); } else { accounts.add(new NormalAccount(accountNo, name, balance)); } } @Override public Account getAccount(String accountNo) { int totalAccount = accounts.size(); for (int i = 0; i < totalAccount; i++) { if (accountNo.equals(accounts.get(i).getAccountNo())) { return accounts.get(i); } } return null; } @Override public List<Account> findAccountByName(String name) { List<Account> matched = new ArrayList<Account>(); int totalAccount = accounts.size(); for (int i = 0; i < totalAccount; i++) { if (name.equals(accounts.get(i).getName())) { matched.add(accounts.get(i)); } } return matched; } @Override public List<Account> getAccounts() { return accounts; } }
메인 메소드의 다음 부분만 수정하면 테스트할 수 있다.
Test.java
Bank bank = new MyBank();참고
- New 알기쉬운 자바2(개정판) 저자: 김철회 출판사: 정보문화사