{"id":25065946,"url":"https://github.com/lkdcode/this-is-java-study","last_synced_at":"2025-03-31T13:54:23.726Z","repository":{"id":100369448,"uuid":"584982885","full_name":"lkdcode/this-is-java-study","owner":"lkdcode","description":"this-is-java-study","archived":false,"fork":false,"pushed_at":"2023-04-10T12:26:41.000Z","size":359,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-06T19:58:45.878Z","etag":null,"topics":["java"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lkdcode.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-04T02:35:43.000Z","updated_at":"2023-01-10T07:11:26.000Z","dependencies_parsed_at":"2023-05-14T04:45:25.183Z","dependency_job_id":null,"html_url":"https://github.com/lkdcode/this-is-java-study","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkdcode%2Fthis-is-java-study","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkdcode%2Fthis-is-java-study/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkdcode%2Fthis-is-java-study/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lkdcode%2Fthis-is-java-study/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lkdcode","download_url":"https://codeload.github.com/lkdcode/this-is-java-study/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246477065,"owners_count":20783934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java"],"created_at":"2025-02-06T19:55:46.977Z","updated_at":"2025-03-31T13:54:23.720Z","avatar_url":"https://github.com/lkdcode.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chicken POS\n\n## 🔍 기능 소개\n\n---\n\n#\n\n- 치킨집 사장님이 사용하는 간단한 포스(POS) 프로그램을 구현한다.\n  주문 등록, 결제하기, 프로그램 종료 기능을 가진다.\n\n#\n\n- 메뉴 기본 정보가 주어지며 메뉴 번호, 종류, 이름, 가격을 가진다.\n\n#\n\n- 테이블 기본 정보가 주어지며 테이블 번호를 가진다.\n\n#\n\n- 한 테이블에서 주문할 수 있는 한 메뉴의 최대 수량은 99개이다.\n\n#\n\n- 주문이 등록된 테이블은 결제가 이루어지기 전까지 테이블 목록에 별도로 표시한다.\n\n#\n\n- 주문 내역에 대한 계산을 할 때는 결제 유형에 따라 할인율이 달라진다.\n\n    - 치킨 종류 메뉴의 수량 합이 10개가 넘 경우, 10,000원씩 할인된다.\n    - Ex) 10개는 10,000원 할인, 20개는 20,000원 할인\n    - 현금 결제는 5%가 할인되며 할인된 금액에서 한 번 더 할인이 가능하다.\n    - 주문 혹은 결제가 불가능한 경우 그 이유를 보여 주고, 다시 주문 혹은 결제가 가능하도록 해야 한다.\n\n#\n\n- 최종 결제 금액을 보여준다.\n\n## 🚀 기능 구현 로직\n\n---\n\n- 총 3가지의 매뉴가 주어진다.\n    - 1번 - 주문등록.\n    - 2번 - 결제하기.\n    - 3번 - 프로그램 종료.\n#\n- 테이블 목록 구성\n    - 총 6개의 테이블을 가지고 있다.\n#\n- 매뉴 (8가지)\n    - 후라이드 치킨\n    - 양념 치킨\n    - 반반 치킨\n    - 통구이\n    - 간장 치킨\n    - 순살 치킨\n    - 콜라\n    - 사이다\n#\n### 🍻 로직\n\n---\n\n- 포스기에서 제공되는 3가지의 기능을 출력한다. .....\u003c#SystemController\u003e\n    - 1 주문 등록 .....\u003c#OrderController\u003e\n    - 2 결제하기 .....\u003c#PayController\u003e\n    - 3 프로그램 종료 .....\u003c#SystemController\u003e\n\n#\n- 첫 번째 매뉴 \u003c주문 등록\u003e\n    - 테이블 목록을 보여주고 테이블 번호를 입력 받는다.\n        - 숫자만 존재하는가?\n        - 테이블 번호(1-6)와 일치하는가?\n    - 매뉴 목록을 보여주고 해당 매뉴의 번호를 입력 받는다.\n        - 숫자만 존재하는가?\n        - 매뉴번호(1-6, 21-22)와 일치하는가?\n    - 매뉴의 수량을 입력 받는다.\n        - 숫자만 존재하는가?\n        - 최소,최대 주문수량(1-99) 범위인가?\n    - (해당 테이블의 매뉴 이미지로 업데이트한다.-리팩터링때 구현)\n#\n- 두 번째 매뉴 \u003c결제하기\u003e\n    - 테이블 목록을 보여주고 테이블 번호를 입력 받는다.\n        - 숫자만 존재하는가?\n        - 테이블 번호(1-6)와 일치하는가?\n    - 해당 테이블의 총 주문 내역과 지불 금액을 보여준다\n        - 데이터 베이스에서 직접 보여준다.\n    - 결제 방식을 입력 받는다.\n        - 숫자만 존재하는가?\n        - 1 과 2 외에 값은 다시 입력받는다.\n    - 입력 받은 수단에 따라 해택을 제공한 후 최종 결제를 진행한다.\n        - 카드는 그대로 결제를 진행하고,\n        - 현금은 5% 추가 할인을 적용한다.\n#\n\n- 세 번째 매뉴 \u003c프로그램 종료\u003e\n    - 결제가 완료되지 않은 테이블이 존재한다면 해당 프로그램을 종료할 수 없다.\n    - 프로그램이 종료된다.\n\n#    \n\n#### 실행 결과 예시\n\n#\n\n```\n## 메인화면\n1 - 주문등록\n2 - 결제하기\n3 - 프로그램 종료\n\n## 원하는 기능을 선택하세요.\n1\n\n## 테이블 목록 \n┏ - ┓┏ - ┓┏ - ┓┏ - ┓┏ - ┓┏ - ┓\n| 1 || 2 || 3 || 5 || 6 || 8 |\n┗ - ┛┗ - ┛┗ - ┛┗ - ┛┗ - ┛┗ - ┛\n\n## 테이블을 선택하세요.\n1\n\n[치킨] 1 - 후라이드 : 16000원 \n[치킨] 2 - 양념치킨 : 16000원\n[치킨] 3 - 반반치킨 : 16000원\n[치킨] 4 - 통구이 : 16000원\n[치킨] 5 - 간장치킨 : 17000원\n[치킨] 6 - 순살치킨 : 17000원\n[음료] 21 - 콜라 : 1000원\n[음료] 22 - 사이다 : 1000원\n\n## 등록할 메뉴를 선택하세요.\n1\n\n## 메뉴의 수량을 입력하세요.\n1\n\n## 메인화면\n1 - 주문등록\n2 - 결제하기\n3 - 프로그램 종료\n\n## 원하는 기능을 선택하세요.\n1\n\n## 테이블 목록\n┏ - ┓┏ - ┓┏ - ┓┏ - ┓┏ - ┓┏ - ┓\n| 1 || 2 || 3 || 5 || 6 || 8 |\n┗ - ┛┗ - ┛┗ - ┛┗ - ┛┗ - ┛┗ - ┛\n\n## 테이블을 선택하세요.\n1\n\n[치킨] 1 - 후라이드 : 16000원 \n[치킨] 2 - 양념치킨 : 16000원\n[치킨] 3 - 반반치킨 : 16000원\n[치킨] 4 - 통구이 : 16000원\n[치킨] 5 - 간장치킨 : 17000원\n[치킨] 6 - 순살치킨 : 17000원\n[음료] 21 - 콜라 : 1000원\n[음료] 22 - 사이다 : 1000원\n\n## 등록할 메뉴를 선택하세요.\n21\n\n## 메뉴의 수량을 입력하세요.\n1\n\n## 메인화면\n1 - 주문등록\n2 - 결제하기\n3 - 프로그램 종료\n\n## 원하는 기능을 선택하세요.\n2\n\n## 테이블 목록\n┏ - ┓┏ - ┓┏ - ┓┏ - ┓┏ - ┓┏ - ┓\n| 1 || 2 || 3 || 5 || 6 || 8 |\n┗ - ┛┗ - ┛┗ - ┛┗ - ┛┗ - ┛┗ - ┛\n\n## 테이블을 선택하세요.\n1\n\n## 주문 내역\n메뉴 수량 금액\n후라이드 1 16000\n콜라 1 1000\n\n## 1번 테이블의 결제를 진행합니다.\n## 신용 카드는 1번, 현금은 2번\n1\n\n## 최종 결제할 금액\n17000원\n\n## 메인화면\n1 - 주문등록\n2 - 결제하기\n3 - 프로그램 종료\n...\n```\n\n## 🎈 마치며...\n\n---\n\n- 리드미 문서를 통해 해당 프로그램에 대한 기능설명과 로직을 작성하면서 간단하게 클래스들을 나누었다.\n- 리드미 문서를 참고하여 클래스 다이어그램으로 큰 틀을 먼저 잡았고 이를 보며 구현에 돌입하였는데..\n- 구현하다보니 생기는 변수에 대해 미쳐 대비를 못해 코드가 많이 꼬여버렸다.\n- 구현하기에 급급하여 많은 변수들도 통제하지 못했고 가독성이 많이 나쁜 코드가 되었다.\n- 다음의 원칙을 통해 리팩터링을 해야겠다.\n- 1. 솔리드 원칙을 지켰는가?\n- 2. 불필요한 로직을 최소화 하였는가?\n- 3. 네이밍 컨베션을 잘 지켰는가?\n- 이외에 생각나는 규율들을 지켜서 리팩터링을 해야겠다.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkdcode%2Fthis-is-java-study","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flkdcode%2Fthis-is-java-study","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkdcode%2Fthis-is-java-study/lists"}