프로젝트 개요 |
모바일 프로그래밍 2주차 과제.
지금까지 배웠던 내용(버튼, 텍스트뷰, 온클릭 이벤트)으로 간단한 계산기 어플을 만드는 것.
교수님께서는 괄호와 사칙연산만 되면 괜찮다고 하셨지만,
개인적인 욕심으로 비트연산자 및 함수까지 넣어봤다.
아쉬운 점은,
윈도우 계산기처럼 잘못된 수식을 원천방지하는 것을 목표로 했지만,
의외의 상황이 많아 80% 정도밖에 구현하지 못했다는 점.
프리뷰 |
구현 상세 |
MainActivity
- 오로지 버튼과 텍스트뷰, Mapper에 이벤트를 전달하는 함수만 존재한다.
- 버튼을 클릭하면 Mapper에 이벤트를 전달하여 대신 처리하게끔 한다.
Mapper
- MainActivity와 Eval 사이를 중계해주는 역할을 한다.
- 이벤트를 파싱하고 해당 결과값으로 MainActivity을 갱신하는 것이 주 역할.
- 수식의 계산이 필요하다면 Eval에 수식을 넘겨서 대신 처리하도록 한다.
Eval
- Mapper에서 넘긴 infix 수식을 postfix로 변환하며, 실제 계산순서를 결정하는 역할을 한다.
- 내부적으로 Operation에 정의된 우선순위를 기반으로 계산순서를 결정한다.
- Eval은 계산순서만 정할 뿐, 직접적인 계산이 필요하다면 Operation에 넘긴다.
Operation
- 연산자의 이름과 세부사항(필요한 피연산자의 개수, 우선순위, 실제 계산방법, ...)을 정의하는 역할을 한다.
- 하나의 연산자와 여러개의 피연산자를 전달받아 실제 계산을 수행한다.
코드 |
'# 미사용' 카테고리의 다른 글
그림으로 알아보는 병합 정렬 (merge sort) (0) | 2018.09.30 |
---|---|
그림으로 알아보는 퀵 정렬 (quick sort) (0) | 2018.09.30 |
[백준 11066] 파일 합치기 (0) | 2018.09.16 |
대각으로 테이블에 접근하기 (0) | 2018.09.16 |
[백준 1520] 내리막길 문제풀이 (0) | 2018.08.16 |