Java Programming Review
1 Purpose
The primary purpose of this assignment is to help you review (and
demonstrate that you have acquired) the knowledge and skills
required to program in Java. From a language and algorithms
perspective, there is nothing new in this assignment. There is also
no network programming in this assignment.
This assignment will also help you gain some experience with the
kinds of tools that you will need to use this semester.
2 Overview
KitchIntel is a (fictitious)
company that intends to simplify and improve all aspects of the
"kitchen experience" (including the purchase of food and materials,
meal preparation, and waste disposal).
They are in the process of developing a suite of products that will make
kitchens more intelligent. This assignment involves the tasks that you have
committed to during the first sprint for the
KitchIntel Control System.
3 Preparatory Tasks
Before you do anything else you should:
- Install your IDE on your computer (if you have not already
done so). (See the course "Tools" page for more information.)
- Read all policies related to programming assignments
(including style guides, submission requirements,
collaboration rules, etc...).
5 Tasks
You must complete all of the classes and interfaces that you committed to.
(You really don't remember committing to completing them? Don't worry,
I remember it clearly.)
In addition, you must develop a complete unit test suite for these
classes. You must use JUnit (v5) for this purpose. Your JUnit test
suite should cover all statements and all branches (as measured by
EclEmma) Your tests
must be in a package named testing
and each test class
must include the word "Test" in its name.
6 Submission
You must submit (using
Autolab) a
.zip
file
named pa1.zip
that contains:
- Your implementation of the required interfaces/classes
in the appropriate package(s).
- JUnit tests for all of your classes in a package
named
testing
.
There is no limit on the number of submissions and no penalty for
excessive submissions.
7 Grading
Your submission will be graded as follows:
- Conformity to the Style Guide (Style) - 10% (All or Nothing)
- Passing your Tests (SelfTests) - 10% (All or Nothing)
- Coverage of your Tests (Coverage) - 20% (Partial Credit Possible)
- Correctness of your Code (OfficialTests) - 60% (Partial Credit Possible)
Points will be deducted manually (i.e., outside of
Autolab) for code that is unclear, inelegant, and/or poorly
documented.
8 Reminders
Remember to read and follow all policies related to homework assignments
(including style guides, submission requirements, collaboration rules,
etc...).
9 Help
You should be a fairly proficient object-oriented programmer at this point.
However, in case you've forgotten some details, help is available.
9.1 Help with Java
This assignment is a review of the material covered in CS159 that
you should already understand. The course "Help" pages (see the
section on "Course Content") on Java and UML contain many useful
references in case you need to refresh your memory. You also may
want to refer to the following CS149/CS159 lectures:
9.2 Help with Eclipse
Be careful when you create classes in Eclipse that you put them in the
appropriate package. Also,
do not put your code in modules.
The
JMU CS Wiki on Eclipse explains how to provide
an application with command-line arguments.
9.3 Help with Testing
We will be using JUnit all semester. For more information see:
9.4 Help with Coverage
In order to get 100% coverage, you sometimes have to be aware of some
quirks of the language you are working in and the tool set you are using.
For more information, see:
In order to get 100% coverage, you sometimes also need to change
your implementation. For example, you may not be able to test a
private or protected method either directly or indirectly. This
may be an indication that a public method should be using those
methods (e.g., a public constructor using a protected or private
setter).