유지보수를 용이하게 하기 위함이다.
class Exercise {
// 초기 상태 설정
var programState = ProgramState.PROGRAM_STATE_MENU_HOME
fun running() {
while (true) {
// 프로그램 상태에 따른 분기
when (programState) {
ProgramState.PROGRAM_STATE_MENU_HOME -> {
val inputMainMenuNumber = mainMenuClass.inputMainMenuNumber()
when(inputMainMenuNumber) {
MainMenuItem.MAIN_MENU_ITEM1.itemNumber -> {
programState = ProgramState.PROGRAM_STATE_MENU1
}
MainMenuItem.MAIN_MENU_ITEM2.itemNumber -> {
programState = ProgramState.PROGRAM_STATE_MENU2
}
MainMenuItem.MAIN_MENU_ITEM_EXIT.itemNumber -> {
programState = ProgramState.PROGRAM_STATE_EXIT
}
}
}
ProgramState.PROGRAM_STATE_MENU1 -> {
method()
programState = ProgramState.PROGRAM_STATE_MENU_HOME
}
ProgramState.PROGRAM_STATE_MENU2 -> {
method()
programState = ProgramState.PROGRAM_STATE_MENU_HOME
}
ProgramState.PROGRAM_STATE_EXIT -> {
method()
// 프로그램 종료
// exitProcess(0)
break
}
}
}
}
// program state class
enum class ProgramState {
PROGRAM_STATE_MENU_HOME,
PROGRAM_STATE_MENU1,
PROGRAM_STATE_MENU2,
PROGRAM_STATE_EXIT
}
// 메뉴 항목
public enum class MainMenuItem(val itemNumber:Int){
MAIN_MENU_ITEM1(1),
MAIN_MENU_ITEM2(2),
MAIN_MENU_ITEM_EXIT(3)
}
- 예상 가능한 상태들을 enum class로 정의한다.
- 정의한 상태별로 while 문 내부를 분기한다.
- 각 상태에 대한 클래스들을 정의한다.
- 각 상태에서의 입출력 부분을 모두 구현한다.
- 구현된 화면을 보고 저장할 데이터들을 선별한다.
- 데이터 저장 관련 기능을 구현하면서 프로그램과 연동시킨다.