-
[부트캠프] NBCStudentManager 프로젝트 1일차부트캠프/프로젝트 2024. 8. 7. 20:54
프로젝트 명 NBCStudentManager
학생 정보를 관리하는 프로그램을 만드는 프로젝트로
다음의 UML 기반으로 제작했다.
내가 맡은 역할
조회하고자 하는 학생이 듣는 과목의 특정 회차 등급을 조회하는 함수를 구현하는 것이 내가 맡은 역할이었다.
우선, 제일 먼저 해당 함수의 시나리오를 구상해봤다.
- 학생의 고유번호를 입력 받는다.
- 학생이 실존하는 학생인지 체크한다.
- 과목 번호를 입력 받는다.
- 학생이 해당 과목을 듣는지 체크한다.
- 회차를 입력 받는다.
- 학생이 해당 회차에 시험을 봤는지 체크한다.
- 출력한다.
그 다음, 아래와 내용과 같이 세부적으로 파고 들었다.
- 학생이 실존하는 학생인지 체크하기
- List에 해당 학생의 ID가 있는지 확인한다.
- 과목 번호를 입력받는다.
- List에 해당 과목ID와 일치한 객체가 있는지 확인한다.
- 그 후, 해당 Student객체에서 수강중인 과목 List에 입력받은 과목 번호가 있는지 체크한다.
- 회차를 입력 받는다.
- 회차가 1~10 사이의 숫자인지 체크한다.
- Score List에 입력받은 과목 ID, 학생 ID 정보를 담고 있는 내용이 있는지 확인하고,
해당 회차에 시험을 봤는지 확인한다.
문제점
Filter와 findFirst와 같은 메서드를 처음 써보다보니 확인하는 기능을 구현하던 중 길을 잃었다.
내가 예상한 findFirst는 매개 변수로 Ramda 함수를 넣어줄 경우 해당 내용과 일치하는 첫번째 객체를 반환할 줄 알았지만,
Stream.Filter와 연계되어 작동되는 것이었다.
시나리오대로 작성한 코드
// 수강생의 특정 과목 회차별 등급 조회 private static void inquireRoundGradeBySubject() { try { Student student = getStudentByInput(); showStudentInfo(student); Subject foundSubject = getSubjectByInput(student); Score subjectScore = findScoreByStudentIDSubjectId(foundSubject.getSubjectId(), student.getStudentId()); int round = getRoundByInput() - 1; // 회차 점수 확인 if (subjectScore.getScores()[round] == -1) { throw new Exception("해당 회차의 시험을 본 이력이 존재하지 않습니다."); } System.out.printf("%s의 %s과목 %d회차 등급은 %c입니다.", student.getStudentName(), foundSubject.getSubjectName(), round + 1, subjectScore.getRank()[round]); } catch (Exception ex) { System.out.println("Error : " + ex.toString()); } }
완성
'부트캠프 > 프로젝트' 카테고리의 다른 글
[부트캠프] NBCStudentManager 2일차 (0) 2024.08.09 [프로젝트/KPT] 프로젝트를 끝 마치며 (0) 2024.08.08 [IntelliJ] 한글 깨짐 오류 (0) 2024.07.26 [프로젝트/KPT] 프로젝트를 끝 마치며 (0) 2024.07.19 [부트캠프] T1F3 프로젝트 2일차 (0) 2024.07.17