2017-10-23 1 views
1

스칼라 숫자 및 분수에 대한 기본 계산 (+, -, *, /)을 수행 할 수있는 수학적 문자열 표현 파서를 구현합니다. 예 : 평가 : "1/3 * (4/10-12/10)"은 "-4/15"를 반환합니다.Java 알 수없는 자식 유형이 런타임 전에 입력되었습니다.

기존 수학 계산 또는 분수 클래스에 의존하지 않고 유효한 수학 표현식을 사용할 수 있습니다.

  • 스칼라
  • 분획
  • 기본적인 동작 (2 분획 2, 스칼라, 또는 각각 하나)
  • 의 실행 우선 순위를 결정하기 위해 분석 될 배합 식 기본 작업

문자열을 전달할 때 프로그램은 작은 표현식 (혼합 표현식)으로 분류 할 수 있는지 또는 기본 연산 인 경우 평가할 것인지 결정합니다.

즉, 표현식이 주어지면 프로그램은 런타임에 어떤 유형의 클래스를 사용해야하는지 결정해야합니다.

이상적인 클래스/하위 클래스 구조는 무엇이며 개체 유형을 결정하는 코드는에 있어야합니까? 부모 클래스의 생성자에서? 정적 방법으로? 추상적 인 수업에서?

현재 Java를 사용하고 있지만 질문은 언어에 구애받지 않습니다.

+0

문제 도메인을 개발 한 다음 해당 도메인에 대한 객체 모델을 개발하는 것과 마찬가지로 일반적으로 Java 또는 프로그래밍에 관한 문제는 아닙니다. 이 경우부터이 질문은 다른 포럼에 가장 적합 할 수 있습니다. – scottb

답변

1

여기에는 계층 구조가있는 것 같습니다. ExpressionScalar, Fraction, OperationCompoundedExpression 인 여러 개의 ExpressionComponent을 구성 할 수있는 기본 참조 인 것으로 보입니다.

파싱되는 방법은 사용자의 재량에 달려 있지만 공장 (예 : 여기에서 물건의 인스턴스를 생성하기 위해 공장을 사용할 것입니다)은 사용할 이러한 개체의 구체적인 인스턴스를 생성합니다. 모두 기본형 인 ExpressionComponent이므로 Expression에 대한 API를 사용하면 지능형 방식으로 여러 개의 ExpressionComponent과 상호 작용할 수 있습니다.

+0

이것은 매우 도움이됩니다, 나는 공장에 대해 몰랐습니다, 감사합니다. – sousben

관련 문제