01. 은행 계좌 만들기 (1)

728x90

01. 은행 계좌 만들기 (1)

1> 입금, 출금

2 접근제어자

3 계좌이체

4 생성자

5 this

1. 입금, 출금

메서드

 

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원입니다.

 p1의 이름은 "다람이", 나이는 23, 현금보유량은 30000입니다.

 

 Person 클래스에는 name, age, cashAmount, account의 인스턴스가 있습니다.

 

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

A. 해설

BankAccount 클래스

public class BankAccount {
    int balance;
    Person owner;

    // 파라미터 : 입금할 액수(정수)
    // 리턴 : 성공여부(불린)
    boolean deposit(int amount) {
    	// 입금할 액수가 0보다 작거나 현금보유량보다 클 경우 (실패)
        if (amount < 0 || amount > owner.cashAmount) {
            System.out.println("입금 실패입니다. 잔고: " + balance + 
            "원, 현금: " + owner.cashAmount + "원");
            return false;
        // 그 밖의 경우 (성공)
        } else {
            balance = balance + amount;
            owner.cashAmount -= amount;
            System.out.println(amount +"원 입금하였습니다. 잔고: " + balance +
            "원, 현금: " + owner.cashAmount + "원");
            return true;
        }
    }

    // 파라미터 : 출금할 액수(정수)
    // 리턴 : 성공여부(불린)
    boolean withdraw(int amount) {
    	// 출금할 액수가 0보다 작거나 잔고보다 클 경우 (실패)
        if (amount < 0 || amount > balance) {
            System.out.println("출금 실패입니다. 잔고: " + balance + 
            "원, 현금: " + owner.cashAmount + "원");
             return false;
        // 그 밖의 경우 (성공)
        } else {
            balance -= amount;
            owner.cashAmount += amount;
            System.out.println(amount + "원 출금하였습니다. 잔고: " + balance + 
            "원, 현금: " + owner.cashAmount + "원");
            return true;
        }
    }
}

 

Person 클래스

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

 

Main 클래스

public class Main {
    public static void main(String[] args) {
        // p1 사람 선언
        Person p1 = new Person();
        p1.name = "다람이";
        p1.age = 23;
        p1.cashAmount = 30000;


        // a1 은행 계좌 생성
        BankAccount a1 = new BankAccount();
        a1.balance = 100000;
	// p1의 계좌 a1, a1의 사용자 p1 연결
        p1.account = a1;
        a1.owner = p1;
        
        // p2 사람 선언
        Person p2 = new Person();
        p2.name = "말랑이";
        p2.age = 21;
        p2.cashAmount = 100000;
        
        // a2 은행 계좌 생성
        BankAccount a2 = new BankAccount();
        a2.balance = 500000;
        // p2의 계좌 a2, a2의 사용자 p2 연결
        p2.account = a2;
        a2.owner = p2;
        
        System.out.println(a2.deposit(30000));
        System.out.println(a2.withdraw(170000));
        System.out.println(a2.deposit(620000));
        System.out.println(a2.withdraw(890000));
    }
}

 

 

 

 

출처 | 코드잇 (자바 기초)

728x90

'💠문제 풀이 > Java 문제 풀이' 카테고리의 다른 글

06. 특가 할인 매장  (0) 2021.10.05
05. 은행 계좌 만들기 (5)  (0) 2021.10.05
04. 은행 계좌 만들기 (4)  (0) 2021.10.05
03. 은행 계좌 만들기 (3)  (0) 2021.10.05
02. 은행 계좌 만들기 (2)  (0) 2021.10.05