Microsoft Word - java19-1-midterm-answer.doc

Similar documents
Microsoft Word - java19-1-final-answer.doc

Microsoft Word - java18-1-final-answer.doc

PowerPoint Presentation

Design Issues

JAVA PROGRAMMING 실습 08.다형성

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

JAVA PROGRAMMING 실습 02. 표준 입출력

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

gnu-lee-oop-kor-lec06-3-chap7

JAVA PROGRAMMING 실습 09. 예외처리

PowerPoint Presentation

PowerPoint 프레젠테이션

중간고사

PowerPoint 프레젠테이션

Microsoft Word - cg07-midterm.doc

PowerPoint Presentation

5장.key

Microsoft PowerPoint - 2강

자바 프로그래밍

단국대학교멀티미디어공학그래픽스프로그래밍중간고사 (2011 년봄학기 ) 2011 년 4 월 26 일학과학번이름 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint 프레젠테이션

PowerPoint Presentation

설계란 무엇인가?

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Modern Javascript

쉽게 풀어쓴 C 프로그래밍

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

Cluster management software

슬라이드 1

Microsoft PowerPoint - additional01.ppt [호환 모드]

05-class.key

Microsoft PowerPoint - 04-UDP Programming.ppt

PowerPoint Presentation

JAVA PROGRAMMING 실습 07. 상속

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint Presentation

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

교육자료

Microsoft PowerPoint - Java7.pptx

02 C h a p t e r Java

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

Spring Boot/JDBC JdbcTemplate/CRUD 예제

C# Programming Guide - Types

PowerPoint 프레젠테이션

PowerPoint Presentation

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

PowerPoint Presentation

JAVA PROGRAMMING 실습 02. 표준 입출력

C++ Programming

JAVA PROGRAMMING 실습 05. 객체의 활용

K&R2 Reference Manual 번역본

슬라이드 1

제11장 프로세스와 쓰레드

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - Chapter 6.ppt

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

비긴쿡-자바 00앞부속

설계란 무엇인가?

신림프로그래머_클린코드.key

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint 프레젠테이션

선형대수학 Linear Algebra

untitled

Microsoft PowerPoint - additional08.ppt [호환 모드]

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

1

12-file.key

중간고사

C++ Programming

PowerPoint 프레젠테이션

A Tour of Java V

Java

ThisJava ..

쉽게

Microsoft PowerPoint - chap11

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

4장.문장

PowerPoint Presentation

Microsoft Word - EEL2 Lab4.docx

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

Microsoft PowerPoint - chap10-함수의활용.pptx

JUNIT 실습및발표

09-interface.key

Microsoft PowerPoint - java2 [호환 모드]

Semantic Consistency in Information Exchange

쉽게 풀어쓴 C 프로그래밍

Transcription:

중간고사 담당교수 : 단국대학교응용컴퓨터공학박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호 (4자리숫자 ) 를기입하면성적공고시학번대신암호를 사용할것임. 1. 다음질문에답을하라. (55 점 ) public class Main { static void square1(int a) { a *= a; System.out.println("inside square1 a=" + a); static void square2(int[] arr) { for (int a : arr) { a *= a; System.out.println("inside square2 a=" + a); static void square3(int[] arr) { for (int i = 0; i < arr.length; i++) { arr[i] *= arr[i]; System.out.println("inside square3 a=" + arr[i]); static void print(int[] arr) { System.out.println(java.util.Arrays.toString(arr)); static void print(int[][] arr) { System.out.println(java.util.Arrays.deepToString(arr)); static void print(string[] arr) { System.out.println(java.util.Arrays.toString(arr)); public static void main(string[] args) { // (1.1) for (int i = 1; i <= 243; i*=3) { System.out.println(i); // (1.2) int k = 0; do { k++; if (k==5) break; System.out.println(k); while (k < 10); 1/7

// (1.3) int[] arr1 = {1, 2, 3; String[] arr2 = {"a", "b", "c", "d"; int sum = sum(arr1); System.out.println("sum=" + sum); // sum=6 String join = join(arr2); System.out.println("join=" + join); // join=abcd // (1.4) arr1 과 arr2 는 (1.3) 사용 print(arr1); print(arr2); int[][] arr3 = {{4, 3,5, { 4,3,7, {7, 2,4; print(arr3); // (1.5) int x = 1; square1(x); System.out.println("after square1 x=" + x); int[] y = {1, 2, 3; square2(y); System.out.print("after square2 y="); print(y); int[] z = { 1, 2, 3, 4; square3(z); System.out.print("after square3 z="); print(z); // (1.6) int[] intarray = new int[5]; intarray[0] = 3; intarray[4] = 18; intarray[2] = 5; intarray[1] = intarray[2]; int w = intarray[0]; intarray[2] = 6; intarray[w] = intarray[1] * intarray[4]; print(intarray); // (1.7) String[] strarray = { "a", "b", "c", "d", "e" ; strarray[5] = "f"; 1.1 main() 에 (1.1) 는 for 루프를이용해서변수의값을매번 3 배로증가시켜서 1 3 9 27 81 243 을출력하는루틴이다. 이것을 while 루프로바꾸어서다시작성하라. (5 점 ) int j = 1; while (j <= 243) { System.out.println(j); j *= 3; 2/7

1.2 main() 에 (1.2) 에서 break 를 continue 로바꿨을때실행결과의차이점 ( 즉, break 를썼을경우실행결과와 continue 를썼을경우실행결과 ) 을자세히설명하라. (5 점 ) break 를썼을경우출력 : 1 2 3 4 (5 를만나면 loop 를빠져나옴 ) k = 0; do { k++; if (k==5) continue; System.out.println(k); while (k < 10); continue 로바꿔썼을경우출력 : 1 2 3 4 6 7 8 9 10 (5 만빼고출력 ) 1.3 main() 에 (1.3) 은 Integer array 의모든요소를더해준값을반환하는 sum 메소드와 String array 의모든요소를연결한값을반환하는 join 메소드구현하라. (10 점 ) static int sum(int[] arr) { int result = 0; for (int i = 0; i < arr.length; i++) result += arr[i]; return result; static String join(string[] arr) { String result = ""; for (int i = 0; i < arr.length; i++) result += arr[i]; return result; 1.4 Method overloading 이무엇인지설명하라. 그리고 main() 에 (1.4) 의실행결과를적고그이유를설명하라. (10 점 ) 메소드오버로딩이란동일한함수명에매개변수가다른함수를둘이상정의하는것으로, 동일한함수기능을수행하지만다른매개변수의경우를처리할때사용 [1, 2, 3] // void print(int[] arr) 사용 [a, b, c, d] // void print(string[] arr) 사용 [[4, -3, 5], [-4, 3, 7], [7, -2, 4]] // void print(int[][] array) 사용 3/7

1.5 main() 에 (1.5) 은 parameter passing 의예를보여주고있다. 실행결과를적고, 그이유를설명하라. ( 예를들어각메소드내부에서인자가어떻게복사되어사용되는지 ). (10 점 ) inside square1 a=1 // -1 * -1 = 1 after square x=-1 // square1 메소드안에서 int a는값을복사하여사용하고메소드사용이끝난후파괴되므로, main의 x = -1는변하지않음 inside square2 a=1 // 1 * 1 = 1 inside square2 a=4 // 2 * 2 = 2 inside square2 a=9 // 3 * 3 = 9 after square2 y=[1, 2, 3] // square2 메소드안에서 int a는값을복사하여사용하고메소드사용이끝난후파괴되므로, main의 y = [1, 2, 3] 은변하지않음 inside square3 a=1 // -1 * -1 = 1 inside square3 a=4 // -2 * -2 = 4 inside square3 a=9 // -3 * -3 = 9 inside square3 a=16 // -4 * -4 = 16 after square3 z=[1, 4, 9, 16] // square3 메소드안에서 int[] arr는레퍼런스를복사하여 z와동일한곳을가리키고, 메소드내부에서값을수정한후파괴되므로, main의 z = 1, 4, 8, 16으로변함 1.6 main() 에 (1.6) 코드가실행된후, 배열을그려라. (10점) 1.7 main() 에 (1.7) 에서 Runtime Exception 이발생한다. 무슨예외상황인지와그이유를설명하라. (5 점 ) ArrayIndexOutOfBoundsException이발생한다. 배열의인덱스는 0 ~ [length 1] 의값을사용가능함. 즉, strarray는 0 ~ 4까지인덱스사용가능. 4/7

2. 다음질문에답하라 (45 점 ) enum Mode { B, C, D abstract class A { // (2.1) protected Mode mode; protected int v; protected A(Mode mode, int v) { this.mode = mode; this.v = v; public abstract void method1(int v); // (2.1) public void method2() { System.out.println("mode=" + mode + " v=" + v); public void method3() { System.out.println(this); public String tostring() { return "a"; class B extends A { public B(int v) { super(mode.b, v); public void method1(int v) { System.out.println("b1=" + v); public String tostring() { return "b"; class C extends A { public C(int v) { super(mode.c, v); public void method1(int v) { System.out.println("c1=" + v); public String tostring() { return "c"; class D extends A { public D(int v) { super(mode.d, v); public void method1(int v) { System.out.println("d1=" + v); 5/7

class E { private int x; public static int y; public E() { this(0,0); public E(int x, int y) { // (2.4) this.x = x; this.y = y; public static void set(int x, int y) { //this.x = x; // (2.5) //this.y = y; // (2.5) public void setx(int x) { // (2.4) this.x = x; public int getx() { // (2.4) return x; public String tostring() { // (2.4) return "E [x=" + x + " y=" + y + "]"; public class Main { public static void main(string[] args) { // (2.2) //A a1 = new A(); //A a2 = new B(); A a3 = new C(20); C a4 = (C)a3; //B a5 = new D(30); //D a6 = (D)a3; // (2.3) A[] elements = {new C(10), new B(20), new D(30); for (int i = 0; i < elements.length; i++) { elements[i].method1(i); elements[i].method2(); elements[i].method3(); // (2.5) E e1 = new E(); //e1.x = 100; E.y = 100; System.out.println(e1); // E [x=100 y=100] 6/7

2.1 추상클래스 (abstract class) 는무엇인가? 추상메소드 (abstract method) 는무엇인가? 코드에서예시를찾아서자세히설명하라. (5 점 ) 추상클래스란하나이상의추상메소드를가지거나, 추상메소드가없지만 abstract으로선언한클래스. 추상클래스는객체를생성할수없다. 위의코드에서 A가추상클래스. 추상메소드란선언은되어있으나구현내용이없는메소드로, 추상클래스를상속받은클래스에서추상메소드를재정의하여구현해야한다. 위의코드에서 method1가추상메소드. 2.2 main() 의 (2.2) 에서 compile error ( 또는 run-time exception) 가발생한다. 각각그이유를설명하라. (10 점 ) //A a1 = new A(); // cannot create A abstract class object //A a2 = new B(10); // compile error; no default B constructor. //B a5 = new D(30); // compile error; cannot convert from D to B //D a6 = (D)a3; // ClassCastException 2.3 main() 의 (2.3) 의실행결과를적어라. 동적바인딩 (dynamic binding) 에주의할것. (10 점 ) c1 = 0 mode=c v=10 c b1=1 mode=b v=20 b d1=2 mode=d v=30 a 2.4 클래스 E 의생성자, 멤버필드 x 에대한 setter/getter, 그리고 tostring() 를작성하라. 직접코드에작성하라. (10 점 ) 2.5 main() 의 (2.5) 에서 e1.x = 100 는 compile error 가발생한다. 그이유를설명하고그부분의코드를수정하라 (5 점 ). 클래스 E 의 set 메소드내부에서도 compile error 가발생한다. 그이유를설명하라. (5 점 ) Private 접근지정자는해당클래스내부에서만사용가능하다. 클래스 E 에서 x 멤버필드는 private 이라서클래스외부에서접근이불가하다. e1.x = 100; 를 e1.setx(100); 으로수정해야한다. 클래스 E 의 public static void set(int x, int y) 메소드가정적 (static) 메소드이므로, 내부에서 this 를사용할수없다. // error: non-static variable this cannot be referenced from a static context - 끝 - 7/7