https://books.google.co.kr/books?id=dxBpDwAAQBAJ&printsec=copyright&redir_esc=y#v=onepage&q&f=false
여기서의 563p의 최종프로젝트인 '학점 산출 프로그램'을 만들어보고자 합니다.
1. 'Good School' 이라는 학교가 있습니다.
2. 학교에는 5명의 학생들이 있습니다.
3. 과목은 수학과 국어가 존재
4. 컴퓨터공학과 학생은 수학, 국어국문학과 학생은 국어가 필수 과목입니다.
점수에 따른 자세한 학점 부여 기준은 다음과 같습니다.
그리고 최종 출력 결과물인 '과목별 결과 리포트'는 다음과 같습니다.
단순히 학생 클래스에 모든 속성을 멤버 변수로 정의하는 게 좋을 수 있다고 생각할 수 있습니다. 만약에 그렇게 한다면 학생이 듣는 과목의 수가 달라지는 경우에는 사용하지 않는 변수도 생기고 학생 클래스가 가지는 변수도 너무 많아지게 됩니다.
(0---* : 0~여러 개 포함, 1 : 1개 포함)
멤버 변수를 보면 필수과목은 어떤 과목이 올지 모르니 Subject클래스 타입으로 만들어주고 동일한 과목의 다른 점수는 Score클래스로 대응하고 몇개의 점수가 올지 모르니 ArrayList<.Score> 대응을 해줍니다.
점수에 따른 학점 평가 방법으로 필수과목과 일반과목으로 나누어지므로 여러 산출 방법 클래스가 구현할 내용을 인터페이스로 정의합니다.
출력 형식을 담당하는 클래스 입니다.
학교 클래스는 유일한 객체 이므로 싱글톤 패턴으로 구현하여야 합니다.
출력을 합니다.