내일배움캠프 과제2 회고

김국민·2025년 3월 13일
0

JAVA

목록 보기
17/21

키오스크 구현 프로젝트

프로젝트 목표 🎯

이번 과제는 키오스크 시스템을 구현하는 프로젝트였다.
콘솔을 통해 키오스크의 메뉴와 기능을 구현하는 것이 주된 목표다.


어려웠던 점 💡

뒤로가기 기능 구현

가장 어려웠던 점은 뒤로가기 기능을 구현하는 것이다. 사실 while 문을 중첩해서 사용하면 뒤로가기 기능을 쉽게 구현할 수 있지만, 이번에는 스레드를 활용해 구현해보고 싶었다.

배경 설명 📜

키오스크 로직을 단순히 while 문으로 처리하기보다는 스레드를 사용하여 키오스크의 전체적인 로직을 관리하고 싶었다.

어떤 아이디어였냐면, 대학생 때 플러터로 애플리케이션을 만들었을 때, 화면이 추가될 때 스택에 쌓이고, 뒤로가기는 스택에서 삭제된다는 점에서 영감을 얻었다. 그래서 이 방식이 키오스크 시스템에 적합하다고 생각했다.

트러블 슈팅 💥

1. 스레드를 이용한 키오스크 진행

  • 단순히 while문을 사용하지 않고, 스레드를 활용하여 키오스크 시스템을 관리하고 싶었다. 이를 위해 Runnable 인터페이스를 사용하려고 했다.

2. 문제 발생

  • Runnable 인터페이스를 구현하려면 각 함수마다 인터페이스를 구현해야 한다는 점을 알게 되었다. 그러면 키오스크 클래스implements 해야 할 것이 많아져서 코드 가독성이 떨어질 것 같았다.
  • 이 점에서 큰 고민을 했다.

3. 해결 방법

  • 인터페이스를 직접 구현하는 방법은 재사용성이 높아지는 장점이 있지만, 이번 프로젝트에서는 굳이 그렇게 할 필요는 없다고 생각했다.
  • 그래서 익명 클래스(Anonymous Class)를 사용하여 함수를 선언했다.
    익명 클래스를 사용하면:
    • 클래스를 따로 선언할 필요가 없고,
    • 코드가 간결해지며,
    • 클래스 구조를 신경쓰지 않아도 되기 때문에 구현이 훨씬 간단해진다.

결론 🎉

스레드를 활용하여 키오스크 로직을 관리하는 방식이 어느정도 생각대로 구현된거 같다.
Runnable을 익명 클래스로 처리함으로써 코드가 간결해지고(사실 코드가 간결하지는 않은거 같다), 뒤로가기 기능을 스택을 이용해 처리할 수 있었다.

이번 과제를 통해 스레드익명 클래스의 활용에 대한 이해를 높일 수 있었고, 더 깔끔한 코드를 작성하는 방법에 대해 배울 수 있었다.


사용 기술 및 구현 내용 🛠️

  • 스레드(Thread): 키오스크 시스템 전체적인 흐름을 관리하기 위해 사용.
  • 익명 클래스(Anonymous Class): Runnable 인터페이스 구현을 위해 사용하여 코드 간결화.
  • 스택(Stack): 메뉴 이동과 뒤로가기 구현을 위해 사용.

최종 결과 🎉

  • 키오스크 시스템의 메뉴가 스레드를 통해 관리되며, 사용자가 메뉴를 선택하면 뒤로가기를 스택을 통해 구현했다.
  • 이번 프로젝트를 통해 스레드 활용과 인터페이스 구현에 대한 이해를 높였다.

Runnable을 담는 스택 선언
함수를 스택에 넣고 빼면서 실행한다

전체적인 키오스크 로직

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

키오스크 소스코드

profile
개발지망생

0개의 댓글