Reference no: EM132410169
OODP101 Object Oriented Design and Programming Assignment - Programming Solution to a Problem, Kent Institute, Australia
Unit Learning Outcomes addressed: Upon successful completion of this unit students should be able to:
a. Analyse and dissect simple design and programming problems.
b. Demonstrate basic knowledge of object oriented programming concepts and syntax.
c. Implement a well-designed modularised solution to small programming problems.
d. Develop and/or implement testing schedules.
Assessment Task: Individual Programming Solution to a Problem
Objectives - After completing this assessment, you should have developed skills to demonstrate that you are able to:
Write classes that are subclasses of other classes.
Write code that overrides behaviour of inherited methods.
Write code that exploits the benefits of polymorphism.
Observe/apply principles of good object-oriented design.
1. Individual understanding of Object Oriented Programming principles
Write about 500 words to explain what you have learnt in week 9 and week 10. Use appropriate examples to illustrate your understanding.
2. Program
2.1 Background
The classes you write will be to represent a variety of product types available at a supermarket. They will all have a common method to produce a line of output suitable to be included in a docket. However, depending on what type of product it is, this output will contain different sort of information.
For all products, the output line should include:
- The name of the item
- The ID of product
- The price of the item
- The amount of the price which is a tax-component (explained below).
Depending on the type of product, the following additional information should be output:
- If it is a Fresh Fruit item, the weight of the item (e.g. the Apple is 100 grams, the watermelon is 1200 grams).
- If it is a Packaged item, the quantity of units in the package (e.g. 4 eggs in the package, 20 chocolate bars in the bag), and a use-by date.
The tax-component is calculated from the price of the item, and the following rates are used:
- For Fresh Fruit items, 0%.
- For Packaged items, 10% of the price.
2.2 Tasks -
1. Create a class named Product to be the superclass of all products. It should have suitable constructors to aid with polymorphic behaviour, and contain suitable attributes to store the information that is common to all product types (but whose values vary for each instance of that product type), and appropriate accessors. For all products, the toString method should return only the name and ID of the product.
2. Create a class to represent Fresh Fruit items. It should be a subclass of the class made in task 1. Ensure that it contains appropriate attributes to store additional information specific to fresh fruit. Ensure that there is a suitable constructors, mutators to set all values appropriately, and that there are appropriate accessors to obtain all information relevant to fresh fruit. Override toString() method so that it return all relevant information related to the fresh fruit.
3. Create a class to represent Packaged items. It should be a subclass of the class made in task 1. Ensure that it contains appropriate attributes to store additional information specific to packaged items. Ensure that there is a suitable constructors, mutators to set all values appropriately, and that there are appropriate accessors to obtain all information relevant to packaged items. Override toString() method so that it return all relevant information related to the Packaged items.
4. Create a driver class which will have main method and following functionalities.
Create 5 Fresh Fruits items and 5 packaged items and display them on console.
Ask user to select the products that they want to buy by selecting the IDs.
User can buy multiple products in one purchase.
Use proper get methods to find total amount and total tax component.
Display the docket which will have information about total amount due and total tax value in purchase.
5. Create a class diagram for above mentioned classes. Show all attributes, methods and proper relationships between classes.