Skip to content

woowacourse-java-study/java-convenience-store

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

편의점

λͺ©ν‘œ

ν•™μŠ΅ λͺ©ν‘œ

  • κ΄€λ ¨ ν•¨μˆ˜λ₯Ό λ¬Άμ–΄ 클래슀λ₯Ό λ§Œλ“€κ³ , 객체듀이 ν˜‘λ ₯ν•˜μ—¬ ν•˜λ‚˜μ˜ 큰 κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λ„λ‘ ν•œλ‹€.
  • ν΄λž˜μŠ€μ™€ ν•¨μˆ˜μ— λŒ€ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό 톡해 μ˜λ„ν•œ λŒ€λ‘œ μ •ν™•ν•˜κ²Œ μž‘λ™ν•˜λŠ” μ˜μ—­μ„ ν™•λ³΄ν•œλ‹€.
  • 3μ£Ό μ°¨ 곡톡 ν”Όλ“œλ°±μ„ μ΅œλŒ€ν•œ λ°˜μ˜ν•œλ‹€.
  • λΉ„κ³΅κ°œ μ €μž₯μ†Œ 과제 μ§„ν–‰ κ°€μ΄λ“œλ₯Ό μ°Έκ³ ν•˜μ—¬ μƒˆλ‘œμš΄ λ°©μ‹μœΌλ‘œ 과제 μ œμΆœλ¬Όμ„ μ œμΆœν•œλ‹€.

회고

μ•„λž˜ μ§ˆλ¬Έμ— λŒ€ν•œ μ΅œμ’… 회고λ₯Ό μ§„ν–‰ν•˜κ³  μ†Œκ°μ— ꡬ체적인 κ²°κ³Όλ₯Ό μž‘μ„±ν•œλ‹€. μ†Œκ°μ€ ν…μŠ€νŠΈλ‘œ μž‘μ„±ν•΄μ•Ό ν•˜λ©° μ™ΈλΆ€ λ§ν¬λŠ” ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.

  • μ§€μ›μ„œλ‚˜ 쀑간 νšŒκ³ μ—μ„œ ν˜„μ‹€μ μΈ λͺ©ν‘œλ₯Ό μ„€μ •ν•˜κ³  이λ₯Ό λ‹¬μ„±ν–ˆλ‹€κ³  μƒκ°ν•˜λ‚˜μš”? κ·Έ μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?
  • 쀑간 νšŒκ³ μ—μ„œ μ‘°μ •ν•œ λͺ©ν‘œκ°€ μ‹€μ œ λͺ©ν‘œ 달성에 도움이 λ˜μ—ˆλ‚˜μš”? λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜λŠ” 데 μ–΄λ–€ 점이 νš¨κ³Όμ μ΄μ—ˆλ‹€κ³  μƒκ°ν•˜λ‚˜μš”?
  • 각 λ―Έμ…˜μ˜ λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ μ„Έμš΄ κ³„νšμ„ 잘 μ΄ν–‰ν–ˆλ‚˜μš”? κ·Έ κ³Όμ •μ—μ„œ μ–΄λ–€ μ „λž΅μ΄ νš¨κ³Όκ°€ μžˆμ—ˆλ‚˜μš”?
  • λͺ°μž…ν•˜κ³  ν•¨κ»˜ μ„±μž₯ν•˜λŠ” 과정을 톡해 인상 κΉŠμ—ˆλ˜ κ²½ν—˜μ΄λ‚˜ λ³€ν™”κ°€ μžˆμ—ˆλ‚˜μš”?

ν”„λ¦¬μ½”μŠ€ μ§„ν–‰ 방식

μ§„ν–‰ 방식

  • λ―Έμ…˜μ€Β κ³Όμ œ μ§„ν–‰ μš”κ΅¬ 사항,Β κΈ°λŠ₯ μš”κ΅¬ 사항,Β ν”„λ‘œκ·Έλž˜λ° μš”κ΅¬ 사항 세 κ°€μ§€λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.
  • μ„Έ 개의 μš”κ΅¬ 사항을 λ§Œμ‘±ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν•œλ‹€. 특히 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κΈ° 전에 κΈ°λŠ₯ λͺ©λ‘μ„ λ§Œλ“€κ³ , κΈ°λŠ₯ λ‹¨μœ„λ‘œ 컀밋 ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰ν•œλ‹€.
  • κΈ°λŠ₯ μš”κ΅¬ 사항에 κΈ°μž¬λ˜μ§€ μ•Šμ€ λ‚΄μš©μ€ 슀슀둜 νŒλ‹¨ν•˜μ—¬ κ΅¬ν˜„ν•œλ‹€.
  • λ§€μ£Ό μ§„ν–‰ν•  λ―Έμ…˜μ€ ν™”μš”μΌ μ˜€ν›„ 3μ‹œλΆ€ν„° 확인할 수 있으며, λ‹€μŒ μ£Ό μ›”μš”μΌκΉŒμ§€ κ΅¬ν˜„μ„ μ™„λ£Œν•˜μ—¬ μ œμΆœν•΄μ•Ό ν•œλ‹€.Β μ œμΆœμ€ μΌμš”μΌ μ˜€ν›„ 3μ‹œλΆ€ν„° κ°€λŠ₯ν•˜λ‹€.
    • μ •ν•΄μ§„ μ‹œκ°„μ„ μ§€ν‚€μ§€ μ•Šμ„ 경우 λ―Έμ…˜μ„ μ œμΆœν•˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ κ°„μ£Όν•œλ‹€.
    • μ •ν•΄μ§„ μ‹œκ°„ 내에 μš°μ•„ν•œν…Œν¬μ½”μŠ€ 계정을 ν˜‘λ ₯자둜 μ΄ˆλŒ€ν•˜μ§€ μ•ŠμœΌλ©΄ μ œμΆœν•˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ κ°„μ£Όν•œλ‹€.
    • μ’…λ£Œ μΌμ‹œ μ΄ν›„μ—λŠ” μΆ”κ°€ ν‘Έμ‹œλ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.

λ―Έμ…˜ 제좜 방법

  • λ―Έμ…˜ κ΅¬ν˜„μ„ μ™„λ£Œν•œ ν›„ GitHub을 톡해 μ œμΆœν•΄μ•Ό ν•œλ‹€.
  • GitHub에 λ―Έμ…˜μ„ μ œμΆœν•œ ν›„Β μš°μ•„ν•œν…Œν¬μ½”μŠ€ 지원 ν”Œλž«νΌμ—μ„œ 과제 μ œμΆœλ¬Όμ„ μ΅œμ’… μ œμΆœν•œλ‹€.
    • μžμ„Έν•œ μ•ˆλ‚΄λŠ”Β μ œμΆœ κ°€μ΄λ“œλ₯Ό μ°Έκ³ ν•œλ‹€.
    • 과제λ₯Ό μˆ˜ν–‰ν•˜λ©΄μ„œ λŠλ‚€ 점, 배운 점, λ§Žμ€ μ‹œκ°„μ„ νˆ¬μžν•œ λΆ€λΆ„ λ“± 자유둭게 μž‘μ„±ν•œλ‹€.

과제 제좜 μ „ 체크 리슀트

  • κΈ°λŠ₯을 μ˜¬λ°”λ₯΄κ²Œ κ΅¬ν˜„ν–ˆλ”λΌλ„Β μš”κ΅¬ 사항에 λͺ…μ‹œλœ 좜λ ₯ ν˜•μ‹μ„ λ”°λ₯΄μ§€ μ•ŠμœΌλ©΄ 0점을 λ°›κ²Œ λœλ‹€.
  • κΈ°λŠ₯ κ΅¬ν˜„μ„ μ™„λ£Œν•œ ν›„ μ•„λž˜ κ°€μ΄λ“œμ— 따라 λͺ¨λ“  ν…ŒμŠ€νŠΈκ°€ μ„±κ³΅μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ”μ§€ ν™•μΈν•œλ‹€.
  • ν…ŒμŠ€νŠΈκ°€ μ‹€νŒ¨ν•˜λ©΄ μ μˆ˜κ°€ 0점이 λ˜λ―€λ‘œ μ œμΆœν•˜κΈ° 전에 λ°˜λ“œμ‹œ ν™•μΈν•œλ‹€.

ν…ŒμŠ€νŠΈ μ‹€ν–‰ κ°€μ΄λ“œ

  • IntelliJ IDEA λ˜λŠ” Android Studio와 같은 IDEμ—μ„œ Kotlin 1.9.24둜 μ‹€ν–‰λ˜λŠ”μ§€ ν™•μΈν•œλ‹€.
  • ν„°λ―Έλ„μ—μ„œ Mac λ˜λŠ” Linux μ‚¬μš©μžμ˜ 경우 ./gradlew clean testΒ λͺ…령을 μ‹€ν–‰ν•˜κ³ , Windows μ‚¬μš©μžμ˜ 경우 gradlew.bat clean testΒ λ˜λŠ”Β .\gradlew.bat clean testΒ λͺ…령을 μ‹€ν–‰ν•  λ•Œ λͺ¨λ“  ν…ŒμŠ€νŠΈκ°€ μ•„λž˜μ™€ 같이 ν†΅κ³Όν•˜λŠ”μ§€ ν™•μΈν•œλ‹€.
BUILD SUCCESSFUL in 0s


편의점

과제 μ§„ν–‰ μš”κ΅¬ 사항

  • λ―Έμ…˜μ€Β νŽΈμ˜μ Β μ €μž₯μ†Œλ₯Ό μƒμ„±ν•˜λŠ” κ²ƒμœΌλ‘œ μ‹œμž‘ν•œλ‹€.
  • κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κΈ° μ „Β README.md에 κ΅¬ν˜„ν•  κΈ°λŠ₯ λͺ©λ‘μ„ 정리해 μΆ”κ°€ν•œλ‹€.
  • Git의 컀밋 λ‹¨μœ„λŠ” μ•ž λ‹¨κ³„μ—μ„œΒ README.md에 μ •λ¦¬ν•œ κΈ°λŠ₯ λͺ©λ‘ λ‹¨μœ„λ‘œ μΆ”κ°€ν•œλ‹€.
  • μžμ„Έν•œ 과제 μ§„ν–‰ 방법은 ν”„λ¦¬μ½”μŠ€ μ§„ν–‰ κ°€μ΄λ“œ λ¬Έμ„œλ₯Ό μ°Έκ³ ν•œλ‹€.

κΈ°λŠ₯ μš”κ΅¬ 사항

ꡬ맀자의 할인 ν˜œνƒκ³Ό 재고 상황을 κ³ λ €ν•˜μ—¬ μ΅œμ’… 결제 κΈˆμ•‘μ„ κ³„μ‚°ν•˜κ³  μ•ˆλ‚΄ν•˜λŠ” 결제 μ‹œμŠ€ν…œμ„ κ΅¬ν˜„ν•œλ‹€.

  • μ‚¬μš©μžκ°€ μž…λ ₯ν•œ μƒν’ˆμ˜ 가격과 μˆ˜λŸ‰μ„ 기반으둜 μ΅œμ’… 결제 κΈˆμ•‘μ„ κ³„μ‚°ν•œλ‹€.
    • 총ꡬ맀앑은 μƒν’ˆλ³„ 가격과 μˆ˜λŸ‰μ„ κ³±ν•˜μ—¬ κ³„μ‚°ν•˜λ©°, ν”„λ‘œλͺ¨μ…˜ 및 멀버십 할인 정책을 λ°˜μ˜ν•˜μ—¬ μ΅œμ’… 결제 κΈˆμ•‘μ„ μ‚°μΆœν•œλ‹€.
  • ꡬ맀 λ‚΄μ—­κ³Ό μ‚°μΆœν•œ κΈˆμ•‘ 정보λ₯Ό 영수증으둜 좜λ ₯ν•œλ‹€.
  • 영수증 좜λ ₯ ν›„ μΆ”κ°€ ꡬ맀λ₯Ό μ§„ν–‰ν• μ§€ λ˜λŠ” μ’…λ£Œν• μ§€λ₯Ό 선택할 수 μžˆλ‹€.
  • μ‚¬μš©μžκ°€ 잘λͺ»λœ 값을 μž…λ ₯ν•  경우 IllegalArgumentExceptionλ₯Ό λ°œμƒμ‹œν‚€κ³ , "[ERROR]"둜 μ‹œμž‘ν•˜λŠ” μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ ν›„ κ·Έ λΆ€λΆ„λΆ€ν„° μž…λ ₯을 λ‹€μ‹œ λ°›λŠ”λ‹€.
    • Exception이 μ•„λ‹ŒΒ IllegalArgumentException,Β IllegalStateExceptionΒ λ“±κ³Ό 같은 λͺ…ν™•ν•œ μœ ν˜•μ„ μ²˜λ¦¬ν•œλ‹€.

재고 관리

  • 각 μƒν’ˆμ˜ 재고 μˆ˜λŸ‰μ„ κ³ λ €ν•˜μ—¬ 결제 κ°€λŠ₯ μ—¬λΆ€λ₯Ό ν™•μΈν•œλ‹€.
  • 고객이 μƒν’ˆμ„ ꡬ맀할 λ•Œλ§ˆλ‹€, 결제된 μˆ˜λŸ‰λ§ŒνΌ ν•΄λ‹Ή μƒν’ˆμ˜ μž¬κ³ μ—μ„œ μ°¨κ°ν•˜μ—¬ μˆ˜λŸ‰μ„ κ΄€λ¦¬ν•œλ‹€.
  • 재고λ₯Ό μ°¨κ°ν•¨μœΌλ‘œμ¨ μ‹œμŠ€ν…œμ€ μ΅œμ‹  재고 μƒνƒœλ₯Ό μœ μ§€ν•˜λ©°, λ‹€μŒ 고객이 ꡬ맀할 λ•Œ μ •ν™•ν•œ 재고 정보λ₯Ό μ œκ³΅ν•œλ‹€.

ν”„λ‘œλͺ¨μ…˜ 할인

  • 였늘 λ‚ μ§œκ°€ ν”„λ‘œλͺ¨μ…˜ κΈ°κ°„ 내에 ν¬ν•¨λœ κ²½μš°μ—λ§Œ 할인을 μ μš©ν•œλ‹€.
  • ν”„λ‘œλͺ¨μ…˜μ€ N개 ꡬ맀 μ‹œ 1개 무료 증정(Buy N Get 1 Free)의 ν˜•νƒœλ‘œ μ§„ν–‰λœλ‹€.
  • 1+1 λ˜λŠ” 2+1 ν”„λ‘œλͺ¨μ…˜μ΄ 각각 μ§€μ •λœ μƒν’ˆμ— 적용되며, 동일 μƒν’ˆμ— μ—¬λŸ¬ ν”„λ‘œλͺ¨μ…˜μ΄ μ μš©λ˜μ§€ μ•ŠλŠ”λ‹€.
  • ν”„λ‘œλͺ¨μ…˜ ν˜œνƒμ€ ν”„λ‘œλͺ¨μ…˜ 재고 λ‚΄μ—μ„œλ§Œ μ μš©ν•  수 μžˆλ‹€.
  • ν”„λ‘œλͺ¨μ…˜ κΈ°κ°„ 쀑이라면 ν”„λ‘œλͺ¨μ…˜ 재고λ₯Ό μš°μ„ μ μœΌλ‘œ μ°¨κ°ν•˜λ©°, ν”„λ‘œλͺ¨μ…˜ μž¬κ³ κ°€ λΆ€μ‘±ν•  κ²½μš°μ—λŠ” 일반 재고λ₯Ό μ‚¬μš©ν•œλ‹€.
  • ν”„λ‘œλͺ¨μ…˜ 적용이 κ°€λŠ₯ν•œ μƒν’ˆμ— λŒ€ν•΄ 고객이 ν•΄λ‹Ή μˆ˜λŸ‰λ³΄λ‹€ 적게 κ°€μ Έμ˜¨ 경우, ν•„μš”ν•œ μˆ˜λŸ‰μ„ μΆ”κ°€λ‘œ κ°€μ Έμ˜€λ©΄ ν˜œνƒμ„ 받을 수 μžˆμŒμ„ μ•ˆλ‚΄ν•œλ‹€.
  • ν”„λ‘œλͺ¨μ…˜ μž¬κ³ κ°€ λΆ€μ‘±ν•˜μ—¬ 일뢀 μˆ˜λŸ‰μ„ ν”„λ‘œλͺ¨μ…˜ ν˜œνƒ 없이 κ²°μ œν•΄μ•Ό ν•˜λŠ” 경우, 일뢀 μˆ˜λŸ‰μ— λŒ€ν•΄ μ •κ°€λ‘œ κ²°μ œν•˜κ²Œ 됨을 μ•ˆλ‚΄ν•œλ‹€.

멀버십 할인

  • 멀버십 νšŒμ›μ€ ν”„λ‘œλͺ¨μ…˜ 미적용 κΈˆμ•‘μ˜ 30%λ₯Ό ν• μΈλ°›λŠ”λ‹€.
  • ν”„λ‘œλͺ¨μ…˜ 적용 ν›„ 남은 κΈˆμ•‘μ— λŒ€ν•΄ 멀버십 할인을 μ μš©ν•œλ‹€.
  • 멀버십 ν• μΈμ˜ μ΅œλŒ€ ν•œλ„λŠ” 8,000원이닀.

영수증 좜λ ₯

  • μ˜μˆ˜μ¦μ€ 고객의 ꡬ맀 λ‚΄μ—­κ³Ό 할인을 μš”μ•½ν•˜μ—¬ 좜λ ₯ν•œλ‹€.
  • 영수증 ν•­λͺ©μ€ μ•„λž˜μ™€ κ°™λ‹€.
    • ꡬ맀 μƒν’ˆ λ‚΄μ—­: κ΅¬λ§€ν•œ μƒν’ˆλͺ…, μˆ˜λŸ‰, 가격
    • 증정 μƒν’ˆ λ‚΄μ—­: ν”„λ‘œλͺ¨μ…˜μ— 따라 무료둜 제곡된 증정 μƒν’ˆμ˜ λͺ©λ‘
    • κΈˆμ•‘ 정보
      • 총ꡬ맀앑: κ΅¬λ§€ν•œ μƒν’ˆμ˜ 총 μˆ˜λŸ‰κ³Ό 총 κΈˆμ•‘
      • 행사할인: ν”„λ‘œλͺ¨μ…˜μ— μ˜ν•΄ ν• μΈλœ κΈˆμ•‘
      • 멀버십할인: 멀버십에 μ˜ν•΄ μΆ”κ°€λ‘œ ν• μΈλœ κΈˆμ•‘
      • λ‚΄μ‹€λˆ: μ΅œμ’… 결제 κΈˆμ•‘
  • 영수증의 ꡬ성 μš”μ†Œλ₯Ό 보기 μ’‹κ²Œ μ •λ ¬ν•˜μ—¬ 고객이 μ‰½κ²Œ κΈˆμ•‘κ³Ό μˆ˜λŸ‰μ„ 확인할 수 있게 ν•œλ‹€.

μž…μΆœλ ₯ μš”κ΅¬ 사항

μž…λ ₯

  • κ΅¬ν˜„μ— ν•„μš”ν•œ μƒν’ˆ λͺ©λ‘κ³Ό 행사 λͺ©λ‘μ„ 파일 μž…μΆœλ ₯을 톡해 λΆˆλŸ¬μ˜¨λ‹€.
    • src/main/resources/products.mdκ³ΌΒ src/main/resources/promotions.mdΒ νŒŒμΌμ„ μ΄μš©ν•œλ‹€.
    • 두 파일 λͺ¨λ‘ λ‚΄μš©μ˜ ν˜•μ‹μ„ μœ μ§€ν•œλ‹€λ©΄ 값은 μˆ˜μ •ν•  수 μžˆλ‹€.
  • ꡬ맀할 μƒν’ˆκ³Ό μˆ˜λŸ‰μ„ μž…λ ₯ λ°›λŠ”λ‹€. μƒν’ˆλͺ…, μˆ˜λŸ‰μ€ ν•˜μ΄ν”ˆ(-)으둜, κ°œλ³„ μƒν’ˆμ€ λŒ€κ΄„ν˜Έ([])둜 λ¬Άμ–΄ μ‰Όν‘œ(,)둜 κ΅¬λΆ„ν•œλ‹€.
[콜라-10],[사이닀-3]

  • ν”„λ‘œλͺ¨μ…˜ 적용이 κ°€λŠ₯ν•œ μƒν’ˆμ— λŒ€ν•΄ 고객이 ν•΄λ‹Ή μˆ˜λŸ‰λ³΄λ‹€ 적게 κ°€μ Έμ˜¨ 경우, κ·Έ μˆ˜λŸ‰λ§ŒνΌ μΆ”κ°€ μ—¬λΆ€λ₯Ό μž…λ ₯λ°›λŠ”λ‹€.
    • Y: 증정 받을 수 μžˆλŠ” μƒν’ˆμ„ μΆ”κ°€ν•œλ‹€.
    • N: 증정 받을 수 μžˆλŠ” μƒν’ˆμ„ μΆ”κ°€ν•˜μ§€ μ•ŠλŠ”λ‹€.
Y

  • ν”„λ‘œλͺ¨μ…˜ μž¬κ³ κ°€ λΆ€μ‘±ν•˜μ—¬ 일뢀 μˆ˜λŸ‰μ„ ν”„λ‘œλͺ¨μ…˜ ν˜œνƒ 없이 κ²°μ œν•΄μ•Ό ν•˜λŠ” 경우, 일뢀 μˆ˜λŸ‰μ— λŒ€ν•΄ μ •κ°€λ‘œ κ²°μ œν• μ§€ μ—¬λΆ€λ₯Ό μž…λ ₯λ°›λŠ”λ‹€.
    • Y: 일뢀 μˆ˜λŸ‰μ— λŒ€ν•΄ μ •κ°€λ‘œ κ²°μ œν•œλ‹€.
    • N: μ •κ°€λ‘œ κ²°μ œν•΄μ•Όν•˜λŠ” μˆ˜λŸ‰λ§ŒνΌ μ œμ™Έν•œ ν›„ 결제λ₯Ό μ§„ν–‰ν•œλ‹€.
Y

  • 멀버십 할인 적용 μ—¬λΆ€λ₯Ό μž…λ ₯ λ°›λŠ”λ‹€.
    • Y: 멀버십 할인을 μ μš©ν•œλ‹€.
    • N: 멀버십 할인을 μ μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
Y

  • μΆ”κ°€ ꡬ맀 μ—¬λΆ€λ₯Ό μž…λ ₯ λ°›λŠ”λ‹€.
    • Y: μž¬κ³ κ°€ μ—…λ°μ΄νŠΈλœ μƒν’ˆ λͺ©λ‘μ„ 확인 ν›„ μΆ”κ°€λ‘œ ꡬ맀λ₯Ό μ§„ν–‰ν•œλ‹€.
    • N: ꡬ맀λ₯Ό μ’…λ£Œν•œλ‹€.
Y

좜λ ₯

  • ν™˜μ˜ 인사와 ν•¨κ»˜ μƒν’ˆλͺ…, 가격, ν”„λ‘œλͺ¨μ…˜ 이름, 재고λ₯Ό μ•ˆλ‚΄ν•œλ‹€. λ§Œμ•½ μž¬κ³ κ°€ 0개라면 재고 μ—†μŒμ„ 좜λ ₯ν•œλ‹€.
μ•ˆλ…•ν•˜μ„Έμš”. WνŽΈμ˜μ μž…λ‹ˆλ‹€.
ν˜„μž¬ λ³΄μœ ν•˜κ³  μžˆλŠ” μƒν’ˆμž…λ‹ˆλ‹€.

- 콜라 1,000원 10개 탄산2+1
- 콜라 1,000원 10개
- 사이닀 1,000원 8개 탄산2+1
- 사이닀 1,000원 7개
- μ˜€λ Œμ§€μ£ΌμŠ€ 1,800원 9개 MDμΆ”μ²œμƒν’ˆ
- μ˜€λ Œμ§€μ£ΌμŠ€ 1,800원 재고 μ—†μŒ
- νƒ„μ‚°μˆ˜ 1,200원 5개 탄산2+1
- νƒ„μ‚°μˆ˜ 1,200원 재고 μ—†μŒ
- λ¬Ό 500원 10개
- λΉ„νƒ€λ―Όμ›Œν„° 1,500원 6개
- 감자칩 1,500원 5개 λ°˜μ§ν• μΈ
- 감자칩 1,500원 5개
- μ΄ˆμ½”λ°” 1,200원 5개 MDμΆ”μ²œμƒν’ˆ
- μ΄ˆμ½”λ°” 1,200원 5개
- μ—λ„ˆμ§€λ°” 2,000원 5개
- μ •μ‹λ„μ‹œλ½ 6,400원 8개
- 컡라면 1,700원 1개 MDμΆ”μ²œμƒν’ˆ
- 컡라면 1,700원 10개

κ΅¬λ§€ν•˜μ‹€ μƒν’ˆλͺ…κ³Ό μˆ˜λŸ‰μ„ μž…λ ₯ν•΄ μ£Όμ„Έμš”. (예: [사이닀-2],[감자칩-1])

  • ν”„λ‘œλͺ¨μ…˜ 적용이 κ°€λŠ₯ν•œ μƒν’ˆμ— λŒ€ν•΄ 고객이 ν•΄λ‹Ή μˆ˜λŸ‰λ§ŒνΌ κ°€μ Έμ˜€μ§€ μ•Šμ•˜μ„ 경우, ν˜œνƒμ— λŒ€ν•œ μ•ˆλ‚΄ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•œλ‹€.
ν˜„μž¬ {μƒν’ˆλͺ…}은(λŠ”) 1개λ₯Ό 무료둜 더 받을 수 μžˆμŠ΅λ‹ˆλ‹€. μΆ”κ°€ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? (Y/N)

  • ν”„λ‘œλͺ¨μ…˜ μž¬κ³ κ°€ λΆ€μ‘±ν•˜μ—¬ 일뢀 μˆ˜λŸ‰μ„ ν”„λ‘œλͺ¨μ…˜ ν˜œνƒ 없이 κ²°μ œν•΄μ•Ό ν•˜λŠ” 경우, 일뢀 μˆ˜λŸ‰μ— λŒ€ν•΄ μ •κ°€λ‘œ κ²°μ œν• μ§€ 여뢀에 λŒ€ν•œ μ•ˆλ‚΄ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•œλ‹€.
ν˜„μž¬ {μƒν’ˆλͺ…} {μˆ˜λŸ‰}κ°œλŠ” ν”„λ‘œλͺ¨μ…˜ 할인이 μ μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έλž˜λ„ κ΅¬λ§€ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? (Y/N)

  • 멀버십 할인 적용 μ—¬λΆ€λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ μ•ˆλ‚΄ 문ꡬλ₯Ό 좜λ ₯ν•œλ‹€.
멀버십 할인을 λ°›μœΌμ‹œκ² μŠ΅λ‹ˆκΉŒ? (Y/N)

  • ꡬ맀 μƒν’ˆ λ‚΄μ—­, 증정 μƒν’ˆ λ‚΄μ—­, κΈˆμ•‘ 정보λ₯Ό 좜λ ₯ν•œλ‹€.
===========W 편의점=============
μƒν’ˆλͺ…		μˆ˜λŸ‰	κΈˆμ•‘
콜라		3 	3,000
μ—λ„ˆμ§€λ°” 		5 	10,000
===========증	μ •=============
콜라		1
==============================
총ꡬ맀앑		8	13,000
행사할인			-1,000
멀버십할인			-3,000
λ‚΄μ‹€λˆ			 9,000

  • μΆ”κ°€ ꡬ맀 μ—¬λΆ€λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ μ•ˆλ‚΄ 문ꡬλ₯Ό 좜λ ₯ν•œλ‹€.
κ°μ‚¬ν•©λ‹ˆλ‹€. κ΅¬λ§€ν•˜κ³  싢은 λ‹€λ₯Έ μƒν’ˆμ΄ μžˆλ‚˜μš”? (Y/N)

  • μ‚¬μš©μžκ°€ 잘λͺ»λœ 값을 μž…λ ₯ν–ˆμ„ λ•Œ, "[ERROR]"둜 μ‹œμž‘ν•˜λŠ” 였λ₯˜ λ©”μ‹œμ§€μ™€ ν•¨κ»˜ 상황에 λ§žλŠ” μ•ˆλ‚΄λ₯Ό 좜λ ₯ν•œλ‹€.
    • ꡬ맀할 μƒν’ˆκ³Ό μˆ˜λŸ‰ ν˜•μ‹μ΄ μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ 경우:Β [ERROR] μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ ν˜•μ‹μœΌλ‘œ μž…λ ₯ν–ˆμŠ΅λ‹ˆλ‹€. λ‹€μ‹œ μž…λ ₯ν•΄ μ£Όμ„Έμš”.
    • μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μƒν’ˆμ„ μž…λ ₯ν•œ 경우:Β [ERROR] μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μƒν’ˆμž…λ‹ˆλ‹€. λ‹€μ‹œ μž…λ ₯ν•΄ μ£Όμ„Έμš”.
    • ꡬ맀 μˆ˜λŸ‰μ΄ 재고 μˆ˜λŸ‰μ„ μ΄ˆκ³Όν•œ 경우:Β [ERROR] 재고 μˆ˜λŸ‰μ„ μ΄ˆκ³Όν•˜μ—¬ ꡬ맀할 수 μ—†μŠ΅λ‹ˆλ‹€. λ‹€μ‹œ μž…λ ₯ν•΄ μ£Όμ„Έμš”.
    • 기타 잘λͺ»λœ μž…λ ₯의 경우:Β [ERROR] 잘λͺ»λœ μž…λ ₯μž…λ‹ˆλ‹€. λ‹€μ‹œ μž…λ ₯ν•΄ μ£Όμ„Έμš”.

μ‹€ν–‰ κ²°κ³Ό μ˜ˆμ‹œ

μ•ˆλ…•ν•˜μ„Έμš”. WνŽΈμ˜μ μž…λ‹ˆλ‹€.
ν˜„μž¬ λ³΄μœ ν•˜κ³  μžˆλŠ” μƒν’ˆμž…λ‹ˆλ‹€.

- 콜라 1,000원 10개 탄산2+1
- 콜라 1,000원 10개
- 사이닀 1,000원 8개 탄산2+1
- 사이닀 1,000원 7개
- μ˜€λ Œμ§€μ£ΌμŠ€ 1,800원 9개 MDμΆ”μ²œμƒν’ˆ
- μ˜€λ Œμ§€μ£ΌμŠ€ 1,800원 재고 μ—†μŒ
- νƒ„μ‚°μˆ˜ 1,200원 5개 탄산2+1
- νƒ„μ‚°μˆ˜ 1,200원 재고 μ—†μŒ
- λ¬Ό 500원 10개
- λΉ„νƒ€λ―Όμ›Œν„° 1,500원 6개
- 감자칩 1,500원 5개 λ°˜μ§ν• μΈ
- 감자칩 1,500원 5개
- μ΄ˆμ½”λ°” 1,200원 5개 MDμΆ”μ²œμƒν’ˆ
- μ΄ˆμ½”λ°” 1,200원 5개
- μ—λ„ˆμ§€λ°” 2,000원 5개
- μ •μ‹λ„μ‹œλ½ 6,400원 8개
- 컡라면 1,700원 1개 MDμΆ”μ²œμƒν’ˆ
- 컡라면 1,700원 10개

κ΅¬λ§€ν•˜μ‹€ μƒν’ˆλͺ…κ³Ό μˆ˜λŸ‰μ„ μž…λ ₯ν•΄ μ£Όμ„Έμš”. (예: [사이닀-2],[감자칩-1])
[콜라-3],[μ—λ„ˆμ§€λ°”-5]

멀버십 할인을 λ°›μœΌμ‹œκ² μŠ΅λ‹ˆκΉŒ? (Y/N)
Y

===========W 편의점=============
μƒν’ˆλͺ…		μˆ˜λŸ‰	κΈˆμ•‘
콜라		3 	3,000
μ—λ„ˆμ§€λ°” 		5 	10,000
===========증	μ •=============
콜라		1
==============================
총ꡬ맀앑		8	13,000
행사할인			-1,000
멀버십할인			-3,000
λ‚΄μ‹€λˆ			 9,000

κ°μ‚¬ν•©λ‹ˆλ‹€. κ΅¬λ§€ν•˜κ³  싢은 λ‹€λ₯Έ μƒν’ˆμ΄ μžˆλ‚˜μš”? (Y/N)
Y

μ•ˆλ…•ν•˜μ„Έμš”. WνŽΈμ˜μ μž…λ‹ˆλ‹€.
ν˜„μž¬ λ³΄μœ ν•˜κ³  μžˆλŠ” μƒν’ˆμž…λ‹ˆλ‹€.

- 콜라 1,000원 7개 탄산2+1
- 콜라 1,000원 10개
- 사이닀 1,000원 8개 탄산2+1
- 사이닀 1,000원 7개
- μ˜€λ Œμ§€μ£ΌμŠ€ 1,800원 9개 MDμΆ”μ²œμƒν’ˆ
- μ˜€λ Œμ§€μ£ΌμŠ€ 1,800원 재고 μ—†μŒ
- νƒ„μ‚°μˆ˜ 1,200원 5개 탄산2+1
- νƒ„μ‚°μˆ˜ 1,200원 재고 μ—†μŒ
- λ¬Ό 500원 10개
- λΉ„νƒ€λ―Όμ›Œν„° 1,500원 6개
- 감자칩 1,500원 5개 λ°˜μ§ν• μΈ
- 감자칩 1,500원 5개
- μ΄ˆμ½”λ°” 1,200원 5개 MDμΆ”μ²œμƒν’ˆ
- μ΄ˆμ½”λ°” 1,200원 5개
- μ—λ„ˆμ§€λ°” 2,000원 재고 μ—†μŒ
- μ •μ‹λ„μ‹œλ½ 6,400원 8개
- 컡라면 1,700원 1개 MDμΆ”μ²œμƒν’ˆ
- 컡라면 1,700원 10개

κ΅¬λ§€ν•˜μ‹€ μƒν’ˆλͺ…κ³Ό μˆ˜λŸ‰μ„ μž…λ ₯ν•΄ μ£Όμ„Έμš”. (예: [사이닀-2],[감자칩-1])
[콜라-10]

ν˜„μž¬ 콜라 4κ°œλŠ” ν”„λ‘œλͺ¨μ…˜ 할인이 μ μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έλž˜λ„ κ΅¬λ§€ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? (Y/N)
Y

멀버십 할인을 λ°›μœΌμ‹œκ² μŠ΅λ‹ˆκΉŒ? (Y/N)
N

===========W 편의점=============
μƒν’ˆλͺ…		μˆ˜λŸ‰	κΈˆμ•‘
콜라		10 	10,000
===========증	μ •=============
콜라		2
==============================
총ꡬ맀앑		10	10,000
행사할인			-2,000
멀버십할인			-0
λ‚΄μ‹€λˆ			 8,000

κ°μ‚¬ν•©λ‹ˆλ‹€. κ΅¬λ§€ν•˜κ³  싢은 λ‹€λ₯Έ μƒν’ˆμ΄ μžˆλ‚˜μš”? (Y/N)
Y

μ•ˆλ…•ν•˜μ„Έμš”. WνŽΈμ˜μ μž…λ‹ˆλ‹€.
ν˜„μž¬ λ³΄μœ ν•˜κ³  μžˆλŠ” μƒν’ˆμž…λ‹ˆλ‹€.

- 콜라 1,000원 재고 μ—†μŒ 탄산2+1
- 콜라 1,000원 7개
- 사이닀 1,000원 8개 탄산2+1
- 사이닀 1,000원 7개
- μ˜€λ Œμ§€μ£ΌμŠ€ 1,800원 9개 MDμΆ”μ²œμƒν’ˆ
- μ˜€λ Œμ§€μ£ΌμŠ€ 1,800원 재고 μ—†μŒ
- νƒ„μ‚°μˆ˜ 1,200원 5개 탄산2+1
- νƒ„μ‚°μˆ˜ 1,200원 재고 μ—†μŒ
- λ¬Ό 500원 10개
- λΉ„νƒ€λ―Όμ›Œν„° 1,500원 6개
- 감자칩 1,500원 5개 λ°˜μ§ν• μΈ
- 감자칩 1,500원 5개
- μ΄ˆμ½”λ°” 1,200원 5개 MDμΆ”μ²œμƒν’ˆ
- μ΄ˆμ½”λ°” 1,200원 5개
- μ—λ„ˆμ§€λ°” 2,000원 재고 μ—†μŒ
- μ •μ‹λ„μ‹œλ½ 6,400원 8개
- 컡라면 1,700원 1개 MDμΆ”μ²œμƒν’ˆ
- 컡라면 1,700원 10개

κ΅¬λ§€ν•˜μ‹€ μƒν’ˆλͺ…κ³Ό μˆ˜λŸ‰μ„ μž…λ ₯ν•΄ μ£Όμ„Έμš”. (예: [사이닀-2],[감자칩-1])
[μ˜€λ Œμ§€μ£ΌμŠ€-1]

ν˜„μž¬ μ˜€λ Œμ§€μ£ΌμŠ€μ€(λŠ”) 1개λ₯Ό 무료둜 더 받을 수 μžˆμŠ΅λ‹ˆλ‹€. μΆ”κ°€ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? (Y/N)
Y

멀버십 할인을 λ°›μœΌμ‹œκ² μŠ΅λ‹ˆκΉŒ? (Y/N)
Y

===========W 편의점=============
μƒν’ˆλͺ…		μˆ˜λŸ‰	κΈˆμ•‘
μ˜€λ Œμ§€μ£ΌμŠ€		2 	3,600
===========증	μ •=============
μ˜€λ Œμ§€μ£ΌμŠ€		1
==============================
총ꡬ맀앑		2	3,600
행사할인			-1,800
멀버십할인			-0
λ‚΄μ‹€λˆ			 1,800

κ°μ‚¬ν•©λ‹ˆλ‹€. κ΅¬λ§€ν•˜κ³  싢은 λ‹€λ₯Έ μƒν’ˆμ΄ μžˆλ‚˜μš”? (Y/N)
N

ν”„λ‘œκ·Έλž˜λ° μš”κ΅¬ 사항 1

  • JDK 21 λ²„μ „μ—μ„œ μ‹€ν–‰ κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€.
  • ν”„λ‘œκ·Έλž¨ μ‹€ν–‰μ˜ μ‹œμž‘μ μ€ Application의 main()이닀.
  • build.gradle νŒŒμΌμ€ λ³€κ²½ν•  수 μ—†μœΌλ©°, 제곡된 라이브러리 μ΄μ™Έμ˜ μ™ΈλΆ€ λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • ν”„λ‘œκ·Έλž¨ μ’…λ£Œ μ‹œ System.exit()λ₯Ό ν˜ΈμΆœν•˜μ§€ μ•ŠλŠ”λ‹€.
  • ν”„λ‘œκ·Έλž˜λ° μš”κ΅¬ μ‚¬ν•­μ—μ„œ 달리 λͺ…μ‹œν•˜μ§€ μ•ŠλŠ” ν•œ 파일, νŒ¨ν‚€μ§€ λ“±μ˜ 이름을 λ°”κΎΈκ±°λ‚˜ μ΄λ™ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • μžλ°” μ½”λ“œ μ»¨λ²€μ…˜μ„ μ§€ν‚€λ©΄μ„œ ν”„λ‘œκ·Έλž˜λ°ν•œλ‹€.
  • 기본적으둜 Java Style Guideλ₯Ό μ›μΉ™μœΌλ‘œ ν•œλ‹€.

ν”„λ‘œκ·Έλž˜λ° μš”κ΅¬ 사항 2

  • indent(인덴트, λ“€μ—¬μ“°κΈ°) depthλ₯Ό 3 이 λ„˜μ§€ μ•Šλ„λ‘ κ΅¬ν˜„ν•œλ‹€. 2κΉŒμ§€λ§Œ ν—ˆμš©ν•œλ‹€. 예λ₯Ό λ“€μ–΄ whileλ¬Έ μ•ˆμ— if문이 있으면 λ“€μ—¬μ“°κΈ°λŠ” 2이닀. 힌트: indent(인덴트, λ“€μ—¬μ“°κΈ°) depthλ₯Ό μ€„μ΄λŠ” 쒋은 방법은 ν•¨μˆ˜(λ˜λŠ” λ©”μ„œλ“œ)λ₯Ό λΆ„λ¦¬ν•˜λ©΄ λœλ‹€.
  • 3 ν•­ μ—°μ‚°μžλ₯Ό μ“°μ§€ μ•ŠλŠ”λ‹€.
  • ν•¨μˆ˜(λ˜λŠ” λ©”μ„œλ“œ)κ°€ ν•œ κ°€μ§€ 일만 ν•˜λ„λ‘ μ΅œλŒ€ν•œ μž‘κ²Œ λ§Œλ“€μ–΄λΌ.
  • JUnit 5와 AssertJλ₯Ό μ΄μš©ν•˜μ—¬ μ •λ¦¬ν•œ κΈ°λŠ₯ λͺ©λ‘μ΄ μ •μƒμ μœΌλ‘œ μž‘λ™ν•˜λŠ”μ§€ ν…ŒμŠ€νŠΈ μ½”λ“œλ‘œ ν™•μΈν•œλ‹€.

ν”„λ‘œκ·Έλž˜λ° μš”κ΅¬ 사항 3

  • else μ˜ˆμ•½μ–΄λ₯Ό μ“°μ§€ μ•ŠλŠ”λ‹€.
  • elseλ₯Ό μ“°μ§€ 말라고 ν•˜λ‹ˆ switch/case둜 κ΅¬ν˜„ν•˜λŠ” κ²½μš°κ°€ μžˆλŠ”λ° switch/case도 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€. 힌트: if μ‘°κ±΄μ ˆμ—μ„œ 값을 returnν•˜λŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν•˜λ©΄ elseλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.
  • Java Enum을 μ μš©ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ„ κ΅¬ν˜„ν•œλ‹€.
  • κ΅¬ν˜„ν•œ κΈ°λŠ₯에 λŒ€ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•œλ‹€. (단, UI, System.out, System.in, Scanner) λ‘œμ§μ€ μ œμ™Έν•œλ‹€.

ν”„λ‘œκ·Έλž˜λ° μš”κ΅¬ 사항 4

  • ν•¨μˆ˜(λ˜λŠ” λ©”μ„œλ“œ)의 길이가 10 라인을 λ„˜μ–΄κ°€μ§€ μ•Šλ„λ‘ κ΅¬ν˜„ν•œλ‹€.

  • ν•¨μˆ˜(λ˜λŠ” λ©”μ„œλ“œ)κ°€ ν•œ κ°€μ§€ 일만 잘 ν•˜λ„λ‘ κ΅¬ν˜„ν•œλ‹€.

  • μž…μΆœλ ₯을 λ‹΄λ‹Ήν•˜λŠ” 클래슀λ₯Ό λ³„λ„λ‘œ κ΅¬ν˜„ν•œλ‹€.

  • μ•„λž˜ InputView, OutputView 클래슀λ₯Ό μ°Έκ³ ν•˜μ—¬ μž…μΆœλ ₯ 클래슀λ₯Ό κ΅¬ν˜„ν•œλ‹€. 클래슀 이름, λ©”μ†Œλ“œ λ°˜ν™˜ μœ ν˜•, μ‹œκ·Έλ‹ˆμ²˜ 등은 자유둭게 μˆ˜μ •ν•  수 μžˆλ‹€.

public class InputView {
    public String readItem() {
        System.out.println("κ΅¬λ§€ν•˜μ‹€ μƒν’ˆλͺ…κ³Ό μˆ˜λŸ‰μ„ μž…λ ₯ν•΄ μ£Όμ„Έμš”. (예: [사이닀-2],[감자칩-1])");
        String input = Console.readLine();
        // ...
    }
    // ...
}
public class OutputView {
    public void printProducts() {
        System.out.println("- 콜라 1,000원 10 개 탄산2+1");
        // ...
    }
    // ...
}

라이브러리

  • camp.nextstep.edu.missionutilsμ—μ„œ μ œκ³΅ν•˜λŠ” DateTimes 및 ConsoleAPIλ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„ν•΄μ•Ό ν•œλ‹€.
  • ν˜„μž¬ λ‚ μ§œμ™€ μ‹œκ°„μ„ κ°€μ Έμ˜€λ €λ©΄ camp.nextstep.edu.missionutils.DateTimes의 now() λ₯Ό ν™œμš©ν•œλ‹€.
  • μ‚¬μš©μžκ°€ μž…λ ₯ν•˜λŠ” 값은 camp.nextstep.edu.missionutils.Console의 readLine()을 ν™œμš©ν•œλ‹€.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages