- 어떤 계산기 기능이 필요한지 명확히 한다.
- 콘솔 기반인지, GUI 기반인지 사용자 인터페이스 방식을 결정한다.
- 클래스 다이어그램: 계산기에 필요한 클래스를 설계
- 기능 분해: 주요 기능을 메소드로 분리
- 데이터 흐름 설계: 데이터가 클래스 간에 어떻게 흐를지 결정(입력, 처리, 출력)
- 계산기는 2개의 숫자를 받을 수 있고, 사칙연산 될 문자를 받을 수 있다.
- 계산기는 ‘exit’를 입력할 때까지 계속해서 값을 받고 연산 결과를 반환한다.
- Lv2
- 계산된 결과 값들을 기록하는 컬렉션을 만든다.
- 컬렉션의 가장 먼저 저장된 데이터를 삭제하는 기능을 만든다.
- Lv3
- 양의 정수를 받았지만 이제부터실수도 받을 수 있게 수정한다.
- 결과가 저장되어 있는 컬렉션을 조회하는 기능을 만든다.(특정 값보다 큰 결과 값을 출력)
Level 1
- `필수 구현` 클래스 없이 자바의 기본 문법만을 사용하여 구현한 계산기① 양의 정수(0 포함)를 입력 받는다.
-
Scanner를 사용하여, 양의 정수 2개 요청 -
double함수 사용 -
while문을 사용하여, 잘못된 입력일 경우, 재입력 요청
② 사칙연산 기호(➕, ➖, ✖️, ➗)를 입력받는다.
-
Scanner사용 -
charAt(0)타입으로 저장 -
while문을 사용하여, 잘못된 입력일 경우, 재입력 요청
③ 입력 받은 내용으로 연산 진행 후, 결과 값 출력
-
switch를 사용해 연산 기호 구분 -
while문을 사용하여, 잘못된 입력일 경우, 재입력 요청(0으로 나누기)
④ 계속해서 계산을 할 수 있도록 하고, exit 입력 시 종료되도록 한다.
-
while문을 사용하여, 스텝별로 반복 -
Scanner를 사용하여, 계속 진행 할 것인지 확인
Level 2
- 필수 구현 객체 지향 개념을 적용하여 클래스 정의, 연산을 수행하는 메소드 작성한 계산기① 사칙연산 → 결과값 반환 메서드 구현/연산 결과를 저장한다.
- 컬렉션 타입 필드를 가진
Calculator클래스를 생성 - 결과 값을 반환하는 메서드와 연산 결과를 저장하는 컬렉션 타입 필드를 가진
App클래스 생성 -
App클래스의main메서드에Calculator클래스가 활용될 수 있도록 수정한다.- 연산 수행 역할은
Calculator클래스가 담당 - 연산 결과는
Calculator클래스의 연산 결과를 저장하는 필드에 저장
- 연산 수행 역할은
-
App클래스의main메서드에서 연산 결과를 저장하는 컬렉션 필드에 직접 접근하지 못하도록 수정한다. (캡슐화)- 간접 접근을 통해 필드에 접근하여 수정/가져올 수 있도록 구현
② 저장된 계산 결과들 중 가장 먼저 저장된 데이터를 삭제하는 기능을 가진 메서드를 구현한다.
-
App클래스의main메서드에 삭제 메서드가 활용될 수 있도록 수정
Level 3
- `도전 구현` 자바의 Enum, 제네릭, 람다 & 스트림을 적용한 계산기① 연산자 타입에 대한 정보를 관리할 수 있도록 한다.
-
Enum타입 활용(ArithmeticCalculator클래스)
② double 타입의 값을 전달 받아도 연산이 수행되도록 한다.
-
제네릭사용하기 - 피연산자를 여러 타입으로 받을 수 있도록 기능 확장
③ 저장된 연산 결과들 중 Scanner로 입력받은 값보다 큰 결과값 들을 출력
-
ArithmeticCalculator클래스 -
Lambda & Stream활용