싱글 쓰레드
멀티 쓰레드
Thread 클래스를 상속받아 쓰레드를 구현할 수 있습니다.start() 메서드를 사용해야 합니다.join()

오류가 발생 시 boolean 타입 변수를 false로 변경 및 상태를 확인 후 코드를 재실행하는 코드를 작성하였습니다. 하지만 처음 입력에서는 정상 작동을 하는 듯 하였으나, 다음 입력에서는 옳은 입력이 들어와도 코드를 재실행하는 트러블을 경험하였습니다. 코드를 살펴보니 boolean 타입의 변수를 반복문 밖에 선언하였고, 이로 인해 코드의 상태가 계속 false로 고정되어 이러한 트러블이 생긴 것 입니다. 변수를 반복문 안에 선언하여 코드의 트러블을 해결하였습니다.

Step1을 마치고 Calculator 클래스를 작성을 시작하였습니다. 본래 코드의 오류 상태를 boolean 타입으로 확인하였지만, Java에서 기본 타입(int, boolean...등)은 값으로 전달되기 때문에 매서드 안에서 상태를 변경하여도 main에서 변수에 영향을 주지 못하였습니다. 이를 대신하여 null을 활용하여 코드의 오류 상태를 감지하는 방식을 선택하였고, 이를 위해 caculate 매서드를 Integer 타입으로 생성하였습니다. int는 null값을 가질 수 없고, 숫자 값만을 사용가능. Integer는 null값을 가질 수 있고, 객체타입입니다.

Step3 진행하는 중, 코드를 double 타입도 받을 수 있도록 수정해야만 했습니다. 해결방법이 확실히 떠오르지 않아 코드를 어떻게 수정해야할 지 고민하여 트러블슈팅 계획을 설립하려고 합니다.
여러 타입의 값을 받을 수 있도록 제네릭 함수를 사용해야 합니다.
(이 때 Scanner 객체는 Number 클래스로 받을 수 없기 때문에 double 타입으로 값을 받고, 소수점 유무에 따른 타입 구분 로직을 만들어야 합니다.)
제네릭 함수에 맞추어 클래스와 매서드들을 대폭 수정해야 합니다.
(현재 클래스와 매서드들은 정수형에 맞추어 제작되어 있기 때문에 이를 제네릭 함수에 맞추어 수정하고 새로운 검증 로직을 만들어야 합니다.)
Enum 클래스를 연산자를 이용하여 생성하였기에, 이를 다른 방식으로 처리해야 합니다.
(제네릭 클래스는 연산자를 사용할 수 없기 때문에 Number 클래스를 사용할 계획이며, double타입으로만 값을 반환하게되면 2배의 메모리 낭비가 생기기 때문에 instanceof로 타입을 체크하여 입력 값의 타입을 정하려고 합니다. )