· 오늘 공부한 것
팀과제
- 상품삭제기능
- 완료 주문목록 기능
· 공부한 내용, 궁금한 내용, 부족한 내용
개인과제로 진행했던 키오스크 만들기에서 이번에는 팀과제로 좀 더 추가적인 작업을 진행하였다. 그래서 개인이 아닌 팀 프로젝트이기 때문에 먼저 개인들이 진행한 코드리뷰를 진행하였다. 왜냐하면 가장 알맞은 코드로 처음 틀을 작고 시작하기로 했기 때문이다. 그 이후에 해야 할 작업을 정하고 역할을 나누었는데 나는 그중에서도 상품삭제기능과 완료 목록 기능을 하게 되었다. 이 두 기능은 관리자로 들어갔을 때 수행할 수 있는 기능이기에 기존 개인과제에서 진행한 부분과 다른 곳에서 진행하였다.
상품삭제 기능
ManagerApp.java
private static void deleteProduct() {
Scanner sc = new Scanner(System.in);
Menu.printId(KioskApp.menus);
System.out.println("\u001B[32m[ 상품 삭제 ]\n" +
"삭제할 상품의 ID를 입력해 주세요\u001B[0m"
);
String productId = sc.nextLine();
Boolean removeCheck = Product.deleteProduct(productId);
if (removeCheck) {
System.out.println("\u001B[34m해당상품이 삭제되었습니다\u001B[0m");
} else {
System.out.println("\u001B[31m해당상품은 상품목록에 없습니다\u001B[0m");
}
}
위에 코드에서 Product 객체에 있는 deleteProduct 메서드를 실행하고 있다. 이것의 출력값은 boolean으로 true면 삭제가 진행한 것이고 false면 삭제하지 못한 것이다. 그러면 deleteProdcut 메서드를 보면 아래와 같다.
Product.java
public static Boolean deleteProduct(String target) {
ArrayList<Menu> menus = KioskApp.menus;
String menuId = target.split("#")[0];
String productId = target.split("#")[1];
Boolean removeCheck = false;
for (int i = 0; i < menus.size(); i++) {
if (Objects.equals(menus.get(i).getId(), menuId)) { // 같은 메뉴
for (int j = 0; j < menus.get(i).products.size(); j++) {
int productIdx;
if (Objects.equals(menus.get(i).products.get(j).getId(), productId)) { // 같은 상품
productIdx = j;
menus.get(i).products.remove(j);
removeCheck = true;
break;
}
}
// 메뉴안에 모든 상품이 삭제된 경우 해당 메뉴도 삭제
if (menus.get(i).products.isEmpty()) {
menus.remove(i);
}
}
if (removeCheck) break; // 불필요한 반복문 중지
}
return removeCheck;
}
매개변수로 들어온 productId는 "#"을 기준으로 앞에는 menuId 뒤에는 productId 형태로 구성되어 있다. 그리고 이것들을 가지고 같은 메뉴가 있는지 확인하고 메뉴 안에 같은 상품이 있으면 삭제하는 작업을 진행한다. 그리고 여기서 상품을 삭제했을 때 메뉴 안에 상품이 1개도 없을 경우 해당 메뉴도 삭제하는 작업도 진행하였다.
완료 주문 목록 기능
이 기능은 기존 kiosk앱에서 주문 완료를 하는 기능이 있었기에 완료된 목록을 과제에서 주어진 형태로 나타내주는 작업만 해주면 되었다.
private static void completeOrderList() {
ArrayList<Order> completedOrders = KioskApp.completedOrders;
double total = 0;
System.out.println("\u001B[32m[ 완료 주문목록 ]\u001B[0m");
for (Order order : completedOrders) {
System.out.println("------------------------------");
System.out.println("\u001B[36m대기 번호 : \u001B[0m" + order.getWaitingNum());
System.out.print("\u001B[36m주문 상품 목록 : \u001B[0m| ");
for(Product product : order.instanceMenus){
System.out.print(product.getName() + " |");
total = total + product.getPrice() * product.getCount();
}
System.out.println("\n\u001B[36m주문 총 가격 : W \u001B[0m" + total);
total = 0;
System.out.println("\u001B[36m주문 일시 : \u001B[0m" + order.getTime());
System.out.println("\u001B[36m요청 사항 : \u001B[0m" + order.getOffer());
System.out.println("\u001B[36m완료주문 일시 : \u001B[0m" + order.getCompleteTime());
System.out.println("------------------------------");
}
}
과제에서 원하는 형태는 다음과 같다.
- 대기 번호
- 주문 상품 목록
- 주문 총 가격
- 주문 일시
- 요청 사항
- 완료주문 일시(날짜는 ISO 8601 형식으로 조합된 UTC 날짜 및 시간 예) 2016-10-27T17:13:40+00:00
· 오늘 서칭 한 자료
· 느낀 점
- 과제 진행 시 각자 맡은 역할을 구현하는 식으로 했기 때문에 나는 후반부에 작업을 시작할 수 있었다. 그렇기에 다른 사람이 만든 코드를 이해하는 작업도 필요했기에 소통의 중요성을 느꼈다.
- 내가 작업을 하고도 다른 사람이 이해할 수 있는 코드로 짜는 것이 중요하다고 느꼈다.
- 누가 읽어도 책 읽듯이 읽어지는 코드가 좋은 코드라고 생각한다.
'Today I Learned' 카테고리의 다른 글
2023-11-06 TIL (0) | 2023.11.06 |
---|---|
2023-11-03 TIL (0) | 2023.11.03 |
2023-10-23 TIL (0) | 2023.10.23 |
2023-10-18 TIL (0) | 2023.10.19 |
2023-10-17 TIL (0) | 2023.10.18 |