CSC 222: Computer Programming II
Spring 2005
HW5: Inheritance and Stacks
For this assignment, you will build upon existing classes to create a
calculator that can evaluate both infix and postfix expressions. You are given the following
classes:
- Expression: an abstract class that
models a mathematical expression. The class contains abstract methods verify
and evaluate which must be defined in any class derived from Expression.
- InfixExpression: a class, derived from
Expression, that models an infix expression (one in which the operator
comes between its operands).
- Calculator: a class with main method that
serves as a calculator, reading in expressions as lines of text and evaluating them.
You are to extend the calculator so that it gives the user the option of entering
expressions in infix notation or postfix notation (a.k.a. Reverse Polish notation).
In order to accomplish this, you will need to perform the following tasks:
- Define a new class named PostfixExpression that is derived
from Expression and models a postfix expression. Similar to the way that
InfixExpression is defined, your new class will need to implement the
verify and evaluate methods. Recall that a stack can be used
to evaluate a postifix expression: each operand is pushed on the stack, and each
operator is handled by popping two operands off the top, applying the operator,
and then pushing the result.
- Modify the Calculator class so that the main method first prompts the user
as to whether they want to enter infix or postfix expressions for evaluation.
Depending on their response, expressions of that type should be read in and
evaluated.