3일간의 짧은 기간동안, 객체지향적인 관점을 가지고 JAVA 언어를 사용하여 프로젝트를 진행했다.
이번 프로젝트에서는 음식 주문 시스템에서 팀원들과 회의를 통해 필요한 기능을 정의하고 UML작성을 통해 메소드 및 변수 등 명세를 함께 정했다.
다음은 우리의 프로젝트인 주문을 자바의 기능이다.
- 회원가입
- 로그인
- 가게 등록과 메뉴 등록
- 가게 조회
- 메뉴 담기
- 주문
이를 구현하기 위한 패키지 구조다.
.
├── JavaOrders.iml
├── README.md
├── code_style.xml
└── src
├── InitRestaurantMenu.java
├── Main.java
├── Utils
│ └── Util.java
├── cart
│ ├── Cart.java
│ ├── CartController.java
│ ├── CartDAO.java
│ ├── CartService.java
│ └── CartView.java
├── main
│ ├── MainController.java
│ └── MainView.java
├── menu
│ ├── Menu.java
│ ├── MenuController.java
│ ├── MenuDAO.java
│ └── MenuService.java
├── order
│ ├── Order.java
│ ├── OrderController.java
│ ├── OrderDAO.java
│ ├── OrderService.java
│ └── OrderView.java
├── restaurant
│ ├── Restaurant.java
│ ├── RestaurantController.java
│ ├── RestaurantDAO.java
│ ├── RestaurantService.java
│ └── RestaurantView.java
└── user
├── CustomerController.java
├── UserDAO.java
├── UserView.java
├── domain
│ ├── Customer.java
│ └── Person.java
└── service
└── CustomerService.java
KEEP
- 객체지향의 SOLID원칙 중 OCP 원칙인 변경에 닫혀있고, 확장에 열린 개발을 할 수 있도록 최대한 분리해서 작성한 점
- 공유하는 메소드명은 팀원들과 함께 정하도록 했으며, 한눈에 보기에 어떠한 기능을 수행하려는지 알 수 있도록 짓고자 노력한 점
- 개발 진행 과정에 있어, 팀원들이 설계와 개발 중 무엇을 더 지향하는지 공유하며 짧은 개발 일정 중에 어떤 것을 더 중점적으로 가져갈지 미리 결정한 점
- 서로의 의견을 존중하고, 구현에 있어 어려운 점들을 공유하여 해결책을 함께 찾아낸 점
PROBLEM
- 팀원들과 상의할 때, 내 의견을 상대방도 잘 이해할 수 있도록 조금 더 명확하게 정리해서 말하지 못한 점
- 내 생각이 틀렸을지도 모른다고 생각하고, 공유하지 못한 점
- 사용자 시나리오를 작성함으로써, 서로 맡은 부분과 구현해야할 부분에 대한 이해도를 높이지 못한 점
TRY
- 최대한 많은 의견을 주고받음으로써, 전체적인 프로세스에 대한 이해를 더 잘하도록 노력하기
- 앞으로도 서로의 의견을 존중하고, 함께 해결책을 찾아내도록 노력하기
조금 더 자바에 대해 잘 알았다면, 팀원들에게 도움이 될 수 있었을텐데라는 아쉬움이 남는다. 다음 프로젝트에서는 이러한 아쉬움이 남지 않도록, 그리고 결합도가 높지 않도록 분리할 수 있는 구현을 해야겠다. 그러려면, 더 노력해야겠지!