Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[지하철 노선도 미션] 박병욱 미션 제출합니다. #101

Open
wants to merge 25 commits into
base: main
Choose a base branch
from

Conversation

jujubebat
Copy link

READ.me에 기능목록정리
"객체지향의 사실과 오해"를 읽으며 유스케이스에 대해 알게 되었습니다. 미션 요구사항인 "기능 목록 정리"와 같은 것이 아닐까? 라고 생각했습니다. 책에서는 유스케이스에 대해 "요구사항을 기억하고 관리하는 데 필요한 다양한 정신적 과부하를 줄인다." 라고 생각했습니다. 제가 이제까지 느꼈던 바와 똑같았습니다. 이 번 미션에서도 기능 목록 작성에 많은 신경을 썼습니다. 예외 사항이 떠오를 때마다 추가하고, 기존에 작성한 내용이 잘못되거나 추가될 내용이 있을때마다 수정했습니다. 이제 READ.md를 보며 프로젝트를 구현하는 것이 익숙해졌고, 이제 기능 목록 없이는 개발하기 힘들겠다라고 느낄정도로 프로젝트 진행시 많은 도움이 되었습니다.

git의 commit 단위는 정리한 기능 목록 단위로 추가한다.
이번 미션에서는 기능 단위 commit을 특별히 더 신경썼습니다. commit 하기 전까지 했던 작업들을 명확히 정리하고 commit 메세지도 최대한 간결하게 작성했습니다. commit 히스토리를 보니 어떤 과정으로 프로그램이 구현되는지 이전 보다 더 깔끔하게 알 수 있어서 좋았습니다.

객체지향
3주차 미션의 목표는 여러 개의 클래스를 분리한 후 서로 관계를 맺어 하나의 프로그램을 완성하는 경험을 하는 것이었습니다. 저는 이번 미션에서 "객체지향 프로그래밍을 제대로 해야겠구나"라고 생각했습니다. 하지만 쉽지 않았습니다. 이전 미션들보다 3주차 미션은 구현해야할 요구사항, 예외처리 사항이 생각보다 꽤 많았고 구현이 막히는 현상이 발생했습니다. 저는 이제까지 객체지향에 대해 교과서적 정의를 아는 수준 이었습니다. 하지만 3주차 미션을 제대로 하기위해서는 객체지향 프로그래밍이 뭔지 제대로 알아야한다고 생각했습니다. "객체지향의 사실과 오해"라는 책을 2일 동안 읽으면서 객체지향 프로그래밍이 무엇인지 공부했습니다. 하나의 애플리케이션이 맡아야할 책임을 여러개로 나누고, 여러개의 객체에게 나눔으로써 확장 가능하고 재사용 가능한 프로그램 구조를 만들어주는 객체지향의 매력에 빠져들었습니다. 저는 3주차 미션을 구현하기 위해 책에 있는 객체지향 설계 과정을 그대로 따라했습니다. 도메인 모델, 메세지 중심으로 생기는 객체들의 협력 관계, 인터페이스 설계를 직접 종이에 그려보며 객체지향에 대한 이해를 높이고 3주차 프로젝트 설계를 했습니다. 저는 지하철 노선도 관리 프로그램의 책임을 메뉴, 메뉴항목, Input view, out put view, station, line 등의 객체에게 적절히 할당했고, 자율적인 객체들이 메세지를 통한 협력 관계를 이루도록 프로젝트를 구현하려고 노력했습니다. 스스로 보기에도 부족한 점이 많이 보이는 설계이고 구현이지만 그 동안 교과서적 정의만으로 객체지향을 인식했던 제가 객체지향 프로그래밍을 직접 느끼는 좋은 경험을 한 거 같아서 뿌듯하고 앞으로 더 배우고 싶다는 생각을 했습니다.

다형성
각 메뉴를 선택해서 실행하는 로직을 짜려면 if 문 여러개가 필요했습니다. 저는 확장 가능한 구조를 설계하기 위해 추상 클래스와 인터페이스를 활용해서 최대한 분기가 로직에 포함되지 않도록 메뉴 실행 기능을 구현했습니다. 추상 클래스와 인터페이스에 대한 개념만 알고 있었는데, 실제로 활용하여 다형성을 구현해보는 좋은 경험을 했습니다.

3주동안 모든 분들 수고 많으셨습니다. ㅎㅎ

1. 예외 처리 상황 추가
2. 구간 기능 문구 수정
1. 구간 기능 예외 처리사항 추가
1. 불필요한 코드 삭제
2. 전체적으로 코드 포멧팅 수정
1. 메뉴에서 없는 기능 id를 입력하면, 해당 메뉴로 다시 돌아간다.
2. 메뉴에서 기능을 정상적으로 끝마지치 않았다면 해당 메뉴로 다시 돌아간다.
3. 메뉴에서 기능을 정상적으로 끝마친다면, 메인화면으로 돌아간다.
4. 매개변수명 수정, 출력 메세지 포멧 수정
1. getLine 메서드를 LineRepository 클래스의 동일한 기능을 하는 메서드로 교체
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant