1. 아래가 의도하지 않은 결과를 나타내는 이유를 설명하시오.

char ch = '가'; 
System.out.println(ch + '\n');

: char 타입 문자 ‘가’를 초기화 하고 이를 출력하는 과정에서 ch + ‘\n’의 ‘+’ 정수(int) 연산으로 인해 유니 코드(UTF-8)에 해당 되는 값이 인코딩이 되어 정수인 44042가 출력되었다.

 

2. 변수의 scope 는?

: 변수가 해당 지역내에 있음을 의미하는 구역을 의미하며, ‘{}’ 기호를 통해 구분한다.

 

3. 지역변수?

: 클래스 내 메소드나 조건문과 같이 ‘{}’ 기호 내에 있는 선언한 변수를 일컫는다. 지역변수의 특징은 선언한 스코프 외 동등한 다른 지역이나 상위 영역으로 호출을 할 수 없다는 점이 있다.

 

4. 펙토리얼을 구하는 재귀 함수를 만드시오.

public class Factorial {

	public static void main(String[] args) {
		int num = 5;
		System.out.println("팩토리얼의 값은 " + getFactorial(num) + "입니다 ");
	}

	private static int getFactorial(int num) { // 팩토리얼
		if (num <= 1) {
			return num;
		} else {
			return getFactorial(num - 1) * num;
		}
	}
}

 

5. 클래스의 구성요소는 무엇인가?

: 클래스의 구성요소는 크게 3가지로 필드, 메소드, 생성자가 있다.

  • 필드는 클래스와 메소드 단위 사이에 속하는 전역적인 의미의 스코프로, 해당 구역내에 선언한 변수는 전역 변수의 특성을 가진다.
  • 메소드는 클래스에 속하는 하위 단위적인 개념으로, 여러 변수들의 연산을 통해 한 기능을 구현할 수 있다.
  • 생성자는 메인 클래스에서 new 키워드를 통해 선언하고자 할 때, 참조된 클래스의 기능을 가져와 객체를 생성하면서 메모리를 할당하는 기능을 가진다.

 

6. 원의 넓이는 구하는 프로그램을 아래와 같이 작성하시오.

6-1. 메인 원 클래스

public class CirMain {
	public static void main(String[] args) {
		Circle cir = new Circle();
		
		cir.setRad(10);
		System.out.println("원의 넓이는: " + cir.getArea());
	}
}

6-2. 원의 넓이를 계산하는 클래스

public class Circle {
	int rad; // alt+shift+s로 getter/setter 설정가능

	public int getRad() {
		return rad;
	}

	public void setRad(int rad) {
		this.rad = rad;
	}

	public double getArea() {
		return Math.PI * Math.pow(rad, 2);
	}
}

 

7. 객체란 무엇인가?

: 메인 클래스에서 기존에 선언한 다른 클래스를 참조하고자 할 때 생성자를 통해 해당 크기만큼 메모리를 할당하는 어떠한 공간적인 개념.

 

8. 아래의 클래스에 대하여, 메모리 그림을 그리시오.

Rectangle rec = new Rectangle();
 public class Rectangle {
	int height;
	int width;
	
	public int getHeight() {
		return height;
	}
	
	public void setHeight(int height) {
		this.height = height;
	}
	
	public int getWidth() {
		return width;
	}
	
	public void setWidth(int width) {
		this.width = width;
	}
	
	public int getArea() {
		return width * height;
	}
	
}

 

9. 클래스와 객체의 차이는 무엇인가?

: 클래스는 크게 두 가지의 의미로 분석할 수 있다.

  1. 첫 번째, 클래스는 규모면에서 보면 한 기능을 가진 메소드를 여러개를 포함하여 한 그룹을 가질 수 있는 기능이 있고
  2. 두 번째, 객체로써의 클래스는 기존에 만들었던 클래스를 참조하여(Call by reference) 사용자 정의 타입을 통해 생성자로 선언 및 초기화를 할 수 있다.

 

10. -1 부터 num 까지 합을 구하는 class 를 작성하도록 하시오.

10-1. 메인 클래스

public class SummaryMain {

	public static void main(String[] args) {
		Summary summary = new Summary();
		
		int num = 5; // 지정 변수 num 선언 및 초기화
		
		summary.setNum(num);
		System.out.println(summary.getSum()); // 값 출력
	}
}

10-2. 계산 클래스

public class Summary {
	int num;

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}
	
	public int getSum() {
		int sum = 0;
		for (int i = -1; i <= num; i++) {
			sum += i;
		}
		return sum;
	}
}

 

11. 아래의 클래스를 작성하시오.

StraPrint strPrint = new StarPrint();

strPrint.printTriangle(3); 
System.out.println();
strPrint.printReverseTriangle(3); 
===============================
*
**
***

***
**
*

11-1. 메인 클래스

public class StarPrintMain {

	public static void main(String[] args) {
		StarPrint strPrint = new StarPrint();

		strPrint.printTriangle(3); 
		System.out.println();
		strPrint.printReverseTriangle(3); 
	}

}

11-2. 계산 클래스

public class StarPrint {
	int num;

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public void printTriangle(int num) {
		for (int i = 1; i <= num; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print("* ");
			}
			System.out.println();
		}
	}

	public void printReverseTriangle(int num) {
		for (int i = 1; i <= num; i++) {
			for (int j = num; j >= i; j--) {
				System.out.print("* ");
			}
			System.out.println();
		}
	}
}

 

12. 아래의 프로그래밍을 작성하시오.

Gugudan gugudan = new Gugudan();
gugudan.printGugu(10);  //1단부터 10단까지 출력
gugudan.printGugu(20);  //1단부터 20단까지 출력

12-1. 메인 클래스

public class GugudanMain {

	public static void main(String[] args) {
		Gugudan gugudan = new Gugudan();
		gugudan.printGugu(10);  //1단부터 10단까지 출력
		gugudan.printGugu(20);  //1단부터 20단까지 출력
	}
}

12-2. 계산 클래스

public class Gugudan {
	int num;
	
	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public void printGugu(int num) {
		for (int i = 1; i <= num; i++) {
			for (int j = 1; j <= 9; j++) {
				System.out.print(i + " x " + j + " = " + (i * j) + "\t");
			}
			System.out.println();
		}
	}
}

 

13. 아래의 BankAccount 객체에 대하여 그림을 그리시오.

BankAccount ref1 = new BankAccount();
BankAccount ref2 = ref1;

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

패키지와 접근제한자  (0) 2021.05.11
클래스의 생성자  (0) 2021.05.11
반복문 심화 및 메소드 기초  (0) 2021.04.30
조건문과 반복문  (0) 2021.04.30
키워드와 연산자  (0) 2021.04.30