새로운 개인과제의 시작
2주차때 배운 자바 기초를 바탕으로 풀어내야할 개인과제가 주어졌다.
키오스크처럼 주문 장바구니 담아서 주문완료받아내는 프로그램.
출력은 내부 print로 텍스트가 다지만, 뭔가 시작해보려하니 숨이 턱 막힌다.
대략적으로 위와같은 구성을 짜보았다.
크게 구현해내야할 요소들은 아래와 같다.
- 처음 페이지에서 각 메뉴로 이동. (메뉴, 설명)
- 각 메뉴에서 상품들 리스트 (상품이름, 가격, 설명)
- 상품에 따른 옵션 선택 (더블 패티 등)
- 취소하고 메뉴로 돌아가기.
- 확정하고 장바구니에 추가하기.
- 장바구니 창에서 담은 메뉴 전체와 금액 합계.
- 확정 후 대기번호 및 3초딜레이 후 처음 화면 돌아가기.
- 각 확정주문을 전체 판매리스트에 추가 및 금액 계산.
- 전체 취소로 장바구니 초기화.
상품리스트를 카테고리에 맞게 보여주고 그 데이터들을 객체지향적으로 가져오는것이 중요한 포인트 중 하나일 것이고,
장바구니라는 다른 무언가에 상품객체를 가져오고 쌓고 그것을 다른 클래스에 연결하고 설계하는게 다른 포인트라고 본다.
기본적인 메소드라도 우선 활용해보자
상속, 추상클래스와 같은 것들은 내일 TIL에 정리해보겠다.
막막했지만, 우선 기본적인 텍스트 출력과 주석을 시작으로 전체를 짜보며 메인페이지를 기점으로 코딩을 시작했다.
우선 각 메뉴의 생성자를 만들고 그 안에 있는 각 이름과 설명을 매개변수로 받아 할당할 수 있게 했다.
이후 메뉴 추가 혹은 변경에도 용이하지 않을까 하는 아주아주 사소한 유지보수 대비느낌으로다가.
그래서 MainPage객체를 처음에 하나 생성할 때, 각 메뉴도 생성되고 그 값이 자동으로 출력되게 했다.
저 반복적인 메뉴출력도 반복문으로 처리하면 메뉴가 늘어나거나 줄었을 때, 수정됐을 때도 더 편리하게 적용될 것 같은데 그건 나중으로 미뤄둔다.
번호를 받아 그에 맞는 메소드를 실행시킬 준비를 하고, Main 클래스에서 MainPage가 실행되게 기본 틀을 잡았다.
MainPage내에서 showIndex()메소드를 따로 빼서 초기화면이 자주보일텐데 그 때마다 메뉴 생성자가 실행되는 걸 막고자 했다.
Static 하게~
각 단계마다 넘어갈때 텍스트가 엉킬것 같아서 '-----------' 와같이 대시로 구분선을 넣어주고 싶었다.
근데 이것 또한 굉장히 반복적일 것 같아 굳이 메소드를 활용해볼까 했다.
굳이 메모리를 차지하는 건가 싶기도 한데.. 그냥 :)
아예 Etc클래스를 따로 만들어서 기타 부가적인 메소드를 쌓기로 했다.
lineDiv()를 간단히 만들고, 사용해보기 위해 객체를 생성하려다가 문득,
이걸 꼭 굳이 객체를 생성해야하나..???
이어서 예전에 Static에 대한 설명이 생각나 적용시켰다.
Static하다는 건 객체를 생성해서 그 할당된 메모리에서 가져오는 게 아니라 그냥 클래스에 할당된 메모리에서 가져오는 느낌. 그래서 객체를 생성하지 않고도 바로 접근이 가능하다.
예전에 자바를 처음 배울 때 강사님이 '이 값은 Static하니까 ~해야겠죠?' 이러고 넘어가시는데 크게 와닿지 않았는데, 이번에 크게 깨달았다.
각 객체가 각자의 값을 가져야할때는 객체를 생성하지만 객체간에 같은 값을 공유받고 각자가 공통된 값을 업데이트하고 해야할때는 Static하게 할당해주는 것도 중요해 보인다.
하루 매출금액 같은 경우에 결제완료 될때 그때 그때의 금액을 받아 누적하면 되는 형태라 Static을 써도 좋을까 싶다가도 그날 하루하루의 데이터를 쌓아야하는 기능이 생길것이라면 그 또한 객체를 생성해서 관리하는 게 좋을 지.
생각보다 어려운 키오스크 만들어보기가 꽤나 어렵지만 배운것을 활용한다는 것과 세상에 있는 무언가를 얼추 흉내내본다는 점에서 재밌다.
'Back-End > Java' 카테고리의 다른 글
TIL 230601 : ArrayList와 함께한 오늘의 삽질들. (0) | 2023.06.01 |
---|---|
TIL 230531 : ArrayList와 가까워지기. (0) | 2023.05.31 |
TIL 230525 : @오버라이드 super. this. (2) | 2023.05.25 |
TIL 230524 : 캡슐화..? (접근제어자, getter, setter, 유지보수..) (0) | 2023.05.24 |
TIL 230523 : 클래스 안에 클래스 안에 필드는?? (feat. 다중상속) (0) | 2023.05.23 |