대망의 우테코 프리코스 마지막 주차 과제가 나왔다. 과제명은 편의점! 아래는 깃허브(요구사항,내 코드가 있다)
https://github.com/LimJaeEun0930/java-convenience-store-7-LimJaeEun0930
3주차부터 느꼈지만 미션 난이도가 급상승하는 것 같다고 느꼈고 놀랐다. 우테코에선 이렇게 참가자들을 절벽에서 떨어트리고 이 절벽을 기어올랐을 때 살아남았을땐 근육이 엄청 붙어있겠구나 생각했다. 마치 특수부대의 몇개월짜리 선발과정 개발자 버전이라고도 생각이 든다.
일주일의 기간동안 다음기수에 도전해야하나 라는 생각이 들었지만 일단 계속 해결해보자 생각했고 겨우 문제를 해결했다.
요구사항을 몇번 읽었지만 파악이 단숨에 되지 않았고 일단 입출력 요구사항부터 보기로 하였다. 이번 과제는 파일입출력을 하는 부분도 포함되어 되게 흥미롭게 보았다. 지금은 md파일을 읽어 데이터를 불러오는 방식으로 프로그램을 설계하겠지만 우테코에서는 이것을 데이터베이스로 확장시키겠구나 라는 생각도 들었다. 점점 학습의 범위를 넓히는 것 같아 이런 방식의 학습이 흥미로웠다.
이번 과제에서는 정말 mvc패턴이 떠올랐다. 이전까지의 과제에서 mvc패턴은 필요없다고 생각한다. 허나 이번 과제에서는 상품, 프로덕션이라는 분명히 구별되는 클래스가 필요했고, 사용자의 입력을 받는 InputView, 출력을 할때 OutpuView, 이들을 처리하는 controller 의 역할이 필요한 것이 자명해 보였고 mvc 패턴을 쓰게되었다.
사용자의 입력과, 상품의 재고상황을 고려하고 사용자의 입력에 따라 어떤 프로세스로 분기될지 처리하는 것을 처음해보았는데 정말 어려웠다. 이것을 어떻게 처리할지에 대한 고민이 정말 컸다. 다음기수를 생각하게 만든 원인 이었다..
프로그래밍 초반에는 프로모션 상품인지, 일반 상품인지의 분류에 따라 개체를 다르게 만들었는데 프로모션 재고가 부족하여 일부수량을 프로모션 혜택 없이 결제해야 하는 경우를 처리하기 위해 프로모션재고 일반재고의 분류를 개체의 상태(멤버변수)로 만들기로 하였고 괜찮은 선택이었던 것 같다.
사용자의 입력이 끝난 후, 상품들의 재고를 감소할때, 프로모션재고에서 재고를 감소시킬 것이냐, 일반재고에서 재고를 감소시킬 것이냐를 계산하고 그 결과에 맞춰 재고를 감소시키는 기능을 구현하는데에도 애먹었었는데, ProductToCalculateDTO 라는 DTO를 추상클래스로 만들고, 이를 상속받는 두개의 DTO클래스를 만들어 하나는 일반재고 감소분에 대한 DTO, 하나는 프로모션재고 감소분에 대한 DTO를 만들었다. 이를 이용하여 상품의 재고를 감소시키는 메서드에서 두 DTO의 상위클래스인 ProductToCalculateDTO를 파라미터로 설정하여 재고를 감소할 수 있게 만들었다.
이번 미션에서는 한 메서드의 길이가 10줄까지 허용되었다. 미션이 끝난 지금 코드를 보니, 10줄을 맞추려고 인위적으로 메서드를 나눈 흔적도 보이고, 아 여기서 라인수를 줄일 수 있었겠구나 하는 것도 보인다. 최종코딩테스트를 보러갈 수 있을지 모르겠지만 남은기간에 다시 문제를 풀고 시간을 단축해보려는 노력을 해야겠다 싶다. 이번 미션에서 전미션에서 사용한 메서드를 재활용한게 있는데 시간단축에 큰 도움이 되는 것 같다. 이번 프리코스를 통해서 공부를 어떻게 앞으로 해나아가야겠다 라는게 살이 좀더 붙여진 것 같다. 개발자 시장이 안좋다, 암담하다 이런 문구에 놀아나지 말자. 낙관론자들은 어려움 속에서 기회를 보고 비관론자들은 기회속에서 어려움을 본다고 했다. 취업시장이 지금 안좋다고해서 앞으로도 안좋을 것이란 보장은 없다 이또한 지나간다 열심만 다하자. 전략적 사고.전략적 사고.
JAVA) try - with - resources (1) | 2025.03.03 |
---|---|
oop정리1 - OOP definition, 4 main feature (0) | 2025.01.25 |
우아한테크코스 웹 백엔드 7기 프리코스 3주차 회고 (0) | 2024.12.05 |
우아한테크코스 웹 백엔드 7기 프리코스 2주차 회고 (2) | 2024.10.30 |
우아한테크코스 웹 백엔드 7기 프리코스 1주차 회고 (0) | 2024.10.21 |
댓글 영역