This is a stack-based evaluator, that is, a calculator, which uses a self designed Stack data type. The input expression is in the infix form and is stored in a stack. The expression evaluator then evaluates expressions in O(n) time using an algorithm to convert an Infix expression into a Postfix expression. Software Design patterns, Command and Abstract Factory, are used to evaluate the postfix expression and to create the commands to execute the conversion from infix to postfix, respectively.