Download presentation
Presentation is loading. Please wait.
1
Java Presentation 중간 시험2 풀이 http://destiny738.tistory.com
15 / 05 / 2013
2
문제 풀이 1번 다음 문장 중 틀린 것은? 자바 메소드는 한가지 형태만 있다.
자바 프로그램에서 처음 실행되는 메소드는 main 메소드이다. 자바 메소드는 어떤 값을 되돌려 주어야 한다. 자바 메소드 안에서 자기 자신을 호출 할 수 있다. 자바 메소드를 호출하는 경우 어떤 메소드를 호출하는지 분명해야 한다. << 풀이 >> [return type] [prefix] [function Name] ([Parameters]){ [body] } JVM은 자바 프로젝트 파일을 순회하다가 가장 먼저 나오는 Main을 실행 void 메소드는 어떤 값도 되돌려 주지 않는다. Recursive call에 대한 설명입니다. 메소드 호출시 메소드 이름을 정확히 명세하여 호출합니다. 15 / 05 / 2013
3
문제 풀이 2번 http://destiny738.tistory.com 15 / 05 / 2013
class Rectangle { // a. 가로와 세로를 나타내는 변수를 선언하고 초기값을 1로 한다 int length = 1; int width = 1; // b. length와 width라는 변수의 현재 값을 알려 준다 public int getLength( ) { return length; } public int getWidth( ) { return width; } // c. length와 width라는 변수의 값을 입력 매개변수의 값으로 변경한다 public void setLength(int NewLength) { length = NewLength; } public void setWidth(int NewWidth) { width = NewWidth; } // d. 둘레를 계산하여 되돌려 준다 public int getPerimeter( ) { return (getLength( ) + getWidth( ) * 2); } // e. 면적을 계산하여 되돌려 준다 public int getArea( ) { return (getLength( ) * getWidth( )); } } 15 / 05 / 2013
4
문제 풀이 2번 사각형의 둘레 공식이 잘못 적용 되었다. (getLength()+getWidth()) * 2
class Rectangle { // a. 가로와 세로를 나타내는 변수를 선언하고 초기값을 1로 한다 int length = 1; int width = 1; // b. length와 width라는 변수의 현재 값을 알려 준다 public int getLength( ) { return length; } public int getWidth( ) { return width; } // c. length와 width라는 변수의 값을 입력 매개변수의 값으로 변경한다 public void setLength(int NewLength) { length = NewLength; } public void setWidth(int NewWidth) { width = NewWidth; } // d. 둘레를 계산하여 되돌려 준다 public int getPerimeter( ) { return (getLength( ) + getWidth( ) * 2); } // e. 면적을 계산하여 되돌려 준다 public int getArea( ) { return (getLength( ) * getWidth( )); } } 사각형의 둘레 공식이 잘못 적용 되었다. (getLength()+getWidth()) * 2 15 / 05 / 2013
5
문제 풀이 3번 Rectangle 클래스를 이용하는 다음 자바 문장 중 사실상 하는 일이 없는 것은?
(각 문장은 연속되어 있다고 가정한다.) Rectangle ract = new Rectangle(); rect.setLength(3); rect.setWidth(5); System.out.println(“둘레 = ”+ rect.getPerimeter()); rect.getArea(); Rectangle 클래스를 생성한다. ract의 length값을 3으로 변경한다. ract의 width값을 3으로 변경한다. ract의 둘레를 출력한다. rect의 넓이를 얻어온다. 저장되는 변수도 없고, 출력도 하지 않는다. 이는 하나 마나 한 문장이 된다. 15 / 05 / 2013
6
문제 풀이 4번 다음 문장 중 틀린 것은? 클래스의 변수들은 객체 변수이거나 클래스 변수이다.
객체를 초기화하는 방법은 생성자 메소드를 사용하는 방법밖에 없다. a = b;라는 배정문의 의미는 a, b의 변수 유형에 따라 다른 의미를 갖는다. 메소드는 객체 혹은 클래스를 대상으로 호출되어야 한다. 메소드 호출시 메소드 이름 앞에 아무것도 나오지 않는다면 그 메소드는 같은 클래스 내에 정의되어 있어야 한다. 15 / 05 / 2013
7
문제 풀이 4번 다음 문장 중 틀린 것은? 클래스의 변수들은 객체 변수이거나 클래스 변수이다. static으로 정의 된 클래스 변수는 클래스 변수로 사용됩니다. 일반 클래스 변수는 객체 변수로 사용됩니다. 객체를 초기화하는 방법은 생성자 메소드를 사용하는 방법밖에 없다. 객체를 초기화 하는 방법으로는 생성자 메소드를 사용하는 방법과 클래스 변수를 선언할 때 초기화 하는 방법이 있다. (ex. 2번 문제의 Rectangle class) 15 / 05 / 2013
8
문제 풀이 4번 다음 문장 중 틀린 것은? a = b;라는 배정문의 의미는 a, b의 변수 유형에 따라 다른 의미를 갖는다.
맞는 말입니다. 메소드는 객체 혹은 클래스를 대상으로 호출되어야 한다. static method는 클래스를 대상으로 호출합니다. 일만 method는 객체를 대상으로 호출 합니다. 메소드 호출시 메소드 이름 앞에 아무것도 나오지 않는다면 그 메소드는 같은 클래스 내에 정의되어 있어야 한다. 15 / 05 / 2013
9
문제 풀이 5번 다음 클래스 내용 중 컴파일 하면 오류가 나는 부분은? http://destiny738.tistory.com
class Date { int year, month, day; public static int numCreated = 0; public Date(int yr, int mon, int dy) { numCreated++; year = yr; month = mon; day = dy; } public int getYear() { return year; } public int getMonth(); { return month; } public int getDay() { return day; } public static void main(String[ ] argv) { System.out.println("Num = " + Date.numCreated); // a Date d = new Date(2012, 4, 15); // b int curday = d.getDay( ); // c int curmonth = d.getMonth( ); // d int curyear = Date.year; // e 15 / 05 / 2013
10
문제 풀이 5번 다음 클래스 내용 중 컴파일 하면 오류가 나는 부분은? http://destiny738.tistory.com
class Date { int year, month, day; public static int numCreated = 0; public Date(int yr, int mon, int dy) { numCreated++; year = yr; month = mon; day = dy; } public int getYear() { return year; } public int getMonth(); { return month; } public int getDay() { return day; } public static void main(String[ ] argv) { System.out.println("Num = " + Date.numCreated); // a Date d = new Date(2012, 4, 15); // b int curday = d.getDay( ); // c int curmonth = d.getMonth( ); // d int curyear = Date.year; // e 틀리 셨다면, Static variable, Static Method의 개념에 대해서 살펴봅시다. 15 / 05 / 2013
11
문제 풀이 6번 다음 프로그램이 출력하는 값은? http://destiny738.tistory.com
class CD_Collection { private int num_cds, value_cds; public CD_Collection(int num, int value) { num_cds = num; value_cds = value; } public void add_cds(int num, int value) { num_cds += num; value_cds += value; public void print ( ) { System.out.println("CD당 평균 가격 : " + average_value( )); private int average_value( ) { return value_cds / num_cds; } class Driver { public static void main(String[ ] args) { CD_Collection music = new CD_Collection(6, 300); music.print( ); music.add_cds(1, 250); music.print( ); music.add_cds(3, 350); music.print( ); music.add_cds(5, 500); music.print( ); } 15 / 05 / 2013
12
문제 풀이 6번 다음 프로그램이 출력하는 값은? CD수 = 6 || 총 가격 = 300 print “ 300/6 = 50 “
class Driver { public static void main(String[ ] args) { CD_Collection music = new CD_Collection(6, 300); music.print( ); music.add_cds(1, 250); music.print( ); music.add_cds(3, 350); music.print( ); music.add_cds(5, 500); music.print( ); } CD수 = 6 || 총 가격 = 300 print “ 300/6 = 50 “ CD수 = 6+1 || 총 가격 = print “ 550/7 = 79 “ CD수 = 7+3 || 총 가격 = print “ 900/10 = 90 “ CD수 = 10+5 || 총 가격 = print “ 1400/15 = 93 “ 15 / 05 / 2013
13
문제 풀이 7번 다음 배열 선언문 중 맞는 것은? int primes = {2,3,4,5,7,11};
int[] score = int[30]; float elapsedTimes[] = {11.47, 12.04, 11.72}; char grades[] = {‘a’, ‘b’, ‘c’, ‘d’, ‘f’}; boolean[] answer = new Bollean[]; <<풀이>> 배열 선언문 : [type] [name] [] = { variables }; c번이 틀린 이유는...? Java의 실수형 default는 double이기 때문에... 맞게 하기 위해서는 float elapsedTimes[] = {(float)11.47, (float)12.04, (float)11.72} 15 / 05 / 2013
14
문제 풀이 8번 values[3]에 저장되어 있는 값은? 9 12 2 6 8 <<풀이>>
4 12 2 6 8 18 values[3]에 저장되어 있는 값은? 9 12 2 6 8 <<풀이>> 배열의 Index는 0부터 시작합니다. 15 / 05 / 2013
15
문제 풀이 9번 다음 반복문들 중 어느 것이 values 배열에 저장되어 있는 각 요소에 정확하게 1을 더하는가?
4 12 2 6 8 18 다음 반복문들 중 어느 것이 values 배열에 저장되어 있는 각 요소에 정확하게 1을 더하는가? for ( int j = 1 ; j < values.length ; j++ ) values[j]++; for ( int j = 0 ; j < values.length ; j++ ) values[j]++; for ( int j = 0 ; j <= values.length ; j++ ) values[j]++; for ( int j = 0 ; j < values.length-1 ; j++ ) values[j]++; for ( int j = 1 ; j < values.length-1 ; j++ ) values[j]++; <<풀이>> 8번에서 설명했듯이 배열의 Index는 0부터 시작합니다. 배열.length 는 배열 요소의 개수를 반환합니다. 위 문제의 경우, 7을 반환하게 될 것입니다. 15 / 05 / 2013
16
문제 풀이 10번 자바 문 ‘System.out.println(values[7]);’의 결과는? 7을 출력한다.
9 4 12 2 6 8 18 자바 문 ‘System.out.println(values[7]);’의 결과는? 7을 출력한다. 18을 출력한다. 아무것도 출력하지 않는다. 실행 오류(run-time)가 일어난다. 변역 오류(compile-time)가 일어난다. <<풀이>> 8번에서 설명했듯이 배열의 Index는 0부터 시작합니다. 이로 인해 크기가 7인 배열의 마지막 Index는 6이 됩니다. 컴파일러는 문법적인 오류만 체크하기 때문에 컴파일은 됩니다. 실행시 오류가 발생하는데 이는 배열 범위를 벗어난 것을 나타낸다. 15 / 05 / 2013
17
Class variables : company, model, year
문제 풀이 12번 Class name 자동차를 나타내는 Car 클래스를 설계하고 구현하라. 자동차는 제조사, 모델과 연식을 가진다. 제조사, 모델과 연식 값을 알 수 있고, 변경 할 수 있어야 한다. 자동차의 제조사, 모델과 연식을 주어진 값으로 초기화 하는 생성자 메소드를 작성하라. Car 객체의 현 상태를 문자열로 반환하는 메소드를 작성하라. Class variables : company, model, year <<get/set method>> getCompany() / setCompan(var) getModel() / setModel(var) getYear() / setYear(var) <<생성자>> Car(var,var,var) <<toString method>> toString() 15 / 05 / 2013
18
문제 풀이 12번 클래스 이름 : Car 클래스 변수 - String company // 제조사를 저장할 변수
- String model // 모델명을 저장할 변수 - int year // 연식을 저장할 변수 Method 1 : 생성자 - 이름 : Car - 매개변수 String inputCompany // 사용자에게 받은 제조사 String inputModel // 사용자에게 받은 모델명 int inputYear // 사용자에게 받은 연식 - 알고리즘 : 사용자에게 받은 값을 이용하여 클래스 변수를 초기화한다. 15 / 05 / 2013
19
문제 풀이 12번 Method 2,3,4 : get Method
- 이름 : getCompany(), getModel(), getYear() - return type : getComapny() - String, getModel() - String, getYear() - int - 알고리즘 : 각각의 클래스 변수를 반환하여 사용자에게 알려준다. getCompany() // company 값을 반환 getModel() // model값을 반환 getYear() // year값을 반환 Method 5,6,7: Set Method - 이름 : setCompany(), setModel(), setYear() - 매개변수 : 사용자에게 받은 새로운 클래스 변수 값 setComapny() // String inputCompany setModel() // String inputModel setYear() // int inputYear - 알고리즘 : 사용자에게 받은 변수로 클래스 변수를 변환한다. 15 / 05 / 2013
20
문제 풀이 12번 Method 8 : toString - 이름 : toString - return type : String
- 변수 retstr : 반환할 변수를 저장한다. - 알고리즘 : 클래스 변수를 보기 좋은 스트링 형식으로 저장하여 반환한다. 저장 형식은 다음을 따르게 만들 것이다. retstr = “회사명 : ”+ company + “\n”; retstr+= “모델명: ” + model + “\n”; retstr+= “연 식:” + year + “년식\n”; 15 / 05 / 2013
21
문제 풀이 12번 http://destiny738.tistory.com 15 / 05 / 2013
Car Class를 시험하는 Driver클래스를 설계하고 작성하라. 두 개의 Car 객체를 만들어라. 첫 번째 Car객체는 제조사가 ‘현대’이고, 모델은 ‘소나타’이고, 연식은 ‘2012’이다. 두 번째 Car객체는 제조사가 ‘기아’이고, 모델은 ‘K9’이고, 연식은 ‘2013’이다. 첫 번째 Car 객체의 상태를 출력하라. 첫 번째 Car 객체의 연식을 2013으로 변경한다. 두 번째 Car 객체의 모델을 K7으로 변경한다. 두 번째 Car 객체의 상태를 출력하라. - 알고리즘 은 위 문제에 나온 순서대로 객체를 생성 후 함수를 호출하면 된다. 15 / 05 / 2013
22
Class variables : id, name, score[3]
문제 풀이 13번 Class name 학생을 나타내는 Student라는 클래스를 설계하고 구현하라. 학생은 학번, 이름, 세 개의 시험점수를 갖는다. 학생의 학번, 이름, 세 개의 점수를 입력 받아 초기화 하는 생성자를 생성하라. 시험 번호와 그 번호에 대응하는 시험 점수를 매개 변수로 받아 그 번호에 대응하는 시험점수를 변경하는 메소드. 시험 번호를 매개변수로 받아 그 번호에 대응하는 시험점수를 반환하는 메소드. 평균을 구하여 반환하는 메소드. 클래스의 현 상태를 문자열 형식으로 반환해주는 메소드. Class variables : id, name, score[3] <<생성자>> Student(var,var,var) <<Set method>> setScore(var,var) <<Get method>> getScore(var) <<user method>> calcAverage() <<toString method>> toString() 15 / 05 / 2013
23
문제 풀이 13번 클래스 이름 : Student 클래스 변수 Method 1 : 생성자 - 이름 : Student - 매개변수
- String name // 이름을 저장할 변수 - String id // 학번을 저장할 변수 - int score[3] // 3개의 점수를 저장할 배열 변수 Method 1 : 생성자 - 이름 : Student - 매개변수 String inputName // 사용자에게 받은 이름 String inputId // 사용자에게 받은 학번 int firstScore // 사용자에게 받은 첫 번째 점수 int firstScore // 사용자에게 받은 두 번째 점수 int firstScore // 사용자에게 받은 세 번째 점수 - 알고리즘 : 사용자에게 받은 값을 이용하여 클래스 변수를 초기화한다. 15 / 05 / 2013
24
문제 풀이 13번 Method 2 : set Method - 이름 : setScore()
- 매개변수 : 변경할 점수 번호와 사용자에게 받은 새로운 점수 testNumber // 변경할 점수 번호 inputScore // 사용자에게 받은 새로운 점수 - 알고리즘 : 시험 번호에 해당하는 클래스 변수를 변경한다. score[testNumber-1] = inputScore; Method 3 : get Method - 이름 : getScore() - return type : int - 매개변수 : 반환 받을 점수 번호 testNumber // 반환할 점수 번호 - 알고리즘 : 사용자에게 받은 점수 번호를 이용해서 반환한다. return score[testNumber-1]; 15 / 05 / 2013
25
문제 풀이 13번 Method 4 : user define method - 이름 : calcAverage
- return type : double - 알고리즘 : 점수를 모두 합쳐서 과목의 수로 나눈 값을 반환한다. return (double)(score[0] + score[1] + score[2]) / 3; Method 5 : toString - 이름 : toString - return type : String - 알고리즘 : 클래스 변수를 보기 좋은 스트링 형식으로 저장하여 반환한다. 저장 형식은 다음을 따르게 만들 것이다. retstr = “이름 :”+ name + “\t”; retstr+= “학번 : ” + id + “\t”; retstr+= “시험 1:” + socre[0] + “\t”; retstr+= “시험 2:” + score[1] + “\t”; retstr+= “시험 3:” + score[2] + “\n”; retstr+= “평균 : ” + calcAverage() + “\n”; 15 / 05 / 2013
26
문제 풀이 13번 한 대학교에서 강의하는 교과목을 나타내는 Course라는 클래스를 설계하고 구현하라. 각 교과목은 교과목명을 가지고 최대 20 명의 Student 객체들을 포함할 수 있다. 최대 20 명의 Student 객체들을 나타내기 위해 배열을 사용해야 한다. 또한 각 Course객체는 몇 명의 Student 객체들이 추가되었는지를 알고 있어야 한다. 교과목의 이름만을 매개변수로 받아 Course 객체를 생성하는 생성자 메소드를 작성하라. 한 학생의 학번, 이름과 세 개의 시험 점수들을 매개변수들로 받아 대응하는 Student 객체를 현 Course 객체에 추가하는 메소드를 작성하라. 모든 학생들의 시험 점수들의 평균을 구하여 반환하는 메소드를 작성하라. 한 교과목을 수강하는 모든 학생들의 모든 정보를 출력하는 메소드를 작성하라. 15분의 시간을 준 후 함께 코딩★ 15 / 05 / 2013
27
Class variables : model, price
문제 풀이 14번 Class name 일반 차량을 나타내는 Vehicle이라는 클래스를 설계하고 구현하라. 일반 차량은 모델명과 가격이 있다. 사용자에게 받은 값을 이용하여 모델명과 가격을 초기화하는 생성자를 생성하라. 일반 차량의 모델명과 가격을 알 수 있어야 한다. 일반 차량의 모델명을 주어진 값으로 변경할 수 있어야 한다. 일반 차량의 현재 상태를 문자열의 형태로 출력해야 한다. 문자열 출력 예시 : 모델명 = 소나타, 가격 = 5분의 시간을 드리겠습니다. 한번 설계 또는 코딩해주세요. 5분 뒤 제가 설계문서를 설명해 드린 후 다시 또 5분을 드리겠습니다. 후에 함께 코딩을 하도록 하겠습니다. Class variables : model, price <<생성자>> Vehicle(var,var) <<get method>> getModel() getPrice() <<Set method>> setModel(var) <<toString method>> toString() 15 / 05 / 2013
28
문제 풀이 14번 클래스 이름 : Vehicle 클래스 변수 Method 1 : 생성자 - 이름 : Vehicle - 매개변수
- String model // 모델명을 저장할 변수 - int price // 가격을 저장할 변수 Method 1 : 생성자 - 이름 : Vehicle - 매개변수 String inputModel // 사용자에게 받은 모델명 int inputPrice // 사용자에게 받은 가격 - 알고리즘 : 사용자에게 받은 값을 이용하여 클래스 변수를 초기화한다. 15 / 05 / 2013
29
문제 풀이 14번 Method 2 : get Method - 이름 : getModel(), getPrice()
- return Type : getModel() – String / getPrice() - int - 알고리즘 : 각각의 클래스 변수를 반환하여 사용자에게 알려준다. Method 3 : set Method - 이름 : setModel() - 매개변수 : 새롭게 정의된 모델명 inputModel // 새롭게 정의된 모델명 - 알고리즘 : 클래스 변수를 전달 받은 값으로 변경한다. 15 / 05 / 2013
30
문제 풀이 14번 Method 4 : toString - 이름 : toString
- 알고리즘 : 클래스 변수를 보기 좋은 문자열 형식으로 출력한다. 출력형식은 다음을 따르게 만들 것이다. System.out.println(“모델명 = ” + model + “, 가격 = ” + price ); 15 / 05 / 2013
31
문제 풀이 14번 Class name : Car || extends vehicle
승용차의 배기량을 나타내는 값을 저장해야 한다. 승용차의 배기량도 생성자에서 초기화되게 확장하여라. 배기량의 값을 되돌려줘야 한다. 배기량의 값을 새로운 값으로 변경할 수 있어야 한다. 승용차의 세금을 계산할 수 있어야 한다. 배기량이 3000cc 이상이면 차 가격의 5%이다. 배기량이 3000cc 미만이고, 1500cc 이상이면 차 가격의 3%이다. 배기량이 1500cc 미만이면 차 가격의 1%이다. 승용차의 현재 상태를 문자열의 형태로 출력해야 한다. 출력 예시 : 모델명 = 소나타, 가격 = , 배기량 = 2500, 세금 = 코딩도 함께 해드릴까요? Class variables : volume <<생성자>> Car(var,var,var) <<get method>> getVolume() <<Set method>> setVolume(var) <<toString method>> toString() <<user method>> calcTax() 15 / 05 / 2013
32
문제 풀이 14번 클래스 이름 : Car 부모 클래스 : Vehicle 클래스 변수 Method 1 : 생성자
- 상속 받은 클래스 변수 : model, price - 상속 받은 메소드 : getModel, getPrice, setModel 설계는 생략 클래스 변수 - int volume // 배기량을 저장할 변수 Method 1 : 생성자 - 이름 : Car - 매개변수 String inputModel // 사용자에게 받은 모델명 String inputPrice // 사용자에게 받은 가격 int inputVolume // 사용자에게 받은 배기량 - 알고리즘 : 사용자에게 받은 값을 이용하여 클래스 변수를 초기화한다. 15 / 05 / 2013
33
문제 풀이 14번 Method 2 : get Method - 이름 : getVolume() - return Type : int
Method 3 : set Method - 이름 : setVolume() - 매개변수 : 새롭게 정의된 배기량 inputVolume // 새롭게 정의된 모델명 - 알고리즘 : 클래스 변수를 전달 받은 값으로 변경한다. 15 / 05 / 2013
34
문제 풀이 14번 Method 4 : user define method - 이름 : calcTax
- return type : double - 알고리즘 : 문제에 주어진 설명에 따라 경우를 나눠 세금을 계산하여 반환한다. volume >= 3000, return price * 0.05; volume >= 1500, return price * 0.03; else, return price * 0.01; Method 5 : toString - 이름 : toString - 알고리즘 : 클래스 변수를 보기 좋은 문자열 형식으로 출력한다. 출력형식은 다음을 따르게 만들 것이다. System.out.println(“모델명 = ” + model + “, 가격 = ” + price + “, 세금 = ” + calcTax() ); 15 / 05 / 2013
35
Thank you! Good Luck for your test! (Do your best at test) Q&A
15 / 05 / 2013
Similar presentations