Java bank - Interface
The interface defines the functionality of the component.
Modify the current bank class into an interface that defines the functionality of the bank component and create a class called MyBank as an implementation that implements the Bank interface.
Open Bank.java and select the "File - Save As ..." menu to save it as MyBank.java and fix the compilation error.
Reopen Bank.java and modify it as shown below.
Bank.java
package net.java_school.bank;
import java.util.List;
public interface Bank {
//Create an account.
public void addAccount(String accountNo, String name);
//Create an account.
public void addAccount(String accountNo, String name, double balance);
//Create an account.
public void addAccount(String accountNo, String name, String kind);
//Create an account.
public void addAccount(String accountNo, String name, double balance, String kind);
//Find the account by account number.
public Account getAccount(String accountNo);
//Find the account by owner name.
public List<Account> findAccountByName(String name);
//Return all accounts.
public List<Account> getAccounts();
}
Modify the MyBank class.
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("Duplicated account.");
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("Duplicated account.");
accounts.add(new NormalAccount(accountNo, name, balance));
}
@Override
public void addAccount(String accountNo, String name, String kind) {
Account account = getAccount(accountNo);
if (account != null) throw new DuplicateAccountException("Duplicated account.");
if (kind != null && kind.equals("-")) {
accounts.add(new MinusAccount(accountNo, name));
} else {
accounts.add(new NormalAccount(accountNo, name));
}
}
@Override
public void addAccount(String accountNo, String name, double balance, String kind) {
Account account = getAccount(accountNo);
if (account != null) throw new DuplicateAccountException("Duplicated account.");
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;
}
}
Modify the main() of the test class.
Test.java
Bank bank = new MyBank();
