Git Product home page Git Product logo

java-calculator's Introduction

java_calculator

자바 계산기 구현 미션 Repository입니다.

📌 과제 설명

계산기 기능입니다. 띄어쓰기 기준으로 숫자와 부호들을 받아 계산하고 올바른 식이라면 저장해두고 조회할 수 있습니다.

👩‍💻 요구 사항과 구현 내용

  • 띄어쓰기를 기준으로 부호와 숫자를 나눴습니다.
  • 객체지향적인 코드로 계산기 구현하기

구현 내용

  • 조회는 디비의 내용을 순서대로 출력하였습니다.

  • 계산은 입력을 받고 띄어쓰기 단위로 나누어 어레이리스트에 넣어주었습니다.

  • 그리고 올바른 표현식인지 검사하였습니다.

  • 곱하기와 나누기를 먼저 우선적으로 스택을 이용하여 구하고 스택에는 곱하기, 나누기가 완료된 숫자와 +,- 부호만 남겼습니다.

  • 이후 +,- 계산을 최종적으로 하고 그 결과와 식을 db에 넣었습니다.

    • [ O ] 더하기
    • [ O ] 빼기
    • [ O ] 곱하기
    • [ O ] 나누기
      • 정수형이며 소숫점은 내림합니다.
    • [ O ] 우선순위(사칙연산)
  • [ X ] 테스트 코드 구현하기

    • 코드를 다 짜고 테스트 코드를 짜보려고 했는데 짜고보니 테스트코드를 실행할 수 없는 코드입니다.
    • 따라서 현재 코드를 테스트 코드를 사용할 수 있는 코드로 리팩토링 하려고 합니다.
    • 현재 input값과 계산,서비스 로직이 한 클래스 안에 들어가 있는데 인풋값을
  • [ O ] 계산 이력을 맵으로 데이터 저장기능 만들기

    • 어레이 리스트를 이용해서 구하였습니다.
  • [ X ] 정규식 사용

##✅ PR 포인트 & 궁금한 점


  1. 테스트 코드 구현 실패
  • 코드를 다 짜고 테스트 코드를 짜보려고 했는데 짜고보니 테스트코드를 실행할 수 없는 코드가 되었습니다.
  • 따라서 현재 코드를 테스트 코드를 사용할 수 있는 코드로 리팩토링 하려고 합니다.
  • 현재 사용자가 입력을 하는 로직이 있는 클래스에 서비스 로직이 같이 안에 들어가 있는데 입력과 로직을 분리하고 테스트 코드를 할 수 있도록 하려고 합니다.
  • 즉, 사용자 입력과 서비스 로직을 완전히 구분하고, 단위 테스트를 위하여 파싱,식 검증 등을 각각의 객체로 분리하려 합니다.
  1. OOP 스러운 구현을 어떻게 하는지 아직 잘 모르겠습니다.
  • 현재 코드는 계산기 부분이 절차 지향적으로 짜여져 있다고 생각합니다. 일단 테스트 코드가 잘 되도록 리팩토링을 하고 OOP 지향적으로 리팩토링 하려고 합니다.
  1. 커밋을 언제 어떻게 해야할지 아직 감이 잡히지 않습니다. 만들다 보면 이미 기능이 거의 완성되어 있습니다.😢

기능은 되지만 아직 테스트 코드를 거의 짜지 못했습니다. 리팩토링을 크게 해야할것같아 주말내로 끝내지 못할 확률이 높아 피드백을 받고 싶어 수정전 코드를 올렸습니다.감사합니다!

실행결과(콘솔)

1. 조회
2. 계산

선택 : 2

1 + 2
3

1. 조회
2. 계산

선택 : 2

1 + 2 * 3
7

1. 조회
2. 계산

선택 : 1

1 + 2 = 3
1 + 2 * 3 = 7

선택 : 2

3 - 2 * 2
-1

java-calculator's People

Contributors

hunkikim avatar learn-programmers avatar ksy90101 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.