1. set classpath 에 대하여 설명하시오.

: 클래스가 있는 경로를 지정하여 참조할 수 있는 cmd 명령어로 다음과 같다.

> set classpath = .; <클래스가 있는 경로>

 

 

2. 절대경로와 상대경로에 대하여 설명하시오.

절대경로루트 디렉토리 부터 시작하여 지정한 경로

C:\package\MyClass

 

2-2. 상대경로

: 현재 디렉토리 기준으로 설정한 경로

.\MyClass

 

 

3. ‘.’과 ‘..’ 의 차이는?

: ’.’은 현재 상대경로, ’..’은 이전 상대경로를 의미한다.

 

 

4. package의 용도는?

: 같은 이름의 클래스를 선언하고자 할 떄, 이에 대한 중복성을 방지하기 위해 생긴 기능으로.

package를 선언할 시 해당 디렉토리에 동명의 폴더가 생성된 것을 볼 수 있다.

 

 

5. package 의 기본적인 명명법(이름짓는법)은?

: 소문자로 시작하여, camel 케이스를 준수하며, 첫 글자가 숫자여선 아니된다.

 

 

6. 정보은닉에 대하여 설명하시오.

: 객체지향프로그래밍(Object Oriented Programming, OOP)의 특성 중 하나로 데이터의 무결성을 보장하기 위해 해당 값을 초기화 하는 변수의 정보를 은닉하는 기능을 일컫는다.

 

 

7. 접근제한자 4가지 종류에 대하여 설명하시오.

: 접근제한자는 접근 권한이 약한 순서대로 나열하면 다음과 같다.

  1. public: 자기 혹은 다른 패키지까지 모두 접근이 가능한 키워드이다.
  2. protected: 자기 패키지내에서만 접근이 가능하며 외부 패키지에서는 호출만 할 수 있다.
  3. default: 접근 제한자를 따로 설정하지 않았을 때 자동으로 지정되는 키워드로, 자기 패키지 내에서만 접근이 가능하다.
  4. private: 자기 클래스 내부에서만 접근이 가능한 키워드이다.

 

 

8. class 에서 붙일수 있는 접근 제한자 2개를 설명하고, 해당 접근제한자의 사용 목적은?

  1. public: 자기 혹은 다른 패키지까지 모두 접근가능한 접근 제한자로 어디서든 인스턴스 생성이 가능하다.
  2. default: 자기 패키지 내에서만 접근가능한 접근 제한자로 해당 패키지 내에 한정으로 인스턴스 생성이 가능하다.

 

 

9. 가위, 바위, 보 게임 작성하시오.

9-1. 가위바위보 메인 클래스

import java.util.Scanner; 

public class RSPMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); 

        outerloop: 
        while (true) { 
            System.out.print("가위바위보를 입력하세요. [가위 / 바위 / 보]: ");
            String input = scanner.next(); 

            // 입력 값 유효성 검사.1 
            if (!(input.equals("가위") || input.equals("바위") || input.equals("보"))) {
                System.out.println("올바르지 않은 입력 값 입니다. 다시 입력해주세요.");
                continue; // outerloop 반복
            }

            Rsp rsp = new Rsp(input);
            rsp.output(); // 결과 출력 

            // 입력 값 유효성 검사.2 
            innerloop: while (true) {
                System.out.println(); 
                System.out.print("다시 시작하시겠습니까? [Y / N]: "); 
                char con = scanner.next().charAt(0); 

                if (con == 'Y' || con == 'y') { 
                    System.out.println(); 
                    System.out.println("프로그램을 다시 시작합니다.");
                    System.out.println(); 
                    break innerloop; // innerloop를 탈출하여 게임을 다시 시작
                } else if (con == 'N' || con == 'n') { 
                    System.out.println();
                    System.out.println("프로그램을 종료합니다.");
                    break outerloop; // outerloop를 탈출하여 게임을 종료 
                } else { 
                    System.out.println("올바르지 않은 입력 값 입니다. 다시 입력해주세요.");
                    continue; // innerloop 반복 
                }  
            } 
		}
        
        scanner.close();
    } 
}

 

9-2. 가위바위보 알고리즘 클래스

import java.util.Random; 

public class Rsp { 
    private String input; 
    public Rsp(String input) { 
    	this.input = input; 
    } 

    public String getInput() {
    	return input; 
    } 

    public void setInput(String input) { 
    	this.input = input; 
    } 

    public void output() {
    Random random = new Random(); 
    int out = random.nextInt(3) + 1; // 1==주먹, 2==가위, 3==보 

    switch (out) {
        case 1: // 주먹 
        if (input.equals("주먹")) {
        	System.out.println("컴퓨터가 주먹을 냈으므로 비겼습니다!");
        } else if (input.equals("가위")) {
        	System.out.println("컴퓨터가 주먹을 냈으므로 졌습니다!");
        } else {
        	System.out.println("컴퓨터가 주먹을 냈으므로 이겼습니다!");
        } 
        break; 

        case 2: // 가위
        if (input.equals("주먹")) {
        	System.out.println("컴퓨터가 가위를 냈으므로 이겼습니다!"); 
        } else if (input.equals("가위")) {
        	System.out.println("컴퓨터가 가위를 냈으므로 비겼습니다!"); 
        } else { System.out.println("컴퓨터가 가위를 냈으므로 졌습니다!");
        } 
        break; 

        case 3: // 보 
        if (input.equals("주먹")) { 
        	System.out.println("컴퓨터가 보를 냈으므로 졌습니다!"); 
        } else if (input.equals("가위")) { 
        	System.out.println("컴퓨터가 보를 냈으므로 이겼습니다!"); 
        } else { 
        	System.out.println("컴퓨터가 보를 냈으므로 비겼습니다!");
        } 
        break;
        } 
    }
}

 

 

10. 아래와 같이 계산기 프로그램을 작성하시오.

 

입력을 한칸씩 띄우도록 할것
--------------------------

10 + 9 
10 + 9 = 19 
계속하시겠습니까? 

10 - 7 
10 - 7 = 3 
계속하시겠습니까?

 

 

10-1. 계산기 메인 클래스

import java.util.Scanner;

public class CalculatorMain { 
    public static void main(String[] args) { 
        Scanner scanner = new Scanner(System.in);
        
        outeroop: 
        while (true) {
            System.out.println("계산할 정수 및 사칙연산기호를 띄어쓰기하여 입력해주십시오.");
            System.out.println("ex. 10 + 9 (or) 10 - 9 (or) 10 * 9 (or) 10 / 9");

            int num1 = scanner.nextInt(); 
            String sign = scanner.next(); 
            int num2 = scanner.nextInt(); 
            Calculator cal = new Calculator(num1, num2, sign); 
            
            cal.setNum1(num1); 
            cal.setNum2(num2);
            cal.setSign(sign);
            cal.show(); 

            inneroop:
            while (true) { 
                System.out.println();
                System.out.print("다시 시작하시겠습니까? [Y / N]: ");
                char con = scanner.next().charAt(0); 

                if (con == 'Y' || con == 'y') {
                	System.out.println();
                	System.out.println("프로그램을 다시 시작합니다.");
                	System.out.println(); 
                	break inneroop;
                } else if (con == 'N' || con == 'n') {
                	System.out.println(); 
               		System.out.println("프로그램을 종료합니다."); 
                	break outeroop; 
                } else {
                	System.out.println("올바르지 않은 입력 값 입니다. 다시 입력해주세요.");
                	continue;
                }
            } 
        }
        
        scanner.close(); 
    } 
}

 

10-2. 계산기 알고리즘 클래스

public class Calculator { 
    private int num1, num2;
    private String sign; 

    public Calculator(int num1, int num2, String sign) {
    	this.num1 = num1;
    	this.num2 = num2;
    	this.sign = sign;
    } 

    public int getNum1() { 
    	return num1; 
    }

    public boolean setNum1(int num1) { // 유효성 검사.1 
        this.num1 = num1;
        Integer wnum1 = new Integer(num1); // int -> Integer로 박싱하여 객체 비교

        if (!(wnum1 instanceof Integer)) {
        	System.out.println("올바르지 않은 숫자 값 입니다. 다시 입력해주세요."); 
        	return false;
        } else { 
        	return true;
        } 
    } 

    public int getNum2() {
    	return num2;
    } 

    public boolean setNum2(int num2) { // 유효성 검사.2
        this.num2 = num2;
        Integer wnum2 = new Integer(num2); 

        if (!(wnum2 instanceof Integer)) { 
        	System.out.println("올바르지 않은 숫자 값 입니다. 다시 입력해주세요.");
        	return false; 
        } else { 
        	return true;
        }
    }

    public String getSign() { 
    	return sign; 
    } 

    public boolean setSign(String sign) { // 유효성 검사.3 
        this.sign = sign; 

        if (!(sign.equals("+") || sign.equals("-") || sign.equals("*") || sign.equals("/"))) { 
        	System.out.println("올바르지 않은 연산 기호 입니다. 다시 입력해주세요."); 
        	return false; 
        } else { 
        	return true; 
        } 
    } 

    public void show() { 
        if (sign.equals("+")) { 
        	System.out.println(num1 + " " + sign + " " + num2 + " = " + (num1 + num2)); 
        } else if (sign.equals("-")) { 
        	System.out.println(num1 + " " + sign + " " + num2 + " = " + (num1 - num2)); 
        } else if (sign.equals("*")) { 
        	System.out.println(num1 + " " + sign + " " + num2 + " = " + (num1 * num2)); 
        } else if (sign.equals("/")) {
        	System.out.println(num1 + " " + sign + " " + num2 + " = " + (double)(num1 / num2)); 
        } 
    }
}

 

'WebDev > 본과정' 카테고리의 다른 글

오버로딩과 String  (0) 2021.05.11
캡슐화와 static 키워드  (0) 2021.05.11
클래스의 생성자  (0) 2021.05.11
메소드 심화 및 클래스 기초  (0) 2021.04.30
반복문 심화 및 메소드 기초  (0) 2021.04.30