The learning outcomes that are assessed by this coursework are:
1. Have a comprehensive understanding of OO programming concepts: abstraction, encapsulation, inheritance, etc.
2. Be able to select appropriate API facilities in the design, implementation and testing of OO applications and applets.
Late submission of coursework policy: Late submissions will be processed in accordance with current University regulations which state: “the time period during which a student may submit a piece of work late without authorisation and have the work capped at 40% [50% at PG level] if passed is 14 calendar days. Work submitted unauthorised more than 14 calendar days after the original submission date will receive a mark of 0%. These regulations apply to a student’s first attempt at coursework. Work submitted late without authorisation which constitutes reassessment of a previously failed piece of coursework will always receive a mark of 0%.”
This individual summative assessment counts 50% towards your module mark. You are given a scenario for your assignment. This takes the form of a design description and a specification by way of a class diagram. You should gain an understanding of the scenario, implement the class diagram and produce the functionality listed within the use cases. You should implement each class to the expected standards as discussed and practiced during the module.
The objective of this assessment is for you to demonstrate your ability to design and implement an OO system consisting of a set of Java classes and a client program. In particular:
1. To design and implement classes with suitable fields, constructors, accessor methods, and modifier methods.
2. To conform to the standard conventions of Java.
3. To implement classes that are associated by inheritance, delegation, composition and aggregation.
4. To write a client application that uses your classes to show that they function correctly. Submission
Submit one .zip Archive File called imat5101LabTest.zip via Blackboard consisting of your (Eclipse) project folder. Make sure all of your source code is in there.
UC1: A test program that creates an instance of Cart, populates it with several orders (for both products and discount products), and uses a foreach loop to produce a formatted listing of the orders with their price, the number of items in the cart and the overall total price. Note: You can either use a data file to dynamically read orders, or hardcode the order instances to add to the cart.
UC2: Test each of the sort methods work as expected, as evidenced by appropriate output.
• For the sortOrders(Comparator<Order>) method, you should pass in a custom comparator that sorts by cost (asc) and if these are the same then by product (desc).
UC3: Additionally, test the use of equality by using the contains and remove methods. Also, you should use a PrintWriter to produce a receipt for all of the orders and associated details of the cart, and output these into a text file Cart.txt.
UC4: Add further code to show how each method of Cart can be used. In particular, increase and/or decrease the quantity of one or more of the products in the cart, and then re-print the updated cart listing
UC5: Create an instance of RewardProcessor, add a selection of products
to it (but not all the same as those in your cart), and then test the
rewardPoints method appropriately.
These indicators will be used as a basis for the assessment mark and will form your feedback. (70% Model) Class documentation, design and implementation.
• Javadoc class headers, method and constructor descriptions, and use of @tags. [Stage 1]
• Fields, constructors and standard methods – (adhering to standard Java conventions). [Stage 1]
• Correct implementation of associations (Composition, Aggregation and Inheritance). [Stage 1]
• Appropriate overridden implementations of the equals(…) method. [Stage 1]
• Use of common Interface types, e.g. Iterable, Comparable, Comparator. [Stage 1]
• Implementation of reward points, and a hash-based collection. [Stage 2]
• Implementation of price policies, using a functional interface. [Stage 3]