-
간단한 산술 연산이 가능한 계산기 프로그램을 스테이트 패턴을 이용해서 구현
- 정수 범위 내에 있는 숫자는 계산 가능
- 사칙 연산과 나머지 연산(+, -, *, /, %)
-
State Machine
flowchart Start((Start)) Operand1((Operand1)) Operand2((Operand2)) Operator((Operator)) Start --"digit<br>(0~9)"--> Operand1 Operand1 --"operator<br>(+,-,*,/,%)"--> Operator Operator --"digit<br>(0~9)"--> Operand2 Operand2 --"operator<br>(=)"--> Start Operand1 --"digit<br>(0~9)"--> Operand1 Operator --"operator<br>(+,-,*,/,%)"--> Operator Operand2 --"digit<br>(0~9)"--> Operand2
-
상태에서 다른 상태로의 이동은 설명 내용에 해당되는 입력이 들어올 때 일어나며, 사용자는 숫자(들), 산술 연산자, 숫자(들), '=' 순서로 정확하게 입력한다고 가정할 것.
상태 설명 Start 시작 상태, 피연산자 2개를 저장하는 변수는 0으로 초기화 Operand1 첫 번째 피연산자 입력 상태 Operator 연산자 입력 상태.
Operator 상태에서 다시 연산자가 입력되면 기존 연산자를 덮어 씀(overwrite)Operand2 두 번째 피연산자 입력 상태
'='가 입력되면 결과값을 계산해서 저장한 후 Start 상태로 이동 -
State 인터페이스
classDiagram class State { <<interface>> + void processDigit(int digit) + void processArithmeticOperator(char ch) + void processEqualOperator() }
-
Main 클래스
-
주어진 코드를 완성
-
사용자로부터 한 글자씩 입력받고 숫자, 산술 연산자, '=', 'q', 'Q'가 아닌 다른 글자가 입력되면 "invalid input" 을 출력하고 계속 실행
-
'q'나 'Q'를 입력하면 프로그램 중단
-
'='를 입력받으면 상태 기계를 이용해서 계산 후, 결과를 다음 형태로 출력한 후 계산기를 초기화(객체를 새로 생성하는 것이 아니라, Calculator 객체 내부의 피연산자나 결과값을 0으로 초기화하고 새로 계산할 수 있도록 함
숫자 연산자 숫자 = 결과값
-
-
출력 예시
2 3 + 3 2 4 = 23 + 324 = 347 3 2 * 3 = 32 * 3 = 96
generated from smu-202115064/Advanced-Object-Oriented-Programming-Template
-
Notifications
You must be signed in to change notification settings - Fork 0
smu-202115064/Advanced-Object-Oriented-Programming-HW09
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
[서울] 고급객체지향프로그래밍 (HAEA9228 (2)) [2학기] / 실습과제 #09
Topics
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published