class Exercise {
// 초기 상태 설정
var programState = ProgramState.PROGRAM_STATE_READ_FILE
fun running() {
while (true) {
// 프로그램 상태에 따른 분기
when (programState) {
// read file data
ProgramState.PROGRAM_STATE_READ_FILE -> {
method()
programState = ProgramState.PROGRAM_STATE_INPUT_MENU_NUMBER
}
// input menu number
ProgramState.PROGRAM_STATE_INPUT_MENU_NUMBER -> {
method()
programState = ProgramState.PROGRAM_STATE_INPUT_MENU_NUMBER
}
// menu 1 : 운동 기록
ProgramState.PROGRAM_STATE_INPUT_EXERCISE_INFO -> {
method()
programState = ProgramState.PROGRAM_STATE_INPUT_MENU_NUMBER
}
// menu 2 : 날짜별 운동 기록 출력
ProgramState.PROGRAM_STATE_PRINT_EXERCISE_INFO -> {
method()
programState = ProgramState.PROGRAM_STATE_INPUT_MENU_NUMBER
}
// 끝날때 운동 기록 file에 저장
ProgramState.PROGRAM_SATAE_WRITE_FILE -> {
method()
}
}
}
}
}
// program state class
enum class ProgramState {
PROGRAM_STATE_INPUT_MENU_NUMBER,
PROGRAM_STATE_INPUT_EXERCISE_INFO,
PROGRAM_STATE_PRINT_EXERCISE_INFO,
PROGRAM_STATE_READ_FILE,
PROGRAM_SATAE_WRITE_FILE
}
enum class 활용하여 program state별 코드 관리