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가지 종류에 대하여 설명하시오.
: 접근제한자는 접근 권한이 약한 순서대로 나열하면 다음과 같다.
- public: 자기 혹은 다른 패키지까지 모두 접근이 가능한 키워드이다.
- protected: 자기 패키지내에서만 접근이 가능하며 외부 패키지에서는 호출만 할 수 있다.
- default: 접근 제한자를 따로 설정하지 않았을 때 자동으로 지정되는 키워드로, 자기 패키지 내에서만 접근이 가능하다.
- private: 자기 클래스 내부에서만 접근이 가능한 키워드이다.
8. class 에서 붙일수 있는 접근 제한자 2개를 설명하고, 해당 접근제한자의 사용 목적은?
- public: 자기 혹은 다른 패키지까지 모두 접근가능한 접근 제한자로 어디서든 인스턴스 생성이 가능하다.
- 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 |
최근댓글