이것이 자바다 4일차 - Chapter 6 클래스 (2/2)

Seo-Faper·2023년 1월 12일
0

이것이 자바다

목록 보기
5/20
post-custom-banner

연습문제

3번, 여러개를 생성 할 수 있습니다.

4번, 로컬 변수는 생성자나 메소드 안에 포함될순 있지만 구성 멤버는 아닙니다.

4번, 필드와 메소드가 없어도 됩니다.

1번, new 키워드를 통해 생성자 호출을 해야 객체가 만들어 지죠..

4번, 메소드 오버로딩이 있지요.

2번, 반드시 리턴 타입이 다를 필욘 없습니다.

2번 정적 블록에서는 정적 필드만 초기화 합시다..

2번 상수는 생성자가 아니라 정적 블록에서만 초기화 할 수 있습니다.

4번, 되겠냐?

3번, 같은 패키지여도 접근 할 수 있습니다.

package ch06.homework;

public class Member {
    String name;
    String id;
    String password;
    int age;
}

private로 만들고 getter와 setter를 설정하고 싶지만.. 뒤에 어떤 문제가 나올지 모르니 일단 냅두겠습니다.

    public Member(String name, String id){
        this.name = name;
        this.id = id;
    }

네~

package ch06.homework;

public class MemberService
{
    public boolean login(String id, String password){
        if(id.equals("hong") && password.equals("12345")) return true;
        return false;
    }

    public void logout(String id){
        System.out.println(id+"님이 로그아웃 되었습니다.");
    }
}

package ch06.homework;

public class Printer {
    public void println(int value){
        System.out.println(value);
    }
    public void println(boolean value){
        System.out.println(value);
    }
    public void println(double value){
        System.out.println(value);
    }
    public void println(String value){
        System.out.println(value);
    }
}

음, 근데 뜬금없이 logout 메소드는 왜 있는지? 훼이크인가

그냥 전부 앞에 statc 붙여주면 됩니다.
객체를 생성하지 않고도 하려면 정적 메소드로 만드는 거죠.

package ch06.homework;

public class ShopService
{
    private static ShopService shopService = new ShopService();

    private ShopService(){
    }

    static ShopService getInstance(){
        return shopService;
    }
}

참고로 static으로 선언된 필드는 this로 참조 하면 안됩니다.


package ch06.homework;

public class Account
{
    final static int MIN_BALANCE = 0;
    final static int MAX_BALANCE = 100000;

    private int balance;

    public int getBalance() {
        return balance;
    }

    public void setBalance(int balance) {
        if(balance < MIN_BALANCE && balance > MAX_BALANCE) return;
        this.balance = balance;
    }
}

해드렸습니다.

package ch06.homework2;

public class Account {
    private String payNum;
    private String owner;
    private int balance;
    

    public String getOwner() {
        return owner;
    }

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

    public Account(String payNum, int balance, String owner) {
        this.payNum = payNum;
        this.balance = balance;
        this.owner = owner;
    }

    public String getPayNum() {
        return payNum;
    }

    public void setPayNum(String payNum) {
        this.payNum = payNum;
    }

    public int getBalance() {
        return balance;
    }

    public void setBalance(int balance) {
        if(balance < 0) return;
        this.balance = balance;
    }
}

한도는 없으니까 0 이하로 내려가지만 않게 해줍시다.

package ch06.homework2;



import java.util.Scanner;

public class BankApplication {
    public static void main(String[] args) {
        Account[] accounts = new Account[100];
        Scanner sc = new Scanner(System.in);
        int p = 0;
        while(true){

        System.out.println("-------------------------");
        System.out.println("1. 계좌 생성  | 2. 계좌 목록 | 3. 예금 | 4. 출금 | 5. 종료");
        System.out.print("선택> ");
        int sel = sc.nextInt();
        if (sel == 5) break;
        if(sel==1){
            sc.nextLine();
            System.out.println("------");
            System.out.println("계좌 생성");
            System.out.println("------");
            System.out.print("계좌번호 : ");
            String payNum = sc.nextLine();
            System.out.print("계좌주 : ");
            String owner = sc.nextLine();
            System.out.print("초기 입금액 : ");
            int balance = sc.nextInt();
            accounts[p] = new Account(payNum,owner,balance);
            System.out.println("결과 : 계좌가 생성되었습니다.");
            p++;
        }else if(sel==2){
            System.out.println("------");
            System.out.println("계좌 목록");
            System.out.println("------");
            for(int i = 0; i< p; i++){
                System.out.println(accounts[i].getPayNum()+"\t"+accounts[i].getOwner()+"\t"+accounts[i].getBalance());
            }
        }else if(sel==3){
            sc.nextLine();
            System.out.println("------");
            System.out.println("예금");
            System.out.println("------");
            System.out.print("계좌번호 : ");
            String payNum = sc.nextLine();
            System.out.print("예금액 : ");
            int balance = sc.nextInt();
            for(int i = 0; i<p; i++){
                if(accounts[i].getPayNum().equals(payNum)){
                    accounts[i].setBalance(accounts[i].getBalance()+balance);
                    break;
                }
            }
        }else if(sel==4){
            sc.nextLine();
            System.out.println("------");
            System.out.println("예금");
            System.out.println("------");
            System.out.print("계좌번호 : ");
            String payNum = sc.nextLine();
            System.out.print("출금액 : ");
            int balance = sc.nextInt();
            for(int i = 0; i<p; i++){
                if(accounts[i].getPayNum().equals(payNum)){
                    accounts[i].setBalance(accounts[i].getBalance()-balance);
                    break;
                }
            }
        }

        }
    }
}

그냥 시키는 대로 뚝딱뚝딱 만들면 끝입니다~!

profile
gotta go fast
post-custom-banner

0개의 댓글