본문 바로가기

프로그래밍 언어/Java

Java programming 자바 프로그래밍 실습 : Bank Account Class (withdraw, transfer)

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);
	}

}