Java代写:CS201 Interactive Multimedia Application

这次需要代写的CS作业选题灵活,除了Game, Painting Application或者Media Player以外都可以,然后代写一个满足基本需求的应用程序即可。

Overview

You have been asked to create an interactive multimedia application for a client. The client wants you to sell him/her an application concept along the line of simulation of a process inside an environment, which is designed cohesively to achieve certain goal that fits well to the theme and the environment. The simulation should be rich in application of multimedia, including texts, graphics, images, sound effects, and more importantly interesting animations and sensible interactions, however, it MUST NOT BE a GAME, Painting Application or Media Player. The application should be entertaining, visually appealing (stunning), and work well. When the client is convinced of your proposal you will be asked to create the application for the client. In addition to looking good on the surface, the client also needs the application to be coded properly (architecture, comments, naming conventions), so that it may be extended upon in future versions. It will be important to provide the client with an application and source code that is awesome so that they will hire you again.

Project Requirements

Your application must meet these requirements:

  • The concept should revolve around simulation of a process inside an environment, which is designed cohesively to achieve certain goal that fits well to the theme and the environment. For instance, simulate the process of preparing ingredients and bake a pizza in the kitchen environment of a pizza shop, which ended up with a pizza ready to serve
    • By cohesiveness, we mean that the the process needs to go through a sequence of essential steps or procedures to achieve the goal. These procedures must follow certain sensible order to proceed. For instance, if the process is about baking a pizza, you won’t be able to put it into an oven before you have placed enough toppings on the crust
  • The simulation should be rich in application of multimedia, must include texts, graphics, images, sound effects, and more importantly interesting animations and sensible interactions that are appropriate in the environment
    • Beyond graphics/images/animations/sounds, you must provide, in text messages, appropriate instructions for the procedures to proceed and also feedbacks for the actions - in terms of if it is successful or changes in state
  • Developed in Java System Library (you can use Processing only for its Perlin noise function and Minim for sound effects). Beyond these, NO any other 3 rd party library is allowed. Please note failure to follow this will result in fail of the whole project.
  • Commenting code
    • Every field must be commented: what will it be used for
    • Every method must have a block comment above it to specify: what it does, what are the parameters (specify “None” if no parameter) for, what type to return. Beyond that, a method should also have inline comments inside its body to explain some of the statements/code blocks that are potentially not clear to the readers
    • Every class must have a block comment at the very top for: what it is and what it does, name of the creator and dates for creation
  • Follows strict naming convention for classes, methods and variables
    • Each package name must be a single word in lower case. In case multiwords are used, separate them with “.”
    • All class names must start with a capital letter and each additional word in the name is capitalized (i.e. camelCase)
    • All method names begin with lowercase letter and each subsequent words are capitalized (i.e. camelCase)
    • All variable names begin with lowercase letter and each subsequent words are capitalized (i.e. camelCase)
    • All constant names must be all capitalized, and connected with underscore if multi-words are involved
    • ALL NAMES should be clear, descriptive to represent the meaning of the value that they hold
  • Code must be refactored to have NO redundant code
  • No unreadable code (English naming so your teaching staff can read your code)

And include the following items:

  • At least 4 named packages (default package is NOT allowed) that group your classes properly (e.g. main, garden, kitchen, cookware … - these are just examples that might make sense to some projects and you don’t need to follow any of them. Create descriptive packages that fits to the theme of your own application)
  • At least 8 custom classes (i.e. classes defined by you) for modeling concrete entities of your project (e.g. Stove, Pot, Pan etc. for a kitchen application) - please note any inner classes (named or anonymous) won’t be counted toward these 8 custom classes
  • Among these custom classes, there must be at least two superclasses that are extended by at least two subclasses each. For these superclasses, at least one of them must be an abstract class (Please note the abstract classes and interfaces that you define for factory pattern and/or decorator pattern won’t be counted toward these 8 custom classes either - they are counted separately. See below)
  • At least one typed ArrayList is used for holding a collection of certain type of objects
  • Complex shapes along the line of GeneralPath or fractals Generative art forms based on Perlin noise*
  • Mouse and/or key based interactions that make sense for the process and environment
  • Feedback messages using text drawn with Font objects
  • Image based animations or programme-processed images (e.g. pixelization, pointilization, etc)*. Please note to avoid potential intellectual property issue, you are strongly encouraged to use the original images that are created by you, such as pictures you shot with camera or generated with an application (e.g. Photoshop). In case you are using any images downloaded from internet, you are responsible for clearing the copyright issue with their owner if applicable. And in any case, you must list the sources for any third party assets used in your project report)
  • Sound effects* for all interactions in the process and some ambient sound for the environment
  • An introduction screen that tells users “what and how” about your application and an ending screen that has button to allow users to restart

Please note for those visual and audio form related items listed above, e.g. complex shapes, generative art forms, image-based animations, programme-processed images, sound effects etc., styles and sensibility will matter in evaluation! That means not only you need to have them but also have them done nicely and being sensible to the context of their applications, which count on your effort and creativity.
And demonstrate the following topics:

  • Encapsulation
    • All classes must follow strictly the rules for encapsulation, i.e. all fields must be private (can be protected for superclasses if necessary) with minimum public methods (i.e. public access methods exposed to client program) when they are absolutely necessary
  • Inheritance
    • As specified in the section for required items above
  • Polymorphism via Overriding and Inclusion (the latter can be done along the line of either mixed different subclass objects in an ArrayList that is typed with their superclass, or create a method that declares a superclass-typed parameter, but would pass in subclass objects as argument when calling it)
  • Design patterns - You must implement at least two of the following patterns*:
    • Composition: at least one custom class is used to declare a field of another custom class, where both compositor and compositee share the same lifespan
    • Factory: at least one custom class creates it’s objects using factory design pattern
    • Decorator: at least one component is created following Decorator pattern, so that some functionality can be added to it dynamically
  • Exception handling*: use try-catch block to handle at least the following exceptions wherever applicable
    • java.io.IOException
    • java.lang.ArrayIndexOutOfBoundsException
    • java.lang.NullPointerException

These topics will be covered in lectures down the road. Stay tuned.

Requirements for final interview

To get the credit for the interview, you must be able to:

  • justify why each class should exist and what their roles are
  • modify any part of the code as requested by interviewer to show some different results during the interview
  • explain any computing concepts involved in doing the project

Tips and Tricks

  • CHOOSE AN IDEA EARLY
  • Create a draft for the whole design, which doesn’t need to be perfect but would be refined and tweaked dynamically along the way
  • Break the general design into different features and prioritize them for the order of implementation (i.e. which one goes 1st, 2nd, 3rd… etc.)
  • Following the Spiral approach for implement each of the futures: DESIGN a little bit (e.g. one object at a time), implement a little bit, test a little bit
  • Style counts! Quantity does not!
  • START NOW