상세 컨텐츠

본문 제목

ch7~ 학점 산출 프로그램

패캠스프링/part2_java

by hippo0207 2022. 7. 19. 09:17

본문

7. 인터페이스를 활용한 학점 산출 프로그램 만들기

 

Chapter7 · master · Youngju-Jang / Javacoursework · GitLab

GitLab.com

gitlab.com

문제 정의

  • Good School 학교가 있습니다. 이 학교에는 5명의 학생들이 수업을 듣습니다. 과목은 국어와 수학이 있고, 각 학생은 두 과목을 모두 수강합니다.

전공은 컴퓨터공학과 국어국문학 두 가지가 있습니다. 컴퓨터공학과 학생은 수학이 필수과목이고, 국어국문학과 학생은 국어가 필수 과목입니다.

각 학생별로 한 개의 전공을 선택합니다.

이번 학기 각 학생의 성적은 다음과 같습니다.

이름 학번 전공 필수과목 국어점수 수학점수
강감찬 211213 국어국문학과 국어 95 56
김유신 212330 컴퓨터공학과 수학 95 98
신사임당 201518 국어국문학과 국어 100 88
이순신 202360 국어국문학과 국어 89 95
홍길동 201290 컴퓨터공학과 수학 83 56
  • 학점을 부여하는 방벅은 여러 가지가 있습니다. 단순히 A,B,C,D,F를 부여하는 방법, A+, B-처럼 +/-를 사용하는 방법, Pass/Fail 만을 부여하는 방법등이 있습니다.

여기 각 학생에게 학점을 부여하는 데 사용하는 정책은 두 가지입니다. 일반 과목이라면 A ~ F로, 필수 과목이라면 S ~ F 로 분류합니다. 점수에 따른 학점 부여기준은

다음과 같습니다

  • 프로그램 구현 과제

위와 같이 주어진 성적과 각 과목에 대한 학점 정책에 따라 아래와 같이 학점 결과가 나올 수 있도록 구현합니다.

학점의 정책이 추가되는 경우와 과목이 추가되는 경우를 고려하여 객체를 설계하고 학점 정책에 대해서는 인터페이스를 선언하고 각 정책이 해당 인터페이스를 구현하도록 합니다.

과목별 산출

클래스 정의 하고 관계도 그리기

Define.java

public class Define {

	public static final int KOREAN = 1001;  //국어
	public static final int MATH = 2001;    //수학
		
	public static final int AB_TYPE = 0;    // A, B, C
	public static final int SAB_TYPE = 1;   // S, A, B, c
	public static final int PF_TYPE = 2;   // P, F
	
}

학점 평가 정책 설계하고 구현하기

  • 인터페이스 정의하기

점수에 따른 학점의 정책은 여러가지가 있을 수 있습니다. 인터페이스를 먼저 선언하고, 각 정책 클래스가 이를 구현하도록 합니다

리포트 클래스

  • 학점 평가에 대한 클래스들을 인스턴스화 하고 이에 대한 배열을 만들어 각 과목에 점수를 산정할 때 필수 과목인지 일반 과목인지에 따라 각 정책 클래스가 학점을 평가할 수 있도록 구현 합니다.
  • 전반적인 리포트의 생성은 header부분, 본문 부분, tail 부분으로 구성합니다.
  • StringBuffer 클래스를 이용하여 모든 리포트의 내용을 만들고 난후 toString()을 호출 하여 String 클래스로 반환합니다.

프로그램 테스트 하기

  • 주어진 테이터에 기반하여 Student, Subject, Score 객체를 직접 만들어 각 과목에 따른 학점의 결과가 잘 출력되는지 확인 합니다.
  • 모든 학생과 과목을 관리하는 School 맥체를 만듭니다.

School.java

관련글 더보기

댓글 영역