Java programming 자바 프로그래밍 실습 : Bank Account Class (withdraw, transfer)
2021-1 성균관대학교 소프트웨어학과 타메르 교수님의 자바 프로그래밍 실습 수업을 들으면서 수행한 예제입니다.
문제
- BankAccount 클래스는 String firstName, String lastName, double balance를 인스턴스 변수로 갖는다.
- constructor를 이용해서 인스턴스 변수를 초기화하라
- 각 인스턴스 변수는 setter, getter 메소드를 갖는다.
- 클래스는 withdraw(double amount) 메소드를 갖는다.
- 인출하려는 amount가 BankAccount의 balance 이하이면 인출해서 balance 값을 업데이트하고,
- amount 값이 balance 보다 크다면 "Withdrawal amount exceeded account balance."를 출력하고 balance 값은 그대로 둔다.
- 클래스는 transfer(BankAccount receiverObject, double amount) 메소드를 갖는다.
- receiver에게 amount 돈을 보낸다.
- 보낸 만큼 amount를 감소시키고, receiver의 balance에 amount만큼을 더한다.
- amount가 가지고 있는 balance보다 크다면 업데이트하지 않고 "You have not enough money!"를 출력한다.
- BankAccountTest 클래스를 생성해서 다음과 같은 operation들을 수행하라.
- BankAccount.java
public class BankAccount {
String firstName;
String lastName;
double balance;
// constructor using setter methods
public BankAccount(String first, String last, double bal) {
setFirstName(first);
setLastName(last);
setBalance(bal);
}
// getter and setter methods for each field
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public void Withdraw(double amount) {
if (amount <= this.balance) {
setBalance(this.balance-amount);
}
else {
System.out.println("Withdrawal amount exceeded account balance.");
}
}
public void Transfer(BankAccount receiver, double amount) {
if (amount <= this.balance) {
receiver.setBalance(receiver.balance + amount);
this.setBalance(this.balance-amount);
}
else {
System.out.println("You have not enough money!");
}
}
}
- BankAccountTest.java
public class BankAccountTest {
// to avoid repeated lines, create function for print each balance of bank account
public static void printStatus(BankAccount a, BankAccount b) {
System.out.println("Balance ->");
System.out.println(a.getFirstName() + " " + a.getLastName() + "'s balance: $ " + a.getBalance());
System.out.println(b.getFirstName() + " " + b.getLastName() + "'s balance: $ " + b.getBalance());
}
public static void main(String[] args) {
int amount;
BankAccount receiver;
// declare two BankAccount instances
BankAccount a = new BankAccount("John", "Ewing", 14000);
BankAccount b = new BankAccount("Jack", "Sparrow", 100000);
printStatus(a,b);
// withdraw 2000 from John's account
amount = 2000;
a.Withdraw(amount);
System.out.println("Operation->");
System.out.println(a.getFirstName() + " " + a.getLastName() + " withdrew " + amount + "$");
a.Withdraw(amount);
System.out.println("Success");
// set both balance using setter method
a.setBalance(12000);
b.setBalance(100000);
printStatus(a,b);
// Jack transfer 50000 to John
amount = 50000;
receiver = a;
b.Transfer(receiver, amount);
System.out.println(b.getFirstName() + " " + b.getLastName() +
" transferred $" + amount +
" to " + receiver.getFirstName() + " " + receiver.getLastName());
System.out.println("Success.");
printStatus(a,b);
// Jack withdraw amount exceeded account then fail
amount = 60000;
System.out.println("Operation->");
System.out.println(b.getFirstName() + " " + b.getLastName() + " withdrew $" + amount);
System.out.print("Failed. ");
b.Withdraw(amount);
printStatus(a,b);
// Jack transfer amount exceeded account to Jack then fail
amount = 55000;
receiver = a;
System.out.println("Operation->");
System.out.println(b.getFirstName() + " " + b.getLastName() +
" transferred $" + amount +
" to " + receiver.getFirstName() + " " + receiver.getLastName());
System.out.print("Failed. ");
b.Transfer(receiver, amount);
printStatus(a,b);
}
}
'프로그래밍 언어 > Java' 카테고리의 다른 글
Week5) Java Programming Lab : Inheritance (0) | 2021.03.23 |
---|---|
Java programming 자바 프로그래밍 실습 : Employee Salary (0) | 2021.03.22 |
Java programming 자바 프로그래밍 실습 : Invoice Calculation (0) | 2021.03.22 |
Java Code Conventions (0) | 2021.03.17 |
Week4) Java Programming Lab : Class and Instance (2) (0) | 2021.03.16 |