[주요 체크사항]
1. 식별자의 단순화 - 간결하게 표기하지만 명확한 의미 전달이 가능한 식별자 필요
2. 낮은 개념 및 문법활용 능력 - 클래스와 객체지향프로그래밍의 이해 (예: 'has a' 관계 활용)
- 객체 모델링
[추상화 방향]
(super)학생 > (sub)전공 |구분자| (super) 성적 및 등급 > (sub) 과목별 등급 |구분자| mainApp
코드작성을 준비할 때 위처럼 단순화 하여 생각하고 코드를 작성하였지만
교재의 클래스들은 실재 학교시스템처럼 추상화되어 구성되었다.
프로그램을 기획할 때 각각의 요소들이 짜임새있게 구성되어 기능할 수 있도록 생각하는 연습이 필요하다.
- 쌍방향 포함관계
교재의 소스코드를 보면 클래스 Subject와 Student가 서로 포함관계인데, 읽으면서도 잘 이해가 가질 않는다.
서로를 필드로 선언하며 메소드내 매개변수로 활용하는 관계인데,
코드를 읽으며 따라쳐볼 때는 조금 알겠다가도 직접 이러한 관계를 구현하고자하면 방향을 잃게 된다.
- 객체의 중요도 및 프로그램의 지향점
프로그램의 목적 : 교재의 조건 및 출력물을 기반으로 작성해야 했으나 이를 반영 못하였기 때문에 불필요한 클래스를 추가 선언함.

교재에서 점수는 제공되었고 점수에 따라 등급을 구할 수 있는 기능을 넣으면 되었다.
하지만, 개인적 판단으로 점수를 구하는 기능을 추상메소드로 선언했으나 이보다는 등급을 구하는 기능을 어떻게 효율적으로 구현할 수 있을지를 고민해야 했던것이 맞아 보인다.
좌측 상단과 하단 그림을 비교해보면,
직접 작성한 클래스의 경우 과목별로 성적처리 클래스를 만들어줘야 하지만 교재의 경우(좌측 하단) 일반과목과 필수과목 등급을 각각 구하는 클래스를 선언하였다.

코드를 따라치고 확인해보니 과목의 증감에 영향을 덜 받을 것으로 판단된다.
('캡슐화 패턴'이라고 생각합니다.)
< 참고 >
Do it! 자바 프로그래밍 입문(이지스퍼블리싱) - 박은종
'프로젝트 > 학점 산출 프로그램' 카테고리의 다른 글
[Do it 최종프로젝트] 마무리 ('방송댄스'과목 추가) (0) | 2021.05.30 |
---|---|
[Do it 최종프로젝트] 설계 구현 및 클래스 다이어그램 (0) | 2021.05.14 |
[Do it 최종프로젝트] 객체 및 프로그램 설계 (0) | 2021.05.12 |