본문 바로가기

프로그래밍/Java

이것이 자바다 6장 확인 문제 답 - 신용권의 Java 프로그래밍 정복

728x90
반응형

하아... 이거 교수님이 한챕터 나갈때마다 확인문제를 과제로 내주시는데 힘들다...

 

객체와 클래스에 대한 설명으로 틀린 것은 무엇입니까?


3번


 

클래스의 구성 멤버가 아닌 것은 무엇입니까?


4번


 

필드, 생성자, 메소드에 대한 설명으로 틀린 것은 무엇입니까?


4번


 

필드에 대한 설명으로 틀린 것은 무엇입니까?


3번


 

생성자에 대한 설명으로 틀린 것은 무엇입니까?


1번


 

메소드에 대한 설명으로 틀린 것은 무엇입니까?


4번

메소드 오버로딩

 


 

메소드 오버로딩에 대한 설명으로 틀린 것은 무엇입니까?


2번


 

인스턴스 멤버와 정적 멤버에 대한 설명으로 틀린 것은 무엇입니까?


2번

인스턴스 멤버는 생성자에서는 사용 가능 정적 블록은 불가능

 


 

final 필드와 상수에 대한 설명으로 틀린 것은?


2번

static final 상수는 불가능, 일반 final은 가능

 


 

패키지에 대한 설명으로 틀린 것은 무엇입니까?


4번


 

접근 제한에 대한 설명으로 틀린 것은 무엇입니까?


3번

default는 같은 패키지에서는 제한없이 가능 다른 패키지에서는 불가능

 


 

다음 클래스에서 해당 멤버가 필드, 생성자, 메소드 중 어떤건지 쓰시고


순서대로 필드, 생성자, 메소드

 


 

멤버를 클래스로 모델링한다. 이름, 아이디, 패스워드, 나이를 클래스로 선언


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

 

 


 

위에서 작성한 클래스에 생성자를 추가하려 한다 그리고 id를 외부에서 받은 값으로 초기화 하려면 어떻게 생성자를 선언해야하나


public class Member{
        String name;
        String id;
        String pw;
        int age;

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

 

 


 

로그인과 로그아웃 메소드를 선언해라


public class MemberService{
    String id;
    String pw;

    public boolean login(String id, String pw) {
        return this.id.equals(id) && this.pw.equals(pw);
    }
    
    public void logout(String id) {
        if(this.id.equals(id)) System.out.println("로그아웃 되었습니다.");
    }
}

 

 


 

println 메소드를 선언해라


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

 

 


 

객체를 생성하지 않고 호출하려면 어떻게 해야하는가?


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

 

이렇게 하고 접근할 때 클래스 명으로 접근하면 됨

 


 

싱글톤을 만들어라


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

    public ShopService getInstance() { return shopService; }
}

 

 


 

은행 계좌 객체를 만들어라


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

    private int balance;

    public int getBalance() {
        return balance;
    }

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

 

 


 

계좌 정보를 관리하는 프로그램을 만들어라


import java.util.Scanner;

public class Main {
    private static Account[] accounts = new Account[100];
    private static Scanner scanner = new Scanner(System.in);
    private static int i = 0;
    public static void main(String[] args) {

        boolean run = true;
        while(run) {
            System.out.println("---------------------------------------");
            System.out.println("1. 계좌 생성, 2. 계좌 목록, 3. 예금, 4. 출금, 5. 종료");
            System.out.println("---------------------------------------");
            System.out.print("선택> ");

            int selectNo = scanner.nextInt();

            if(selectNo == 1) {
                createAccount();
            } else if(selectNo == 2) {
                accountList();
            } else if(selectNo == 3) {
                deposit();
            } else if(selectNo == 4) {
                withdraw();
            } else if(selectNo == 5) {
                run = false;
            }

        }
        System.out.println("프로그램 종료");
    }

    private static void withdraw() {
        System.out.println("----------");
        System.out.println("출금");
        System.out.println("----------");
        System.out.print("계좌번호: ");
        String ano = scanner.next();

        Account account = findAccount(ano);

        if(account.getAno().equals("없는계좌")) {
            System.out.println("결과: 없는 계좌입니다.");
        } else {
            System.out.print("출금액: ");
            int balance = scanner.nextInt();
            account.setBalance(account.getBalance() - balance);
            System.out.println("결과: 출금이 성공되었습니다.");
        }
    }

    private static void deposit() {
        System.out.println("----------");
        System.out.println("예금");
        System.out.println("----------");
        System.out.print("계좌번호: ");
        String ano = scanner.next();

        Account account = findAccount(ano);

        if(account.getAno().equals("없는계좌")) {
            System.out.println("결과: 없는 계좌입니다.");
        } else {
            System.out.print("예금액: ");
            int balance = scanner.nextInt();
            account.setBalance(account.getBalance() + balance);
            System.out.println("결과: 입금이 성공되었습니다.");
        }
    }

    private static void accountList() {
        System.out.println("----------");
        System.out.println("계좌목록");
        System.out.println("----------");

        for(int index = 0; index < i; index++) {
            Account account = accounts[index];
            System.out.println(account.getAno() + "\t" + account.getOwner() + "\t" + account.getBalance());
        }
    }

    private static void createAccount() {
        System.out.println("----------");
        System.out.println("계좌생성");
        System.out.println("----------");
        System.out.print("계좌번호: ");
        String ano = scanner.next();
        System.out.print("계좌주: ");
        String owner = scanner.next();
        System.out.print("초기 입금액: ");
        int balance = scanner.nextInt();

        Account account = new Account(ano, owner, balance);
        accounts[i++] = account;
    }

    private static Account findAccount(String ano){
        for(int index = 0; index < i; index++) {
            Account account = accounts[index];
            if(account.getAno().equals(ano)) {
                return account;
            }
        }
        return new Account("없는계좌", "없는주인", 0);
    }

}

 

 


 

 

728x90
반응형