지난 오답노트를 통해 부족했던 부분을 고려하여 다시 코드를 작성한 뒤 결과를 확인하고
교재에 적혀있는 마지막 조건을 추가하였습니다.
'Do it 자바 프로그래밍 입문' 교재에서 해당 프로젝트의 코드는 4번 작성하였습니다.
1. 교재 조건만 보고 소스 없이 코드작성
2. 교재 설명 확인 및 코드 타이핑
> 보완이 필요한 부분 확인
3. 위에서 확인한 부분을 반영하여 전체적인 코드 수정
4. 마지막 조건인 '방송댄스'과목 추가
세번째 작성 때 생각보다 많은 시행착오를 겪었습니다.
구성이 조악하지만 책없이 도전해봤고 직접 책의 코드들도 따라쳐봤기 때문에 매우 손쉽게 할 수 있을 것으로 판단했습니다. 하지만 클래스들의 관계를 책과 비슷하게 가져가려고 했을 때 값의 계산과 인스턴스의 저장이 매우 복잡해짐을 확인할 수 있었습니다.
해당 프로젝트를 통해 중요하다고 느낀 점은 다음과 같습니다.
(입문자의 개인적인 느낌이기 때문에 실제 프로그래밍과 다를 수 있습니다.)
- 현실성
이 프로젝트는 학생들의 등급을 출력하는 프로그램의 구현이였고 당연히 학교는 하나입니다.
그렇기 때문에 학교의 객체(인스턴스)는 하나이며 싱글톤 패턴으로 구현되었습니다. 객체의 실재 특징을 통해 코드를 효과적으로 작성할 수 있다는 점이 인상깊었습니다.
( 과목클래스에 과목을 신청한 학생들을 고려하여 학생리스트를 넣는 것 역시 인상적입니다. )
- 일반화 (formatting?)
교재의 소스작성 방식을 모방하여 별도의 클래스와 출력메소드를 만든 뒤 main()메소드 내에서 해당 메소드를 호출하였습니다. 중구난방으로 main()메소드에서 출력방식을 설정했을 때 보다 훨씬 더 간결해짐을 확인했습니다.
> 간결하고 패턴화된 코드작성 지향
- 자료형 (data type)
인스턴스를 클래스의 메소드를 사용하기 위해 만드는 것으로만 생각하다시피 했지만 인스턴스에 데이터를 저장하여 이를 활용할 수 있다는 생각이 들었습니다.
예를 들어 아래처럼 필드만 있는 클래스를 가정했을 때,
public class Fruit {
private String name;
private int price;
//...
public static void main(String[] args){
Fruit a1=new Fruit(apple, 1000);
Fruit a2=new Fruit(banana, 1200);
//...
}
}
변수 a1과 a2는 각각 자료(Data)를 저장하는 Data Set(저장매체)가 되어 활용될 수 있다는 생각이 들었습니다.
(물론 인스턴스가 객체의 속성과 기능을 의미한다고 (혹은 나타낸다고) 배우나 실질적으로 체감이 되진 않았습니다.)
※ 다양한 프로젝트를 통해 코드실력의 향상 필요!
[수정이 필요한 사항]
- 출력메소드 기능 개선(비효율적)
- 기능 구현에 사용되지 않으며 중복되는 필드 및 메소드 정리 (성적등급관련...)
- 출력결과 모양 다듬기
<작성 소스: gradesys패키지>
https://github.com/JaewookMun/margin
JaewookMun/margin
Contribute to JaewookMun/margin development by creating an account on GitHub.
github.com
<클래스 다이어그램>



<출력결과>

'프로젝트 > 학점 산출 프로그램' 카테고리의 다른 글
['Do it' 프로젝트] 1st 에디션 오답노트 (0) | 2021.05.29 |
---|---|
[Do it 최종프로젝트] 설계 구현 및 클래스 다이어그램 (0) | 2021.05.14 |
[Do it 최종프로젝트] 객체 및 프로그램 설계 (0) | 2021.05.12 |