JMU CS349 - Developing Multimedia
Gallery Help Policies Solutions Study-Aids Syllabus Tools
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:
  1. Your implementation of the required components (including necessary components from previous assignments) in the appropriate package(s).
  2. 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:

As always, points will be deducted manually for code that is unclear, inelegant, and/or poorly documented.

Copyright 2024