CMPT 212 Assignment 3 Spring 1998 ------------ Due date: 1:30pm, Friday, March 20, 1998 in the assignment drop-off boxes. LATE ASSIGNMENTS WILL NOT BE ACCEPTED. 1. Goal - To become familiar with class inheritance, abstract classes, and virtual functions. 2. Overview - The program will be a program to read, parse, display, and evaluate two arithmetic expressions. 3. Description - From a user's perspective, the program will appear to be identical to the program from Assignment 2. 4. Design of the Program 4.1 Modules - The program will consist of three modules: a "Parse" module, a "Expression" module, and "Main" module. 4.2 The Parse Module - This module defines the data types and functions to parse a character string into an expression. - The source files for this module will be called "parse.h" and "parse.cpp". 4.2 The Expression Module - This module defines the "expr", "constant", and "composite" classes. - The source files for this module will be called "expr.h" and "expr.cpp". 4.4 The Main Module - The source file for this module will be called "asgn3.cpp". - This module contains the main function of the program. 5. Design Features 5.1 Error Checking - Very little error checking needs to be done. - The program does not have to check for out-of-memory errors or input errors. 5.2 Given Code - The following files are given to you. You must use them. You must not change them. parse.h expr.h - You must implement all of the functions defined in "parse.h" and "expr.h". - These files will be available on the class web page and also in the Assignment Lab on the N: drive. 5.3 Classes - The "expr" class is an abstract class which models an expression. - The "constant" class is a class derived from "expr" which models a constant expression. A constant expression is an expression which consists of just a number (no operations). - The "composite" class is a class derived from "expr" which models an expression that contains an operation. 5.4 Bool Type - If you are using a compiler which does not support the "bool" type, you must define the "bool" type yourself in a header file called "bool.h". Your program must be able to compile without errors under the Borland C++ in the Assignment Lab. 5.5 Miscellaneous - Use "const" wherever possible. - Use the smallest scope and lifetime for every variable, constant, and function. 6. Source Code Comments - Your source code must be fully commented. - See the Sample Assignment on the web page for an example of the expected commenting style. http://www.cs.sfu.ca/CC/212/simpson/98-1/assignments/sample.html 7. Test Runs - Run your program with this input: - Display the first expression. - Set the first expression to "10-3*2". - Display the first expression. - Evaluate the first expression. - Set the second expression to "4.2*(2-5)". - Display the second expression. - Evaluate the second expression. - Join the expressions using division. - Display the first expression. - Evaluate the first expression. - Clear the second expression. - Display the first expression. - Evaluate the first expression. - Display the second expression. - Evaluate the second expression. - Quit. 8. What to Hand In - Title page containing: a. Course number b. Assignment number c. Student name d. Student number e. Student email address - Listing of the source code in this order: a. asgn3.cpp b. parse.h c. parse.cpp d. expr.h e. expr.cpp f. bool.h (if written -- see Section 5.5 above) - Scripts of the test run (see Section 7 above). (end of assignment)