Languages/Java

[자바 객체 지향 프로그래밍] 01. 객체 만들기

Dev다D 2021. 1. 21. 22:06
반응형

08. 입금, 출금

1. 입금

(1) 입금을 성공하면 true를 리턴, 실패하면 false를 리턴합니다.

(2) 입금 성공 시, 현재 잔고(balance)에 파라미터로 받은 금액(amount)을 더합니다.

(3) 입금 성공 시, 계좌주의 현금액(cashAmount)을 입금액만큼 줄입니다.

(4) 입금할 금액이 음수이면 입금 실패입니다(0원은 입금 성공).

(5) 계좌주의 현금이 입금액보다 작을 경우 입금 실패입니다.

(6) 입금 실패 시 다음과 같은 내용 출력:

> 입금 실패입니다. 잔고: xx원, 현금: xx원

(7) 입금 성공 시 다음과 같은 내용 출력:

> xx원 입금하였습니다. 잔고: xx원, 현금: xx원

2. 출금

(1) 출금을 성공하면 true를 리턴, 실패하면 false를 리턴합니다.

(2) 출금 성공 시, 현재 잔고에서 파라미터로 받은 금액을 뺍니다.

(3) 출금 성공 시, 계좌주의 현금액을 출금액만큼 늘려줍니다.

(4) 출금할 금액이 음수이면 출금 실패입니다(0원은 출금 성공).

(5) 출금할 금액이 잔고보다 크면 출금 실패입니다.

(6) 출금 실패 시 다음과 같은 내용 출력:

> 출금 실패입니다. 잔고: xx원, 현금: xx원

(7) 출금 성공 시 다음과 같은 내용 출력:

> xx원 출금하였습니다. 잔고: xx원, 현금: xx원

테스트

3. 인스턴스 생성

BankDriver 클래스의 main메소드에 수강생 이름과 나이로 새로운 Person 인스턴스를 만들어 p2라는 변수에 저장하세요. 그리고 p2에 해당하는 BankAccount 인스턴스 a2를 만들고 두 인스턴스를 연결해보세요. p2의 계정은 a2이고, a2의 소유인은 p2이어야 합니다.

초기 p2의 현금 보유량은 100,000원이고 a2의 잔액은 500,000원입니다.

4. 입출금

p2의 계좌인 a2에 대해 다음을 차례로 실행합니다:

(1) 30,000원 입금

(2) 170,000원 출금

(3) 620,000원 입금

(4) 890,000원 출금

> 30000원 입금하였습니다. 잔고: 530000원, 현금: 70000원 true

> 170000원 출금하였습니다. 잔고: 360000원, 현금: 240000원 true

> 입금 실패입니다. 잔고: 360000원, 현금: 240000원 false

> 출금 실패입니다. 잔고: 360000원, 현금: 240000원 false


public class Person {
    String name;
    int age;
    int cashAmount;
    BankAccount account;
}
public class BankAccount {
    int balance;
    Person owner;

    // 파라미터 : 입금할 액수 (정수형)
    // 리턴 : 성공여부 (불린)

    boolean deposit (int amount) {
        if((amount >= 0) && (owner.cashAmount > amount)) {
            owner.cashAmount = owner.cashAmount - amount;
            balance = balance + amount;
            System.out.println(amount + "원 입금하였습니다. 잔고: " + balance + "원, 현금: " + owner.cashAmount + "원");
            return true;
        } else {
            System.out.println("입금 실패입니다. 잔고: " + balance + "원, 현금: " + owner.cashAmount + "원");
            return false;
        }
    }

    // 파라미터 : 출금할 액수 (정수)
    // 리턴 : 성공여부 (불린)

    boolean withdraw (int amount) {
        if((amount >= 0 && balance > amount)) {
            balance = balance - amount;
            owner.cashAmount = owner.cashAmount + amount;
            System.out.println(amount + "원 출금하였습니다. 잔고: " + balance + "원, 현금: " + owner.cashAmount + "원");
            return true;
        } else {
            System.out.println("출금 실패입니다. 잔고: " + balance + "원, 현금: " + owner.cashAmount + "원");
            return false;
        }
    }
}
public class BankDriver {
    public static void main(String[] args) {
        // 사람 선언
        Person p1 = new Person();
        p1.name = "김신의";
        p1.age = 28;
        p1.cashAmount = 30000;

        // 은행 계좌 생성
        BankAccount a1 = new BankAccount();
        a1.balance = 100000;

        p1.account = a1;
        a1.owner = p1;

        Person p2 = new Person();
        p2.name = "김성실";
        p2.age = 29;
        p2.cashAmount = 100000;

        BankAccount a2 = new BankAccount();
        a2.balance = 500000;

        p2.account = a2;
        a2.owner = p2;

        System.out.println(a2.deposit(30000));
        System.out.println(a2.withdraw(170000));
        System.out.println(a2.deposit(300000));
        System.out.println(a2.withdraw(450000));
    }
}

 


본 내용은 Codeit의  '자바 기초' 강의를
참고하여 작성한 내용입니다.

 

반응형