Skip to content

dain391/calculator-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CalculatorProject

개발 프로세스

1. 요구사항 정의

  • 어떤 계산기 기능이 필요한지 명확히 한다.
  • 콘솔 기반인지, GUI 기반인지 사용자 인터페이스 방식을 결정한다.

2. 설계

  • 클래스 다이어그램: 계산기에 필요한 클래스를 설계
  • 기능 분해: 주요 기능을 메소드로 분리
  • 데이터 흐름 설계: 데이터가 클래스 간에 어떻게 흐를지 결정(입력, 처리, 출력)

기능 설계

  • 계산기는 2개의 숫자를 받을 수 있고, 사칙연산 될 문자를 받을 수 있다.
  • 계산기는 ‘exit’를 입력할 때까지 계속해서 값을 받고 연산 결과를 반환한다.
  • Lv2
    • 계산된 결과 값들을 기록하는 컬렉션을 만든다.
    • 컬렉션의 가장 먼저 저장된 데이터를 삭제하는 기능을 만든다.
  • Lv3
    • 양의 정수를 받았지만 이제부터실수도 받을 수 있게 수정한다.
    • 결과가 저장되어 있는 컬렉션을 조회하는 기능을 만든다.(특정 값보다 큰 결과 값을 출력)

1. 필수 기능 가이드

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 활용

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages