2주 동안 Java에 대해서 기본적인 강의를 수강하며, 개인 프로젝트, 팀 프로젝트를 진행하였다.
생각 보다 짧은 기간 내에 다양한 것들을 경험해보는 좋은 시간을 가진 느낌이다.
우선 이 시간동안 함께 걸어온 광주 님, 규빈 님, 유석 님에게 고생하셨고, 감사하다는 말을 먼저 전하고 싶다. 😀
팀 프로젝트에 대한 소개에 앞서 먼저 개인 프로젝트에 대한 간략한 소개를 한다면...
개인 프로젝트 🍕
개인 프로젝트는 자신이 평소 좋아하는 음식을 주제로 Kiosk를 개발하는 것이었다.
https://github.com/junxtar/java-kiosk
자바를 활용한 피자 주문 프로그램 만들기 🍕
느낀점 ✏️
개인 프로젝트를 진행하면서 기능 부분에서 어려움을 느꼈다기보다는
프로젝트를 어떻게 설계할 것인지에 대해서 더 많은 시간을 쏟아 부었다.
또한 Class Naming에 또한 같은 고민을 많이 했다.
위와 같은 부분들을 고민해보면서 "아직 내가 부족하구나" 라는 생각을 했다.
튜터님들과 나의 고민을 공유해보면서 이전보다는 더 넓은 시야를 가질 수 있었다.
개인 프로젝트에서의 부족했던 부분들을 보완해서
팀 프로젝트에 더 긍정적 영향을 끼치겠다고 다짐을 했다.
팀 프로젝트 🏨
개인 프로젝트 종료와 동시에 팀 프로젝트가 발제가 되었다.
팀 프로젝트의 주제는 총 2가지 중 하나를 선택하는 것이었다.
✅ 개인 과제의 키오스크에 더 추가된 기능을 구현
✅ 호텔 프로그램을 구현
우리 팀원들은 각자의 개인 과제 코드를 재활용한다면, 처음 부터 이해하기 힘들 것이라고 판단하여
두번째, 호텔 프로그램을 새롭게 구현해보면서 개인과제에 녹여내지 못했던 것들을 녹이기로 결심했다.
호텔 프로그램 구현의 필수 요구사항은 다음 아래와 같다.
1. 호텔은 여러 객실, 보유 자산을 가지고 있다.
2. 객실은 객실 당 하루에 한 사람만 예약이 가능하다.
3. 객실은 크기, 숙박비를 가진다.
4. 예약은 객실, 고객의 이름, 고객의 전화번호, 예약 날짜를 가지고 있다.
- 전화 번호 제한(XXX-XXXX-XXXX) 정규 표현식
- 예약 날짜 (날짜는 ISO 8601 형식으로 조합된 UTC 날짜 및 시간)
5. 고객은 이름, 전화번호, 소지금을 가진다.
- 고객 소지금보다 비싼 방은 예약 불가
6. 호텔은 모든 예약 목록을 조회 할 수 있다.
7. 고객은 자신의 예약 목록을 조회 할 수 있다.
8. 고객은 자신의 예약을 취소 할 수 있다.
설계 🤔
우리팀은 초기에 출력값과 입력값을 메모장에다가 적어보면서 설계를 시작하였다.
이렇게 입출력을 메모장에 정리한 결과 크게 Manager / Guest 로 나눌 수 있었다.
우리는 아래와 같이 팀원을 나눠서 기능을 정리하고 코드를 구현하기로 결정하였다.
프로젝트 진행에 앞서 놓친 부분 😵
나는 사전캠프 전 부터 Java라는 언어와 익숙해서 다른 분들도 기초 강의 및 개인과제 기간을 모두 걸쳤으니
팀 과제에 무리가 없다고 판단을 했었다.
하지만 팀원을 나누고 팀 과제를 진행하면서 확실히 느꼈다.
아직.. 팀 과제를 진행하기에는 무리가 있을 수 있겠다고... 생각을 했다.
이 부분에 대해서 팀 프로젝트에 관한 내용을 모두 정리 한 후에 어떻게 이 문제를 해결했는지 작성을 하겠다.
어려웠던 부분 😔
우선 기능적으로 구현하지 못할 부분은 보이지 않았다. 하지만 문제는 설계 부분이다. 어떻게 초기에 설계를 할지에 대해서 정말 큰 문제가 있었다. 바로 폴더 구조는 어떻게 구현을 할 것이고, Class Naming 같은 경우도 하나씩 고민을 정말 오랫동안 한 것 같다.
아래 링크는 우리 팀이 가장 고민을 했던 부분을 Mark Down 파일에 정리 하였다.
클래스의 순환 참조 문제
https://github.com/junxtar/TIL/blob/main/Problem/structural.md
느낀점 ✏️
이번 팀 프로젝트는 개인 프로젝트와 난이도는 비슷하다고 생각을 한다.
하지만 팀원들과 함께 진행을 하다보니 설계를 하는 측면에서 내가 놓치고 있는 부분을 팀원들이 언급해주면서
설계 하는 부분에서 놓치고 가는 부분 없이 수월하게 구현을 한 것 같다.
또한, 내가 작성한 기능 혹은 설계에 관해서 "왜 이렇게 구현을 하였고, 설계를 하였는지"에 대해서 팀원들에게
설명하기에 앞서 내 스스로가 먼저 나에게 물어볼 수 있었던 소중한 시간이었던 것 같다.
이상으로 팀 프로젝트에 대한 설명을 마무리 하며 위에서
언급했던 프로젝트 진행에서 놓친 부분을 어떤 방법으로 해결했는지 작성하겠다.
해결법 🔎
우선 팀 프로젝트를 수행하기 부족하겠다고 생각한 팀원분들의 역량을 체크했다.
체크한 결과 아직 프로그래밍 기초 숙달이 필요하다고 느껴서 개인적으로 흥미를 느낄 수 있게 문제를 내어주고 푸는 방식을 택했다.
내 자신도 프로그래밍을 처음 배울 때 흥미를 잃지 않았기 때문에 지금 여기까지 올 수 있었다고 생각을 한다.
앞에서도 언급을 했지만, 처음 프로그래밍을 접할 때 가장 중요한 것은 흥미를 잃지 않는 것이다.
물론 사전에 지급되었던 기초 강의가 부족한 부분 없이 많은 사람들이 보고 이해할 수 있는 강의임은 틀림없다.
하지만 단기간에 그 모든 것을 이해하는 것은 처음 Java를 배우는 사람이라면 정말 어려울 수 있겠다고 느꼈다.
제공한 문제 List 📜
1. UpDown Game
컴퓨터가 램덤한 숫자를 지정한 후 사용자의 입력을 통해서 램덤 숫자보다 크면 Down 작으면 Up을 출력하는 게임
UpDown 게임을 시작하겠습니다!!!
램덤으로 입력된 숫자를 맞춰주세요.
숫자는 1부터 100 사이의 숫자입니다.
50
Down!
25
Down!
15
Down!
10
Up!
11
정답입니다.
2. 우승 상금 Game
숫자 두개를 입력 받아 두개의 숫자가 같다면 두 수의 합 * 1000을 출력 다르다면 둘 중 큰 수 * 1000을 출력하는 게임
우승 상금 게임!!!
첫번째 숫자: 6
두번째 숫자: 6
상금: 12000
---------------------------------------
우승 상금 게임!!!
첫번째 숫자: 1
두번째 숫자: 6
상금: 6000
----------------------------------------
우승 상금 게임!!!
첫번째 숫자: 6
두번째 숫자: 1
상금: 6000
3. 구구단 Game
숫자를 입력 받아 해당 숫자의 구구단이 출력되는 게임
구구단 게임!
몇단을 출력하시겠습니까? 9
9 x 1 = 9
9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81
4. 배수 체크 Game
숫자를 입력 받아 2와 3의 배수인지 체크하는 게임
환영합니다.
입력 받은 수 까지 2의 배수인지 3의 배수인지 체크합니다!!
입력: 10
1
2 -> 2의 배수입니다.
3 -> 3의 배수입니다.
4 -> 2의 배수입니다.
5
6 -> 2와 3의 배수입니다.
7
8 -> 2의 배수입니다.
9 -> 3의 배수입니다.
10 -> 2의 배수입니다.
5. 배열에 과일 담기 Game
3의 크기를 가진 배열을 선언 한 후 과일을 담아 출력해보기
좋아하는 과일 3가지를 배열에 넣고 출력해봐요!
사과
딸기
바나나
배열의 길이: 3
1번째: 사과
2번째: 딸기
3번째: 바나나
🥲 마치며 ...
2주라는 시간이 생각보다 너무 빨리 흘렀다. 프로젝트를 진행함에 있어서는 정말 수월하게 진행했다.
다만 후회가 되는 것이 두개가 있다.
첫번째, 강의를 수강하는 기간동안 더 팀원에게 신경썼었다면, 기초에 대해서 더 많이 알려드리고 팀 프로젝트를 같이 참여할 수 있었을 것 같다. 이부분이 가장 후회가 되는 부분이다.
두번째, 이번 팀 프로젝트가 끝나면서 앞으로는 Spring에 대해서 배우게 된다는 압박감에 기초에 대해서 설명을 해주면서 조금 더 빠르게 배웠으면 하는 바램에 억양도 조금 쎄졌었던 것 같다.
이 팀을 유지하는지는 잘 모르겠지만, 앞으로 모르는 것 혹은 공유할 학습 내용이 있다면 DM 혹은 메타 버스 내부에서 찾아와 서로 이야기하는 시간을 앞으로도 쭈욱 가졌으면 좋을 것 같다. 2주동안 팀원들 너무 고생했다는 말로 회고록을 마치겠다.
광주 님, 규빈 님, 유석 님 고생하셨습니다. 😀
'회고' 카테고리의 다른 글
[내일배움캠프] ✏️ 팀프로젝트 회고록 (Spring 입문 및 숙련 주차) (1) | 2023.11.27 |
---|---|
[내일배움캠프] ✏️ 미니프로젝트 회고록 (0) | 2023.10.12 |