JMU JMU - Department of Computer Science
Help Tools
The Observer Pattern


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 the observer pattern. There is no network programming in this assignment.

2 Overview

You have already done some work for KitchIntel, 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). Unfortunately, as is often the case when using Scrum (because it is a lightweight process and not much time is devoted to design at the start of the effort), the team has discovered a weakness with the original design.

The team is now working on controllers for various hardware devices. Your job is to work on the "dispensers" (i.e., the hardware devices that will dispense items to users).

3 Preparatory Tasks

If you are not using a code management system (e.g., Subversion, Git, Mercurial) then you should probably create a new project for this assignment, and copy the refactored measurement package into it, since you may need to go back to the original code at some point.

4 Documents

During the sprint planning meeting you took notes that, you think, contain everything you need to proceed. In case you lost them, they are available here: Notes from the Sprint 3 Planning Meeting

5 Tasks

You must write several new classes and interfaces.

In addition, you must write JUnit tests for the new classes.

When compiled (e.g., from the command line using javax -Xlint), your code must not generate any "raw type" warnings. In other words, your solution must be type safe.

6 Submission

You must submit (using Autolab) a .zip file named pa3.zip that contains:
  1. Your implementation of the required interfaces/classes in the appropriate package(s).
  2. JUnit tests for all of your classes in a package named testing.

You must include the Display interface and the CLIDisplay class (and NOT the GUIDisplay class) in the devicesimulator package.

There is no limit on the number of submissions and no penalty for excessive submissions.

7 Grading

Your submission will be graded as follows:

Note that Autolab will not evaluate the correctness of your code. That is the responsibility of your tests. Note also that, though Autolab will grade as if it is possible to obtain 100% coverage, that may not be the case. You are responsible for determining what is and isn't reasonable in that regard.

Points will be deducted manually (i.e., outside of Autolab) for code that is unclear, inelegant, and/or poorly documented.

Copyright 2020