Reference no: EM132313996
Programming Fundamentals Assignment -
Objective - The main objective of this assignment is to familiarize you with object oriented design and programming. Object oriented programming helps to solve complex problems by coming up with a number of domain classes and associations. However identifying meaningful classes and interactions requires a fair amount of design experience. Such experience cannot be gained by classroom-based teaching alone but must be gained through project experience.
This assignment is designed to introduce different concepts such as inheritance, abstract classes, method overloading, method overriding, and polymorphism.
General Requirements -
1. Your final code submission should be clean, neat, and well-formatted (e.g., consistent indentations) and abide by the formatting guidelines.
2. Identifiers should be named properly and camel case e.g. UsedCar (class) and carPrice (variable). [Google "camel case"]
3. You must include adequate meaningful code-level comments in your program.
4. For each input from the user, display appropriate prompt message.
5. For each invalid input from the user, display appropriate error message.
6. IMPORTANT: your code should be able to compile and run under command-line.
Assignment overview -
A PlayStore is a standalone digital marketplace that allows users to browse and download mobile applications (APPs). The PlayStore also serves as a digital store offering publications like e-books and digital magazines. Applications and publication items in the PlayStore are either free or can be bought for a price.
The program you create will allow the creation of a store, filling it with products, creating users and simulating their interaction with the store (purchasing products, adding comments etc).
Assessment tasks -
Your program should consist of multiple class files where you can demonstrate your knowledge of inheritance, polymorphism, method overriding, abstract classes, etc. You need to write classes, add methods and variables to complete the following tasks performed by the admin of the PlayStore.
There are two sample/starter classes (PlayStoreMain.java and PlayStore.java) provided.
Section 1: The classes and their attributes
Group A - content classes
You may need to define methods wherever appropriate to support these classes.
Class Content
Class Application
Class Publication
Class Book
Class Magazine
Group B - associated classes
Again, you may need to define methods wherever appropriate to support these classes.
Class Comment
Class User
Class PlayStore
Section 2: Functionalities of the classes
User functionalities
1. Method becomePremium. A user can become a Premium user for a cost of $100. A premium user gets 20% discount on each purchase of the contents after becoming premium.
2. Method buyContent, where the parameter is a Content type of object. When a user buys any content, the price of that content needs to be deducted from the balance of that user. Do necessary checks before the deduction. You need to consider whether the user is a premium user or not in this step. The number of downloads of the content should increase after the purchase.
a. Exceptions must be thrown when trying to buy a content with an insufficient balance. The exception thrown must indicate the cause of error, show an appropriate error message, allowing the caller to respond appropriately and recover if possible. Note that when you add exceptions the method calls will need to be surrounded by try/catch blocks.
b. A user may buy multiple content. Write a method showContentBought in the User class to show the list of names of all the contents that the user has bought. You may add additional attributes in the User class if necessary.
Content and Comment functionalities -
3. Write a method for the Content class, where a comment/review (which is a Comment type of object) from users can be added to a Content object.
4. Write a method showComments in the Content class to show all the comments of a Content object (e.g. a particular game or book).
PlayStore and Admin functionalities -
5. Write a method showContent of the PlayStore class to show a list of all available contents. Also write a method for each type of contents to show the list of contents of that type (e.g., show all applications, show all books, show all magazines).
Do you need to write a method for each type? Is that possible to use one method for this task? (Hint: You may find Java getClass() method in java.lang.Object useful).
Use of Java Collections -
6. You are encouraged to use collections such as ArrayList and HashMap. ArrayList implements an array which can grow indefinitely. HashMap allows an association to be created between keys and objects. Using such classes also reduces the amount of code required as they provide methods for retrieving required objects easily.
Input and output -
Your program should hard code a list of objects including content objects, user objects and comment objects etc. for testing purpose. See the skeleton sample code. (During marking, we may replace these objects with our own to test your program).
You program should have a simple menu to allow an admin to perform aforementioned tasks such as:
- upgrading a member to premium account;
- purchasing one item for one user;
- listing all available contents;
- showing all purchased items of a user;
- showing all comments of a content;
Input validation and error handling should be implemented. Input and output should be inside of the class PlayStoreMain.
Attachment:- Assignment Files.rar