Programming Assignment 2
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 use specialization and abstract classes in Java. From a
language and algorithms perspective, there is nothing new in this
assignment. There is also no multimedia programming in this
assignment. However, this assignment does make use of the
factory-method design pattern. (Actually, you should now realize
that the parseAddress()
method in the previous
programming assignment also used the factory-method pattern.)
2 Overview
As you know,
EnhancedRealty is a
(fictitious) company that is developing and commercializing
applications for the real estate industry.
that will use localized, high-resolution weather forecasts.
For this assignment, you must implement and test several methods in
the
realestate
package.
3 Starting Point
This assignment builds on PA1. You may start with either your
solution to PA1 or my solution to PA1. However, there is no
guarantee that my code is correct; you are responsible for any and
all mistakes in your submission. (There are no intentional defects in my
solution but it may contain unintentional defects. You are responsible for
the correctness of everything you submit.)
4 Documents
EnhancedRealty uses a heavyweight process (as opposed to an agile process)
so they have created a fairly detailed set of specifications.
They are described in the following document:
5 Tasks
You must implement all of the components in
the realestate
package.
In addition, you must develop a complete unit test suite for these
components that covers 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 Hints
As is always the case, your implementation must avoid code
duplication wherever it is reasonably possible to do so. So, for
example, the various static factory methods must call the
appropriate fromString()
method. As another example,
derived classes must not duplicate code in the class that they
specialize.
7 Submission
You must submit (using Gradescope) a
.zip
file
named pa2.zip
that contains:
- Your implementation of the required components (including
necessary components from previous assignments)
in the appropriate package(s).
- JUnit tests for all of your classes (including necessary
components from previous assignments) in a package
named
testing
.
The .zip
file must contain
the government
, realestate
, and testing
packages at the top level.
You may submit your code up to 10 times with no penalty. After the 10th
submission, your grade will be reduced by 5 points for each submission.
8 Grading
Your submission will be graded as follows:
- Conformity to the Style Guide (Style) - 10% (All or Nothing; Success Required)
- Passing your Tests (SelfTests) - 10% (All or Nothing; Success Required)
- Coverage of your Tests (Coverage) - 20% (Partial Credit Possible)
- Correctness of your Code (OfficialTests) - 60% (Partial Credit Possible)
As always, points will be deducted manually for code that is
unclear, inelegant, and/or poorly documented.