05. 은행 계좌 만들기 (5)

728x90

05. 은행 계좌 만들기 (5)

1 입금, 출금

2 접근제어자

3 계좌이체

4 생성자

5> this

5. this

일반 메소드에서의 사용

 

 우리가 Person클래스에서 만든 setName메소드의 파라미터 이름(pName) name으로 바꾸고 이 클래스로 생성된 인스턴스 변수 namethis을 사용해서 바꾸어 변수 name과 파라미터 변수 name를 한눈에 구별할 수 있습니다.

 

 일반 메소드에서 모두 this를 사용하여 바꿔보세요.

 

생성자에서의 사용

 

 생성자에서도 동일하게 모두 this를 사용하여 적용 가능합니다. 바꿔보세요!


A. 최종 해설

BankAccount 클래스

public class BankAccount {
    private int balance;
    private Person owner;

    public void setBalence(int balence) {
        this.balance = balence;
    }

    public int getBalence() {
        return balance;
    }

    public void setOwner(Person owner) {
        this.owner = owner;
    }

    public Person getOwner() {
        return owner;
    }

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

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

    }

    public boolean transfer(BankAccount to, int amount) {
        boolean success;
        if (amount >= 0 && amount <= balance) {
            balance -= amount;
            to.balance += amount;
            success = true;
        } else {
            success = false;
        }
        System.out.println(success + " - from: " + owner.getName() + ", to: " + to.owner.getName()
                + ", amount: " + amount + ", balance: " + balance);
        return success;
    }

    public boolean transfer(Person to, int amount) {
        return transfer(to.getAccount(), amount);
    }

    public BankAccount(int balance) {
        this.balance = balance;
        if (balance < 0) {
            this.balance = 0;
        }
    }

    public BankAccount(Person owner) {
        this.owner = owner;
        balance = 0;
    }

    public BankAccount(int balance, Person owner) {
        this.balance = balance;
        if (balance < 0) {
            this.balance = 0;
        }
        this.owner = owner;
    }
}

 

Person 클래스

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

    public void setAge(int age) {
        if (age >= 0) {
            this.age = age;
        }
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) { this.name = name; }

    public String getName() {return name; }

    public void setCashAmount(int cashAmount) { this.cashAmount = cashAmount; }

    public int getCashAmount() { return cashAmount; }

    public void setAccount(BankAccount account) { this.account = account; }

    public BankAccount getAccount() {
        return account;
    }

    public boolean transfer(Person to, int amount) {
        return account.transfer(to, amount);
    }

    public boolean transfer(BankAccount to, int amount) {
        return account.transfer(to, amount);
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
        if (age < 0) {
            this.age = 12;
        }
        cashAmount = 0;
    }
    
    public Person(String name, int age, int cashAmount) {
        this.name = name;
        this.age = age;
        if (age < 0) {
            this.age = 12;
        }
        this.cashAmount = cashAmount;
        if (cashAmount < 0) {
            this.cashAmount = 0;
        }
    }

}

 

Main 클래스

public class BankDrive {
    public static void main(String[] args) {

        Person p1 = new Person("다람이", 23);
        p1.setCashAmount(30000);

        Person p2 = new Person("말랑이", 21, 100000);

        BankAccount a1 = new BankAccount(p1);
        a1.setBalence(100000);

        BankAccount a2 = new BankAccount(500000, p2);

        System.out.println(a2.transfer(a1, 200000));
        System.out.println(a1.transfer(p2, 150000));
        System.out.println(p2.transfer(a1, 270000));
        System.out.println(p1.transfer(p2, 130000));;
    }
}

 

 

 

 

 

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

728x90

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

07. 평균값 계산기  (0) 2021.10.06
06. 특가 할인 매장  (0) 2021.10.05
04. 은행 계좌 만들기 (4)  (0) 2021.10.05
03. 은행 계좌 만들기 (3)  (0) 2021.10.05
02. 은행 계좌 만들기 (2)  (0) 2021.10.05