우아한테크코스 6기 회고록
0. 우아한테크코스 6기 신청
1. 프리코스 1주차 - 야구게임
2. 프리코스 2주차 - 자동차경주게임
3. 프리코스 3주차 - 로또게임
4. 프리코스 4주차 - 크리스마스 프로모션
5. 최종 코딩 테스트 준비
6. 최종 코딩 테스트 - oncall

4주차 프리코스 Github (https://github.com/woowacourse-precourse/java-christmas-6)

4주차 내 코드 Github (https://github.com/BurningFalls/java-christmas-6-burningfalls)

1. 11월 12일

1~3주차 때 습득한 내용을 바탕으로, 기능 목록 작성부터 시작해서 차근차근 4주차 과제를 해나가기 시작했다. 먼저, 필수적으로 필요한 기능들을 나열했고, 그 기능들을 구현하기 위해 필요한 모델들을 분석했다. 그리고 각 모델이 가져야 할 인스턴스 변수들을 알아낸 뒤, 기능들을 구현하기 위한 서브 기능들이 무엇이 있을지 고민했다.

이 과정을 통해, 어느 모델에서 어느 함수로 기능을 구현할지 틀을 잡아낼 수 있었고, 기능 목록을 작성할 수 있었다. 구현을 하면서 또 원래 계획에는 없던 모델들이 필요해져서 만들긴 했지만, 지난주보다는 훨씬 변동사항이 적어 성장했다는 생각에 뿌듯했다.

3주차 피드백 자료를 보고 toString 메서드를 오버라이딩해서 해당 클래스의 인스턴스변수를 출력할 수 있다는 사실을 알게 되었다. 4주차 과제에서 실제로 이를 적용해 볼 기회가 꽤 많았고, 이 오버라이딩한 메서드를 사용하면서 프린트문을 적을 때 가시성이 뚜렷해질뿐만 아니라, 모델 단계에서 어떻게 프린트할지를 사전에 결정함으로써 중복을 없앨 수 있다는 사실을 직접 느끼고 알게 되었다.

2. 11월 13일

이벤트에는 크리스마스이벤트, 평일이벤트, 주말이벤트 등등의 여러 이벤트가 존재했다. 각각은 이벤트라는 큰 집합에 속하고 서로 조금씩 다르다는 사실을 바탕으로, 이들을 상속으로 관리하면 괜찮을 것 같다는 생각이 들었다. 상속을 했을 때 상속의 정확한 이점을 살릴 수 있을지는 모르겠지만, 명백한 IS-A 관계였기 때문에 일단 상속을 하는 방향으로 구현해보았다.

크게 Event 클래스를 두고 이를 상속받는 WeekdayEvent, WeekendEvent 등등의 클래스를 만들었다. 그리고 모든 이벤트가 할인을 계산하는 메서드가 필요했기 때문에, 메서드 오버라이딩을 수행했다. 여기까지만 해도 무언가 정돈되어있다는 사실 말고는 상속의 명확한 이점을 찾아볼 수 없었다.

그런데 메서드들을 추가로 구현하다보니, 각각의 이벤트들은 전부 이벤트에 속하기 때문에 메서드 내부가 비슷해서 공통되는 부분을 부모 클래스에 정의하면 중복을 줄일 수 있다는 사실을 알게 되었다. 또한, 여러 이벤트 클래스들에서 공통으로 필요한 함수가 있으면 부모 클래스에 한 번만 정의해서 가져다 쓸 수 있어, 여기서도 중복을 줄일 수 있다는 사실도 알게 되었다.

상속에 대해 개념적으로 배우고 기계적으로 따라서 구현해본 적은 있었지만, 그 필요성을 몸소 느끼고 직접 스스로 고민해서 구현해본건 이번이 처음이어서 굉장히 놀라웠다. 아직도 상속을 제대로 응용하려면 멀었지만, 스스로 한발자국 내딛고 성장의 가능성을 열었다는 사실에 기쁨을 느꼈다.

3. 후기

1~4주차 동안 한주한주 성장해나가는 나 자신을 보며 많은 뿌듯함으 느꼈고, 스스로 배우는 이 전체적인 과정 및 방법이 나에게 굉장히 잘 맞는다는 사실을 알게 되었다. 우아한테크코스가 이런 방식으로 진행된다면, 그 안에서 주변 동료들과 같이 멋진 개발자로 성장할 것이라 믿어 의심치 않는다. 프리코스와 같은 정말 뜻깊은 경험을 할 수 있는 기회를 얻게 되어 운영진분들께 대단히 감사함을 느낀다.

댓글남기기