🍥구현 기능
- 결제 시 현재 시간과 비교하여, 특정 시간대에는 결제할 수 없도록 구현하기
🍥구현하기
DateAndTimeManager 클래스
- 날짜와 시간 관련 작업을 구현한 클래스
- 메소드:
- getDateString():String
현재 날짜를 yyyy-MM-dd 형식으로 나타낸 문자열 반환
- getTimeString():String
현재 시각을 HH:mm:ss 형식으로 나타낸 문자열 반환
- timeCompare(timeString1:String, timeString2: String):Boolean
시각을 HH:mm:ss 형식으로 나타낸 두 개의 문자열을 매개변수로 받아, 첫번째 문자열이 나타내는 시각이 두번째 문자열이 나타내는 시각보다 작은 경우 true 반환
class DateTimeManager {
fun getDateString(): String {
val currentDate = LocalDate.now()
val dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
return currentDate.format(dateFormatter)
}
fun getTimeString():String{
val currentDateTime = LocalDateTime.now()
val timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss")
return currentDateTime.format(timeFormatter)
}
fun timeCompare(timeString1:String, timeString2:String):Boolean{
val time1 = timeString1.split(':')
val time2 = timeString2.split(':')
if(time1[0] < time2[0]) return true
if (time1[0] == time2[0]){
if(time1[1] < time2[1]) return true
if (time1[1] == time2[1]){
return time1[2] < time2[2]
}
}
return false
}
}
➖
OrderPaymentScreen 클래스
- 현재 시각이 은행 점검 시간일 때에는 결제가 진행될 수 없도록 구현하기
[주문 결제 화면]
현재 시각은 23:15:10 입니다.
은행 점검 시간(23:10:00 ~ 23:20:00)에는 결제할 수 없습니다.
잠시 후 메인 화면으로 돌아갑니다...
- 프로퍼티 추가:
- bankTime1
은행 점검 시작 시간을 HH:mm:ss 형식으로 나타낸 문자열
- bankTime2
은행 점검 종료 시간을 HH:mm:ss 형식으로 나타낸 문자열
- 메소드 추가:
- printPaymentFailScreen(currentTime:String)
은행 점검 시간으로 결제를 진행할 수 없는 경우의 화면 출력
class OrderPaymentScreen : Screen() {
var costSum = 0
var balance = 0
val bankTime1 = "23:10:00"
val bankTime2 = "23:20:00"
override fun run(): String {
val dateTimeManager = MyKiosk.dateTimeManager
var currentTime = dateTimeManager.getTimeString()
if(dateTimeManager.timeCompare(bankTime1, currentTime) && dateTimeManager.timeCompare(currentTime, bankTime2)){
printPaymentFailScreen(currentTime)
return "false"
}
}
private fun printPaymentFailScreen(currentTime:String) {
println("[주문 결제 화면]")
println("현재 시각은 ${currentTime} 입니다.")
println("은행 점검 시간(${bankTime1}~${bankTime2})에는 결제할 수 없습니다.")
println("잠시 후 메인 화면으로 돌아갑니다...")
}
override fun getInput(): String {
}
override fun printScreen() {
}
}
OrderCompleteScreen 클래스
[주문 완료 화면]
주문이 완료되었습니다. (2023-12-08 23:25:12)
현재 잔고는 10000원 입니다.
잠시 후 첫 화면으로 이동합니다...
override fun printScreen(){
println("[주문 완료 화면]")
val currentDate = MyKiosk.dateTimeManager.getDateString()
val currentTime = MyKiosk.dateTimeManager.getTimeString()
println("주문이 완료되었습니다. (${currentDate} ${currentTime})")
println("현재 잔고는 ${MyKiosk.paymentManager.getBalance()}원 입니다.")
println("잠시 후 첫 화면으로 이동합니다...")
}
➖
MyKiosk 클래스
- companion object에 dateTimeManager 프로퍼티 추가
companion object{
private var instance:MyKiosk? = null
fun newInstance():MyKiosk{
if(instance == null) instance = MyKiosk()
return instance!!
}
val myMenu = MyMenu()
val shoppingCart = MenuItemCollection()
val paymentManager = PaymentManager()
val taskDelayManager = TaskDelayManager()
val dateTimeManager = DateTimeManager()
var isTakeOut:Boolean = false
}