Objectives for Lab 1-3
After lab 1 (How fast do you write?) you’ve got to consolidate some of the previous step’s basic knowledge of objects and shown that you can dynamically manage their “life cycle” with constructors and destructors. This has hopefully also resulted in a lot of training on pointer handling.
In lab 2 (A string class) alternatively lab 3 (A fraction class) you will have learned how to write a flexible class of good usability and quality. This means you have created an easy to use class, providing a number of user-defined operators, together with some other well-chosen member functions and member variables. You will have used appropriate const declarations on parameters and return values as well as on methods and variables, and you possibly also have applied some exception handling, as suggested in an additional (optional) task.
2 labs must be reported in this step. Lab 1 is mandatory, thereafter you select one of the labs 2 or 3, which are relatively equal regarding the general need of overloaded operators (as well as constructors and destructor). The main difference is that Lab 2 requires an in depth insight in memory management to flawlessly handle all needed dynamic allocation. This is not necessarily expected in Lab 3, which is mainly dealing with mathematical issues. Though the latter lab is probably considered to be on a more advanced level, i.e. the requirement are a lot more challenging in technical severity.
Also implementing the optional tasks in these labs, meaning that you provide your applications with a good error handling through appropriate exception mechanism, may support your opportunities for any higher grading 4 or 5 (A-C) at the end of the course.
The solutions must meet the requirements specified in the respective PM and work flawlessly together with classes and test programs, supplied with labs (see materials in the right menu).