Web Developer/JAVA II
2. Constructor (클래스설계) 연습문제 - OMR 카드
sayitditto
2023. 1. 11. 21:58
II. 연습문제
4. OMR
1. OmrCard 클래스
*문제는 객관식으로 문제 개수는 총 5개이다.(답은 1~5중에 하나만 선택 가능)
*학번과 이름을 입력 받는다.
*순서대로 학생의 답 5개를 입력받는 메소드를 만든다.
2. OmrCardReader 클래스
*객체 생성 시 문제의 정답 5개를 입력받아 정답 배열에 저장해둔다.
*OmrCard 하나를 입력받아서 이름, 학번, 점수(100점 만점)를 출력한다.
3. OmrCardTest 클래스
- OMR 카드와 카드 리더기 객체를 만드는 클래스
- OmrCard 객체에는 정답을 입력한다.
- OmrCardReader 객체에는 위에서 만든 OmrCard를 넣어 결과를 받는다.
1) OmrCard
public class OmrCard { // 작성 당하고 끝나는 거
// 필드: 이름, 학번, 문제 마킹
private String name;
private int studentId;
private int [] answer = new int [5]; // 학생이 입력한 정답
// 메소드
// 생성자는 만들지 않음
// setter
public void setName(String name) {
this.name = name;
}
public void setStudentId (int studentId) {
this.studentId = studentId;
}
public void setAnswer(int a1, int a2, int a3, int a4, int a5) {
this.answer[0] = a1;
this.answer[1] = a2;
this.answer[2] = a3;
this.answer[3] = a4;
this.answer[4] = a5;
}
// getters (내가 꺼내서 주는거임)
public String getName() {
return name;
}
public int getStudentId() {
return studentId;
}
public int[] getAnswer() {
return answer;
}
}
2) OmrCardReader
public class OmrCardReader {
// 필드
private int[] correctAnswer = new int[5]; // 답안지
// 메소드
// 생성자 :객체가 만들어진다 = 답을 채운다 -> 다른 과목 채점을 위해 (확장성/ 재활용성을 위해)
public OmrCardReader(int ca1, int ca2, int ca3, int ca4, int ca5) {
this.correctAnswer[0] = ca1;
this.correctAnswer[1] = ca2;
this.correctAnswer[2] = ca3;
this.correctAnswer[3] = ca4;
this.correctAnswer[4] = ca5;
}
//채점하는 메소드
public void printScore(OmrCard card) {
// 이름, 학번, 문제 답
System.out.println(card.getName());
System.out.println(card.getStudentId());
int score = 0;
for (int i = 0; i < this.correctAnswer.length; i++) {
if (this.correctAnswer[i] == card.getAnswer()[i]) {
score += 100 / this.correctAnswer.length;
}
}
System.out.println("점수 : " + score);
}
}
3) OmrCardTest
public class OmrCardTest {
public static void main(String[] args) {
// 나의 의식 (test - main)
// 1. 비어있는 omr 카드 종이를 받는다.
OmrCard omrCard = new OmrCard();
// 2. 카드에 이름, 학번, 문제 마킹을 한다.
omrCard.setName("sayitditto");
omrCard.setStudentId(29326352);
omrCard.setAnswer(3, 4, 2, 1, 3);
// 3. Reader 리더기를 가져와 정답을 확인한다.
OmrCardReader reader = new OmrCardReader(1, 2, 3, 1, 3); // 정답이 들어가있음
reader.printScore(omrCard);
}
}