Reference no: EM132425959
IMAT5101 Object Oriented Programming Assignment - De Montfort University, UK
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.
About this assessment - 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.
Objectives - 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.
Your Scenario: Shopping Cart
STAGE 1 -
Use Cases: You should have a test class, with a main method, that should complete the following use cases for the "Shopping Cart System" to show it works as expected. Please clearly highlight where each use case is exercised in your test program with comments:
CartTest
UC1: A test program that creates an instance of Cart, populates it with several orders (for both products and discount products), and uses a for-each 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.
STAGE 2 -
Use Cases: Add the following use case at the end of your existing code in your test program - you may need to update other code that has been affected by the additional changes.
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.
STAGE 3 -
Use Cases: Add the following use case at the end of your existing code in your test program - you may need to update other code that has been affected by the additional changes.
UC6: Create four different Order object instances and ensure each has a different price policy - default, buy 1 get 1 free, buy 2 get 1 free, and buy 5 get 1 free.
Calculate the cost of each to show the price policies are being applied correctly, and test each policy with different quantities.
Attachment:- Object Oriented Programming Assignment File.rar