Your first assignment is to write a section of code that demonstrates the following aspects of OOP in C++:
1. Over-loading using multiple constructors.
2. Over-riding of a method through inheritance.
3. An example of Multiple Inheritance (does not have to make perfect sense).
4. Separate compilation (with all classes).
5. Example use of a friend functions that receives an object of a class.
6. Abstract classes with a method that is required in all derived classes.
7. A class with a modified copy constructor and demonstrate the effect of this on pass-by-value and pass-by-reference.
8. A working destructor with some basic functionality. Demonstrate it working.
9. Correct use of over-loaded operators (+, = and ==) for one of your classes.
10. Correct use of all access specifiers (public, private, protected) in an appropriate way.
11. Operations on pointers to arrays of objects. The operation should call the function that is defined in point 6 above.
12. Use of all four C++ style casts.
13. Use of dynamic binding with virtual & non-virtual methods. Demonstrate the effect.
14. Correct use of new and delete for the allocation of an object/objects, with operations on the object using pointers. (Can be combined with other points)
15. Static states of a class and an example usage. Demonstrate the effect.
16. Demonstrates the difference between a C++ class and struct.
17. Passing an object to a method by const reference. Demonstrate the effect.
18. Write a straightforward class template.
19. Use of the vector container to contain a number of objects of one of your classes.
20. Use of an algorithm on your container.
There are 20 points to address and there is 10% available for the assignment, so 0.5% per point is the outline marking scheme. If you address 14 out of 20 points clearly and correctly then you should receive 7/10 (or 70% on Moodle).
Please note, I would recommend that you hard code the input of data, i.e. don't bother trying to set up a menu system or read values in from the user using cin. It is not necessary for this assignment and would lengthen it considerably.
As for the topic; that is up to you - Keep it simple. If one of the points does not fit into your application, just add it anyway for demonstration i.e. The application does not have to make perfect practical sense). The one rule is that you CANNOT use bank accounts (or any type of account), personnel/DCU structures, vehicles/cars, geometric shapes or ducks as the application. If you must, you can break the points into two separate applications.
REPORT STRUCTURE (IMPORTANT!)
There should be a brief introduction at the start of your report that explains your application idea and LISTS CLEARLY one numbered paragraph for each of the points listed above (in the same order as numbered) and explains where in your code they have been implemented. In your code comment the sections where you show the points above, detailing the point that you have addressed. This is for the sole purpose of making it easier for the tutor to correct - but without this your assignment will not be marked.
Submit your assignment electronically as a **SINGLE** Google document, Word Document, raw text document or PDF. This document should *only* have the following sections:
Title and Student name, e-mail address, id and programme details etc.
Introduction (introduces your application and program structure)
Implementation (one numbered paragraph for each of the points ordered as above, which points to the location in the code where the point has been implemented – e.g. Point 6 – the class Account is an abstract class because it is missing the display() method implementation and this has been provided in the child CurrentAccount class)
Properly Formatted and Spaced Code (the embedded code with comments referring to the 20 points)
You do *not* need to submit a working executable.
This assignment should give you some practical experience for the end of semester exam, so I am looking on it as a study aid.
As for submission date: Friday the *** 31st of October 2014 by midnight. ***
You should submit the assignments via Moodle at the address: http://moodle.dcu.ie/mod/assign/view.php?id=60022
Once again, use the main discussion forum here: http://moodle.dcu.ie/mod/forum/view.php?id=47984 if you have any questions on the assignment. Do not paste your code! Paste in a similar example if you need to clarify a point. If you know the answer to someone else's question please feel free to respond.
One final important issue - Please note that by the electronic submission of your first assignment I am assuming that you are familiar with the academic rules for assignments. The assignment should be 100% your own work. If any unreferenced work is used from any other source (including colleagues, the Internet or past students) it will be a serious matter and referable to the disciplinary board. Please note that all assignments corrections can be the subject of an interview process. See:
All assignments for this module will be uploaded to www.turnitin.com where the content will be analysed and compared to other assignment from this year and previous years. I take this matter very seriously as a few years ago several students were referred to the disciplinary committee resulting from plagiarism in this module – In one case a student was expelled from the University due to the severity of the plagiarism and the fact that at fourth/fifth year level, he should have known better.
If after you receive your mark you are concerned that there is an error with the correction, please contact the module tutor that corrected your assignment. If the tutor checks it and if you are still unhappy please contact me directly and I will discuss the issue with you and the tutor directly.
If I have failed to address any aspect of this assignment then please post to the forum.