IT 511: Final Project Guidelines and Grading Guide
Overview
Your final project for this course is the creation of a Virtual World Java application that results in a virtual world, complete with an object that will act as a human
clone. A virtual world with a human clone would not be complete without additional objects for interaction, so you will be responsible for creating a “ShoutBox”
and another object that will keep your human clone from getting lonely, and a virtual world application that will test your objects. Your final deliverables will
include your working code (which your instructor will run in order to review your virtual world) as well as an annotated version of your written code that explains
your reasoning for choices, how the code meets the given specifications for your project, how you ensured the accuracy and workability of your code, and
methods used for testing and debugging.
The project is divided into four milestones, which will be submitted at various points throughout the course to scaffold learning and ensure quality final
submissions. These milestones will be submitted in Modules Two, Five, Seven, and Eight. The final submission will be submitted in Module Nine.
In this assignment you will demonstrate your mastery of the following course outcomes:
Write simple, accurate object-oriented programs using primitive data types, variables, data structures, and object-oriented principles
Implement classes that meet the given specifications of object instance variables and behaviors
Create operative algorithms using sequential logic structures, decision control structures, and loops
Create and use methods that accept parameters and return results
Test and debug object-oriented programs for accuracy in program functionality
Document object-oriented code with comments that articulate the purpose and behavior of code for various audiences
Prompt
In creating your virtual world, you will need to create a MyClone class that will represent a virtual clone, another class that will represent a ShoutBox, and
another class of your choice. The class of your choice can be anything you want to exist in your virtual world (a cat, a bird, a computer, etc.). This project is a
prototype and there will not be any graphics, so you will create an application that unit tests the functionality of your three classes (your MyClone class, your
ShoutBox class, and the class of your choice).
Specifications for MyClone
Feel free to add additional instance variables and behaviors, but your clone object must have instance variables firstName, lastName, and an introduction()
method. The firstName and lastName instance variables will hold your first and last names. You will demonstrate your understanding of encapsulation by
protecting your instance variables by making them private and by creating getters and setter methods for all instance variables. You should have at least one
constructor created that initializes all instance variables. The introduction() method will introduce you to the virtual world by displaying a greeting, your full
name, and anything else you would want to say.
Partial class diagram for the MyClone object:
Specifications for ShoutBox
The ShoutBox object will allow you to shout messages into your virtual world. Your ShoutBox will have two ways of generating messages:
1. You can select from a list of canned messages to shout, or
2. You can have the ShoutBox generate a random message for you.
You must use data structures Array, ArrayList, or a HashMap to store the message data.
Canned messages: One data structure will store the canned messages. You can load this data structure with canned messages of your choosing. The
shoutOutCannedMessage() method will loop through the data structure to first display all canned messages and allow the user to select one. The
shoutOutCannedMessage() will return the selected message String. This String will be displayed in the virtual world. For now, your virtual world will be the
output window.
Random messages: To generate random messages, you need to have a data structure that holds a list of subjects, another data structure that holds a list of
objects, another that holds a list of verbs, another that holds a list of adverbs, and another that holds a list of adjectives. The lists you create can hold as many
words as you would like. The shoutOutRandomMessage() method will use a random number generator that selects one word from each data structure to form a
random message. Random messages will be in the following form: Subject – Verb – Adjective – Object – Adverb.
The generated message String will be returned. The String will be displayed by the ShoutBox in the virtual world. For now, your virtual world will be the output
window.
MyClone
-firstName
-lastName
introduction()
Partial class diagram for the ShoutBox object:
Examples of canned messages stored in the canned messages data structure (you can store as many canned messages as you would like):
Example of subjects stored in the subjects data structure:
“I”
“You”
Example of objects stored in the objects data structure:
“course”
“homework”
Example of verbs stored in the verbs data structure:
“studying”
“eating”
“sneezing”
Example of adjectives stored in the adjectives data structure:
“funny”
“prickly”
“hard”
“awesome”
Example of adverbs stored in the adverbs data structure:
ShoutBox
String shoutOutRandomMessage()
String shoutOutCannedMessage()
“Hello World”
“I am studying”
“I am at work”
“quickly”
“everywhere”
Specifications for Your Additional Object
You will create another object of your choosing to add to your virtual world. Your object should have at a minimum two (2) instance variables and one (1)
method. You will demonstrate your understanding of encapsulation by protecting your instance variables by making them private and by creating getters and
setter methods for all instance variables. You should have at least one constructor created that initializes all instance variables.
Specifications for Virtual World Application
You will create a virtual world application that will test your MyClone, ShoutBox, and the object you decided to add to your virtual world. Because this is a simple
prototype, you will not actually create any graphics to represent the objects in the virtual world. Any displayed information will simply be displayed in the
output window.
Submit your Java application by submitting all .java files and at least four screenshots that demonstrate you tested the application.
While the listed number of instance variables and methods are the minimum number required for each class, you are free to create additional.
Specifically, the following critical elements must be addressed:
I. Program Functionality and Alignment
a. Make sure your entire program functions correctly and that there are no exceptions or compile errors
b. In writing your code, make sure that you are meeting or exceeding all of the given specifications for each class. Although you will be graded on
coverage of stated requirements, you are free to use your creative touch in developing additional classes and objects with additional instance
variables should you wish.
He reads red book
quickly!
c. Create the unit test application and use it to test the functionality of each class. Submit the screenshots showing that the code was tested.
II. Data Structure for Message Storage: Use data structures (either Arrays, ArrayLists, or a HashMaps) to store the message data in accordance with the
given specifications. You can use one type, or a mix of the listed types of data structures for message storage. Specifically, it should be one data structure
per word type (verb, subject, etc.), but you can choose to use a HashMap for canned messages and maybe ArrayLists for the other data structuresor
use Arrays for all of them.
III. Methods and Instance variables
a. Method shoutOutCannedMessage() loops through the data structure that stores the canned messages first to display all canned messages and
allows the user to select one canned message.
b. The method shoutOutCannedMessage() will return the selected message string.
c. Your shoutOutRandomMessage() method should use a random number generator that selects one word from each data structure to form a
random message. The random number generated should not exceed the bounds of your data. In other words, if you only have 5 words in a data
structure, the random number generated should not be an index that has no word stored.
d. The method shoutOutRandomMessage() should return a randomly generated message string in accordance with specifications, in the form:
Subject – Verb – Adjective – Object – Adverb (for example, “You read hard books quickly”).
e. Use the MyClone introduction() method to introduce your clone to the virtual world by displaying a greeting, your full name, and anything else
you would want to say.
f. MyClone class should include instance variables (at least firstName and lastName) that are made private and have associated getters (accessors)
and setters (mutators) for all instance variables.
g. You should build an additional class of your choice, which should have at least 2 private instance variables with associated getters (accessors) and
setters (mutators) and 1 method your choice.
IV. Test Application: You will create one application that will test all three classes.
a. Perform a unit test of the MyClone to test all getters (accessors) and setters (mutators)and method(s) of the class.
b. Perform a unit test of the ShoutBox to test all methods of the class.
c. Perform a unit test of the additional class object to test all getters (accessors) and setters (mutators) and method(s) of the class.
V. In-Code Comments
a. Make sure your object-oriented code is accurately documented to explain the purpose and behavior of the code.
b. Articulation of comments is clear and concise for the audiences that may review it, including your instructor and individuals that may need to
maintain or implement the code.
Milestones
Milestone One: MyClone Class
In Module Two, you will submit your Java class, MyClone. You will create your initial version of the MyClone class. MyClone class should have instance variables
firstName and lastName. The firstName and lastName instance variables hold a value for first and last names respectively. You will demonstrate your
understanding of encapsulation using the private specifier to restrict access to your instance variables. This milestone is graded with the Milestone One Rubric.
Feedback should be incorporated into the final project as warranted.
Milestone Two: Message Array
In Module Five, you will submit your Java code that creates an Array of String messages. Write an application that uses an Array to store 10 messages of type
String. You will store this Array with 10 messages of your choosing. For example, a message could be “I love Java the programming language!” or another
message could be “I love Java the drink!” You may initialize your Array with the messages or have the user enter the messages. The choice is yours. Your Java
code will loop through the Array to iterate through your entire list and display each message and allow the user to select one. The shoutOutCannedMessage() will
return the selected message String. This milestone is graded with the Milestone Two Rubric. Feedback should be incorporated into the final project as
warranted.
Milestone Three: Programmer-Defined Class
In Module Seven, You will create a Virtual World application as your final project. This Virtual World will have several objects including a MyClone object and
another object of your choice. It would be an excellent idea to review the Final Project Guidelines at this time. For this Third Final Project Milestone, you will
finish development of your MyClone class and create another class of your choice.
In Module Two, you started development of the MyClone class. You will continue to develop the MyClone class by adding accessor methods, mutator methods,
and an introduction() method. You will create an accessor and mutator method for each instance variable declared in the MyClone class. The introduction()
method will introduce yourself to the virtual world by displaying a greeting, your first and last name, and anything else you would want to say.
You will also create another class of your choice. Your programmer-defined class should have at a minimum two instance variables and one method. The instance
variables and method should be representative of the data and behavior that objects of this class will have. You will demonstrate your understanding of
encapsulation by declaring the instance variables as private and by creating accessors and mutators for each instance variable. You should have at least one
constructor created that initializes all instance variables. Document your code. This milestone is graded with the Milestone Three Rubric. Feedback should be
incorporated into the final project as warranted.
Milestone Four: ShoutBox Class With Methods
In Module Eight, you will create the ShoutBox class for your Virtual World. Your ShoutBox class will have two methods:
Method shoutOutCannedMessage()will return type String.
The shoutOutCannedMessage will use an Array or an ArrayList to store 10 messages of type String. For those of you who are more advanced with your Java skills,
you could use a HashMap for the data structure. You can load this data structure with 10 messages of your choosing. You can initialize your Array or ArrayList
with the messages or have the user enter the messages. The choice is yours. The shoutOutCannedMessage() will loop through the data structure to first display
all canned messages and allow the user to select one. The shoutOutCannedMessage() will return the selected message String. Document your
shoutOutCannedMessage() method to explain the code.
Method shoutOutRandomMessage() method will return type String.
The shoutOutRandomMessage() will use several Arrays or an ArrayList to store words. You will have one data structure that holds a list of words that are subjects,
another data structure that holds a list of words that are objects, another that holds a list of verbs, another that holds a list of adverbs, and another that holds a
list of adjectives. You can initialize your data structures with words or have the user enter the words. The choice is yours.
The shoutOutRandomMessage() method will use a random number generator that selects one word from each data structure to form a random message. The
shoutOutRandomMessage() method will return the random message as a String data type. Random messages will be of the following form: Subject – Verb –
Adjective – Object – Adverb.
Document your shoutOutRandomMessage() method to explain the code.
This milestone is graded with the Milestone Four Rubric. Feedback should be incorporated into the final project as warranted.
Final Submission: Virtual World Java Application
In Module Nine, you will submit all classes for the Virtual World Java application. It should be a complete artifact, free of compiler and run-time errors, and
contain all of the critical elements of the final product. You will submit the following completed classes in addition to a class that tests them: MyClone, ShoutBox,
the class you designed, and a test class. In your test class you will have a main() method. This test class will represent your virtual world application that will test
the MyClone, the ShoutBox, and the class you decided to create in Module Seven. Document your code with comments. It should reflect the incorporation of
feedback gained throughout the course. This submission will be graded using the Final Project Rubric.
Deliverable Milestones
Milestone Deliverables Module Due Grading
1 MyClone Class Two Graded separately; Milestone One Rubric
2 Message Array Five Graded separately; Milestone Two Rubric
3 Programmer-defined Class Seven Graded separately; Milestone Three Rubric
4 ShoutBox Class With Methods Eight Graded separately; Milestone Four Rubric
Final Project: Virtual World Java
Application
Nine Graded separately; Final Project Rubric
Final Project Rubric
Requirements of Submission: Written components of projects must follow these formatting guidelines when applicable: double spacing, 12-point Times New
Roman font, one-inch margins, and discipline-appropriate citations.
This activity uses an integrated rubric in Blackboard. Students can view instructor feedback in the Grade Center. For more information, review these instructions.
Instructor Feedback: Students can find their feedback in the Grade Center.
Critical Elements Exemplary (100%) Proficient (90%) Needs Improvement (70%) Not Evident (0%) Value
Program
Functionality
All functional and design
requirements are met and the
user interface is friendly,
handles invalid user
interactions, displays output in
a clear format, and is intuitive
Complete program functions
correctly, with no compile
errors and no exceptions
Complete program does not
function correctly
Program is not complete 10
Program Alignment Meets “Proficient” criteria and
code includes additional
instance variables or objects
that behave according to given
specifications
Complete code meets the
specifications and minimum
requirements for each class
Code is complete, but does not
meet all of the given
specifications and minimum
requirements for each class
Code is not complete 7
Unit Test Application Meets “Proficient” criteria and
unit test application behaves
like a true virtual world
Unit test application accurately
tests the functionality of each
class
Unit test application tests the
functionality of each class, but
not accurately
Unit test application does not
test the functionality of each
class
7
Data Structure for
Message Storage
Meets “Proficient” criteria and
generics are used to define the
type of any ArrayList or
HashMap; initialization of data
structures are flexible (user
enters the data instead of hard
coded initialized data)
Uses an Array, ArrayList, or a
HashMap to effectively store
massage data in accordance
with the given specifications
Uses an Array, ArrayList, or a
HashMap to effectively store
massage data, but not in
accordance with the given
specifications
Does not use an Array,
ArrayList, or a HashMap to
effectively store massage data
6
shoutOutCannedMes
sage() Method
Meets “Proficient” criteria
substantiated with formatted
printing used to display all
canned messages from the
shoutOutCannedMessage()
method; the user interface
provided that allows user to
select a message is robust,
handles invalid entries, and
prevents the user from entering
an index that is beyond the
range of the indices for the
Array; loop uses length of Array
to control loop
Method loops through the data
structure that stores the canned
messages, displays all canned
messages, and allows user to
select one; method returns the
correct selected message string
Method insufficiently loops
through the data structure that
stores the canned messages,
does not display all canned
messages, or method
insufficiently allows user to
select one message
Method does not loop through
the data structure that stores
the canned messages
6
shoutOutRandomMe
ssage() Method
Meets “Proficient” criteria and
uses a different random
number for the index for each
data structure
Method correctly uses a
random number generator that
selects one word from each
data structure to form a
random message
Method incorrectly uses a
random number generator so
that it does not select one word
from each data structure to
form a random message
Method does not use a random
number generator
6
shoutOutRandomMe
ssage() Return
Meets “Proficient” criteria
substantiated with the correct
format used to return the
message string
Method returns a randomly
generated message in
accordance with the given
specifications and in the proper
string format
Method returns a randomly
generated message, but not in
accordance with specifications
or not in the proper string
format
Method does not return a
randomly generated message
6
MyClone Method
introduction()
Meets “Proficient” criteria
substantiated with formatted
printing used to display the
introduction; message displayed
is aesthetically pleasing;
introduction() method uses
getters or accessor methods to
get the current value of the first
name and last name instance
variables
Method correctly displays a
greeting, the full name of the
clone, and an introduction
statement for the virtual world
Method displays a greeting, the
full name of the clone, and an
introduction statement for the
virtual world, but not correctly
Method does not display a
greeting, the full name of the
clone, and an introduction
statement for the virtual world
6
MyClone Class
Instance variables
Meets “Proficient” criteria and
the class includes additional,
creative or real-world private
instance variables that follow
specifications
MyClone class includes required
instance variables that are
made private and have
associated getters and setters
MyClone class includes required
instance variables that are
made private but do not have
associated getters and setters
MyClone class does not include
the required instance variables
and the instance variables are
not made private
7
Additional Class Meets “Proficient” criteria and
the class objects are creative or
unique with private instance
variables that fit the object
The choice class has 2 private
instance variables with
associated getters and setters
and 1 successful method
The choice class has 2 private
instance variables with
associated getters and setters
and 1 method, but the method
is not successful or the instance
variables do not follow
specifications
The choice class does not have
2 private instance variables and
1 method
7
Unit Test: MyClone Meets “Proficient” criteria
substantiated with a user
interface that lets the user
interact with the application;
unit test application creates
more than one MyClone object
and tests all possible code paths
Unit test successfully tests all
getters and setters and
method(s) of the class
Unit test tests all getters and
setters and method(s) of the
class, but not successfully
Unit test does not test all
getters and setters and
method(s) of the class
6
Unit Test: ShoutBox Meets “Proficient” criteria
substantiated with a user
interface that allows the user to
interact with the application;
unit test application tests all
possible code paths
Unit test successfully tests all
methods of the class
Unit test tests all methods of
the class, but not successfully
Unit test does not test all
methods of the class
6
Unit Test: Additional
Class
Meets “Proficient” criteria
substantiated with user
interface that allows the user to
interact with the application;
unit test application creates
more than one of these objects
and tests all methods more
than once; unit test application
tests all possible code paths
Unit test successfully tests all
getters and setters and
method(s) of the class
Unit test tests all getters and
setters and method(s) of the
class, but not successfully
Unit test does not test all
getters and setters and
method(s) of the class
6
Code Documentation Meets “Proficient” criteria and
all methods have a header that
explains the purpose of the
method, the pre-conditions,
and the post-conditions
Code is accurately documented
to explain the purpose and
behavior of the code
Code is documented to explain
the purpose and behavior of
the code, but not always
accurately
Code is not documented to
explain the purpose and
behavior of the code
6
Articulation of
Comments
Meets “Proficient” criteria and
submission is properly cited,
free of errors related to
citations, grammar, spelling,
syntax, and organization and is
presented in a professional and
easy to read format
Articulation of comments is
clear and concise, using
appropriate jargon for all users
and viewers, with no major
errors related to citations,
grammar, spelling, syntax, or
organization
Articulation of comments is
clear and concise , but does not
use appropriate jargon for all
users and viewers or has major
errors related to citations,
grammar, spelling, syntax, or
organization that negatively
impact readability and
articulation of main ideas
Articulation of comments is not
clear and concise
8
Earned Total 100%
"Looking for a Similar Assignment? Order now and Get 10% Discount! Use Code "Newclient"