Write a method for the content class

Assignment Help JAVA Programming
Reference no: EM132331513

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.

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
Mobile apps and publication items are Content of the PlayStore. Each Content (either application or publication) is associated with the following information: an ID, name, number of downloads, price, and reviews. Reviews is a collection of Comment objects (see Group B for details). Class Content cannot and should not be instantiated.

Class Application
Application is a type of Content. In addition to the data that a content class have, an Application object has an OS type that presents the minimum operating system requirement. An Application object can be initialized as
Application g1 = new Application("g1", "Pokemon", 5.3, "androidV4");

In the above example 5.3 is the price of the app in dollars, "androidV4" is the OS requirement. Initially the number of downloads is zero, and the reviews are empty.
Application app1 = new Application("app1", "Calendar", "androidV3");

If no price is provided, the application is then free.

Class Publication
Another type of Content is Publication. In addition to the data that the Content class has, a
Publication object also has: publisher and number of pages.

Class Book
One type of Publication is Book, which has an additional data: the author name. Notes, it is possible that one book have multiple authors.

A Book object can be initialized as
String[] authors = {"L. Tolstoy"};
Book b1 = new Book ("b1", "War and Peace", 12.55, "The Russian Messenger", 1225, authors);

"War and Peace" is the name of the book; 12.55 is the price; "The Russian Messenger" is the publisher. The book has 1225 pages and is of course authored by "L. Tolstoy".

Class Magazine
Another type of Publication is Magazine, which has an additional data: volume. A magazine does not contain any author's name. A Magazine object can be initialized as

Magazine m1 = new Magazine("m1", "Forbes", 8.99, "Forbes Media", 50, 201904);

The name of the magazine here is "Forbes", selling for $8.99. The publisher is "Forbes Media". It has 50 pages, and the current volume is 201904. You can assume the volume is always an integer showing the year and the month.

Group B - associated classes

Again, you may need to define methods wherever appropriate to support these classes.

Class Comment
A Comment class keeps the following data: a User, which is the user who wrote the comment and a string for the comment. A Comment object can be initialized as

Comment comment1 = new Comment(u3, "This is a fantastic book!");

Class User

The User class has an ID, a name, a phone number and available fund in the account. By default, a new user will start with 500 in balance. A User can be initialized as:

User u1 = new User("u1", "John Doe", "0412000", 200);
User u2 = new User("u2", "Mary Poppins", "0433191"); // Mary has a balance of 500

Class PlayStore
The PlayStore class have two attributes: a list of Content and a list of User objects. Note that each content can be uniquely identified by content ID. An instance of the PlayStore class named store is created in the main method of PlayStoreMain. The interaction with this store is simulated within the main method (see the PlayStoreMain.java class).

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 (Not Required, 2 bonus marks)

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.

ArrayList<Comment> comments = new ArrayList<Comment>(); comments.add(someComment);

To extract the 4th element:
Comment c4 = comments.get(3); // index starts at 0

You can use HashMap for storing objects, which have unique primary keys. For example,
HashMap<String, Content> contents = new HashMap<String, Content>();

To add a content we use:
contents.put(new Game(...));

To extract the content, use:
content content1 = contents.get("G101"); // return null if no such content is found

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:- Programming Fundamentals Assignment.rar

Verified Expert

The task of the assignment is to develop a Java program for the play store application. The application involves writing many classes.The assignment is developed with writing each of these classes.Each class of the assignment is documented with comments and output is attached in the documentation.

Reference no: EM132331513

Questions Cloud

Prepare the bank reconciliation statement for p and q : On 31 May 2016, the cash at bank account for P&Q Ltd showed a debit balance of $14,824 and the bank statement showed a credit balance of 18,200.
What are some unique characteristics of gates : What are some unique characteristics of Gates's followers that might identify him as charismatic or transformational?
Prepare the adjusting journal entry to record bad debts : The total account receivables of Michelle's Laundry Services have a balance of $300,000 at the end of 30 June 2015. The company uses the allowance.
Importance of providing exemplary customer service : How does technology and social media increase the importance of providing exemplary customer service?
Write a method for the content class : COSC2531 - Programming Fundamentals - RMIT University - Write a method showComments in the Content class to show all the comments of a Content
Which leadership level described in the lecture : Whether you agree or disagree with your results and an explanation of why. Which leadership level described in the lecture do you think you are in?
What do you think might happen if situation doesnot change : Hundreds of millions of songs and videos are illegally downloaded every month and about one-quarter of all Internet users have downloaded a movie.
Arabic versus english language : The number of recognized languages around world is more than 6,000 and the number is expected to increase as the world continues to discover hidden communities
What procedures would you take to fulfill the order : What procedures would you take to fulfill the order? Create a short guide to keep business going if the power is disrupted again in the future due to hurricane.

Reviews

len2331513

7/1/2019 11:32:59 PM

This is an individual assignment worth 20% of your final grade. The grading is based on both demonstration and final code submission. You must demonstrate your assignment in your timetabled practical class prior to your final submission. Assessment Task Marks Group A 2 marks Group B 2 marks Functionality 1 1 mark Functionality 2 2 marks Functionality 3 0.5 mark Functionality 4 0.5 mark Functionality 5 1 mark Functionality 6 2 bonus marks Input and Output 3 marks 1. Code quality and style 2. Modularity / Use of classes, inheritance, polymorphism, methods & arguments 3. Comments / Reflection / Lessons learnt 3 marks

Write a Review

JAVA Programming Questions & Answers

  Recursive factorial program

Write a class Array that encapsulates an array and provides bounds-checked access. Create a recursive factorial program that prompts the user for an integer N and writes out a series of equations representing the calculation of N!.

  Hunt the wumpus game

Reprot on Hunt the Wumpus Game has Source Code listing, screen captures and UML design here and also, may include Javadoc source here.

  Create a gui interface

Create GUI Interface in java programing with these function: Sort by last name and print all employees info, Sort by job title and print all employees info, Sort by weekly salary and print all employees info, search by job title and print that emp..

  Plot pois on a graph

Write a JAVA program that would get the locations of all the POIs from the file and plot them on a map.

  Write a university grading system in java

University grading system maintains number of tables to store, retrieve and manipulate student marks. Write a JAVA program that would simulate a number of cars.

  Wolves and sheep: design a game

This project is designed a game in java. you choose whether you'd like to write a wolf or a sheep agent. Then, you are assigned to either a "sheep" or a "wolf" team.

  Build a graphical user interface for displaying the image

Build a graphical user interface for displaying the image groups (= cluster) in JMJRST. Design and implement using a Swing interface.

  Determine the day of the week for new year''s day

This assignment contains a java project. Project evaluates the day of the week for New Year's Day.

  Write a java windowed application

Write a Java windowed application to do online quiz on general knowledge and the application also displays the quiz result.

  Input pairs of natural numbers

Java program to input pairs of natural numbers.

  Create classes implement java interface

Interface that contains a generic type. Create two classes that implement this interface.

  Java class, array, link list , generic class

These 14 questions covers java class, Array, link list , generic class.

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd