이번 과제는 키오스크 시스템을 구현하는 프로젝트였다.
콘솔을 통해 키오스크의 메뉴와 기능을 구현하는 것이 주된 목표다.
가장 어려웠던 점은 뒤로가기 기능을 구현하는 것이다. 사실 while 문을 중첩해서 사용하면 뒤로가기 기능을 쉽게 구현할 수 있지만, 이번에는 스레드를 활용해 구현해보고 싶었다.
키오스크 로직을 단순히 while 문으로 처리하기보다는 스레드를 사용하여 키오스크의 전체적인 로직을 관리하고 싶었다.
어떤 아이디어였냐면, 대학생 때 플러터로 애플리케이션을 만들었을 때, 화면이 추가될 때 스택에 쌓이고, 뒤로가기는 스택에서 삭제된다는 점에서 영감을 얻었다. 그래서 이 방식이 키오스크 시스템에 적합하다고 생각했다.
while문을 사용하지 않고, 스레드를 활용하여 키오스크 시스템을 관리하고 싶었다. 이를 위해 Runnable 인터페이스를 사용하려고 했다.implements 해야 할 것이 많아져서 코드 가독성이 떨어질 것 같았다.스레드를 활용하여 키오스크 로직을 관리하는 방식이 어느정도 생각대로 구현된거 같다.
Runnable을 익명 클래스로 처리함으로써 코드가 간결해지고(사실 코드가 간결하지는 않은거 같다), 뒤로가기 기능을 스택을 이용해 처리할 수 있었다.
이번 과제를 통해 스레드와 익명 클래스의 활용에 대한 이해를 높일 수 있었고, 더 깔끔한 코드를 작성하는 방법에 대해 배울 수 있었다.
Runnable 인터페이스 구현을 위해 사용하여 코드 간결화.Runnable을 담는 스택 선언
함수를 스택에 넣고 빼면서 실행한다

전체적인 키오스크 로직

함수가 동작하기 전에 스택에 넣는 과정
다음 함수가 시작되면 이전 함수도 스택에 넣는다
