COSC2531作业代做、代写Programming留学生作业、代做java课程设计作业
very similar ideas.Plagiarism-detection tools may be used for all submissions. Penalties will be applied in casesof plagiarism.ObjectiveThe main objective of this assignment is to familiarize you with object oriented design andprogramming. Object oriented programming helps to solve complex problems by coming up witha number of domain classes and associations. However identifying meaningful classes andinteractions requires a fair amount of design experience. Such experience cannot be gained byclassroom-based teaching alone but must be gained through project experience.This assignment is designed to introduce different concepts such as inheritance, abstractclasses, method overloading, method overriding, and polymorphism.Final submissionThe final submission is due on week 12. Your final submission through Canvas should be a zipfile that includes the following files –1. The java files of your assignment. Do not submit the .class file.2. (Optional) If you are unable to complete the code, please also submit a word or pdf documentfile with the brief description of problems encountered and lessons learnt. If you have notreceived full marks during the demonstration and then made any change in your codeafterwards, submit a word or pdf document file with the brief description of changes as well.General Requirements1. Your final code submission should be clean, neat, and well-formatted (e.g., consistentindentations) and abide by the formatting guidelines.2. Identifiers should be named properly and camel case e.g. UsedCar (class) andcarPrice (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 overviewA PlayStore is a standalone digital marketplace that allows users to browse and downloadmobile applications (APPs). The PlayStore also serves as a digital store offering publicationslike e-books and digital magazines. Applications and publication items in the PlayStore areeither free or can be bought for a price.The program you create will allow the creation of a store, filling it with products, creating usersand simulating their interaction with the store (purchasing products, adding comments etc).Assessment tasksYour program should consist of multiple class files where you can demonstrate your knowledgeof inheritance, polymorphism, method overriding, abstract classes, etc. You need to writeclasses, add methods and variables to complete the following tasks performed by the admin ofthe PlayStore.There are two sample/starter classes (PlayStoreMain.java and PlayStore.java) provided. Section 1: The classes and their attributesGroup A - content classesYou may need to define methods wherever appropriate to support these classes.Class ContentMobile apps and publication items are Content of the PlayStore. Each Content (eitherapplication or publication) is associated with the following information: an ID, name, numberof downloads, price, and reviews. Reviews is a collection of Comment objects (see Group Bfor details). Class Content cannot and should not be instantiated.Class ApplicationApplication is a type of Content. In addition to the data that a content class have, anApplication object has an OS type that presents the minimum operating systemrequirement. 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 OSrequirement. 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 PublicationAnother type of Content is Publication. In addition to the data that the Content class has, aPublication object also has: publisher and number of pages.Class BookOne type of Publication is Book, which has an additional data: the author name. Notes, it ispossible 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” isthe publisher. The book has 1225 pages and is of course authored by “L. Tolstoy”. Class MagazineAnother type of Publication is Magazine, which has an additional data: volume. A magazinedoes not contain any author’s name. A Magazine object can be initialized asMagazine 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 “ForbesMedia”. It has 50 pages, and the current volume is 201904. You can assume the volume isalways an integer showing the year and the month.Group B – associated classesAgain, you may need to define methods wherever appropriate to support these classes.Class CommentA Comment class keeps the following data: a User, which is the user who wrote thecomment and a string for the comment. A Comment object can be initialized asComment comment1 = new Comment(u3, "This is a fantastic book!");Class UserThe User class has an ID, a name, a phone number and available fund in the account. Bydefault, 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 500Class PlayStoreThe PlayStore class have two attributes: a list of Content and a list of User objects. Note thateach content can be uniquely identified by content ID. An instance of the PlayStore classnamed store is created in the main method of PlayStoreMain. The interaction with this storeis simulated within the main method (see the PlayStoreMain.java class). Section 2: Functionalities of the classesUser functionalities1. Method becomePremium. A user can become a Premium user for a cost of $100. Apremium user gets 20% discount on each purchase of the contents after becomingpremium.2. Method buyContent, where the parameter is a Content type of object. When a user buys anycontent, the price of that content needs to be deducted from the balance of that user. Donecessary checks before the deduction. You need to consider whether the user is apremium user or not in this step. The number of downloads of the content should increaseafter the purchase.a. Exceptions must be thrown when trying to buy a content with an insufficient balance. Theexception 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 youadd 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 toshow the list of names of all the contents that the user has bought. You may addadditional attributes in the User class if necessary.Content and Comment functionalities3. Write a method for the Content class, where a comment/review (which is a Comment type ofobject) 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 Contentobject (e.g. a particular game or book).PlayStore and Admin functionalities5. 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 thistask? (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 implementsan array which can grow indefinitely. HashMap allows an association to be created betweenkeys and objects. Using such classes also reduces the amount of code required as theyprovide 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 0You 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 foundInput and outputYour program should hard code a list of objects including content objects, user objects andcomment objects etc. for testing purpose. See the skeleton sample code. (During marking, wemay replace these objects with our own to test your program).You program should have a simple menu to allow an admin to perform aforementioned taskssuch 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 ofthe class PlayStoreMain.Assessment criteriaAssessment Task MarksGroup A 2 marksGroup B 2 marksFunctionality 1 1 markFunctionality 2 2 marksFunctionality 3 0.5 markFunctionality 4 0.5 markFunctionality 5 1 markFunctionality 6 2 bonus marksInput and Output 3 marks1. Code quality and style2. Modularity / Use of classes,inheritance, polymorphism,methods & arguments3. Comments / Reflection / Lessonslearnt3 marksCan compile and run under commandline 1 markCan perform required tasks duringdemo 2 marksCan make required modificationsduring demo 2 marksSubmissionSubmission will be through Canvas. You are required to zip your .java files for thesubmission.More details may be added close to the due date.因为专业,所以值得信赖。如有需要,请加QQ:99515681 或邮箱:
微信:codinghelp