ICS 211 Homework H01: OOP, Class Hierarchies and Interfaces.

Purpose

Object Oriented Programming (OOP) is a very useful tool for problem solving. We can break down a problem into its components, model them as classes and instances to solve the problem. We are also going to explore different ways of comparing instances.

We are going to enhance our understanding of OOP, class hierarchies and interfaces by creating a simple Java class hierarchy of Beers and a Brewery. The Brewery implements an interface and follows the Factory and Singleton design patterns. In addition to the Beers and Brewery we are going to develop two different Comparators for comparing beers.

This assignment will give you practice using Eclipse to create and test Java classes. Hopefully, you set up your Eclipse environment to make this assignment easier to complete.

Tasks

1. Create a Java project in Eclipse called ICS211-workspace

This project is where we will be doing all our homework assignments for ICS 211. Here’s a screen shot of my Eclipse with my ICS211-workspace project. eclipse

2. Create a package named edu.ics211.h01

This is where we will put all our classes for homework 01.

3. Create the base class Beer

The base abstract class Beer implements Comparable<Beer> and has:

Here’s a screen shot of my Beer class in Eclipse. Beer class

Notice there are no Problems in my ICS211-workspace project. That means that there are no compile or checkstyle errors.

4. Create the class Pilsner that extends Beer

Class Pilsner extends Beer has:

Once you are done, your Pilsner class should be able to pass these tests PilsnerTest. To check this save the PilsnerTest.java file in the same directory as your Pilsner.java file. The you can run the tests by opening the file and choosing Run -> Run As -> JUnit Test. You should see something like:

Passing Pilsner Tests

The green bar on the left indicates all JUnit tests passed.

5. Create the other Beer subclasses

Class BohemianPilsner extends Pilsner,

Class IndiaPaleAle extends Beer,

6. Create the ManoaBrewing class

Create a ManoaBrewing singleton class that can create Beers, Pilsners, BohemianPilsners and IndiaPaleAles. Singleton classes have a static method getInstance() that returns the one and only one instance of the class. The class must implement the IBrewery interface.

Here’s a screen shot of my ManoaBrewing class. ManoaBrewing

Notice there are no Problems in my ICS211-workspace project. That means that there are no compile or checkstyle errors.

At this point you can test your code with ManoaBrewingTest.java. We are going to use the JUnit tests to evaluate your homework for correctness.

7. (Optional) Create some Comparators

Next week’s homework is sorting a flight of beer (actually an array). You will need to create two comparators to do the sorting so you can get a head start on next week’s homework by:

You can test your comparators using ComparatorTest.java.

Grading Rubric

CriterionExcellent (100%)Satisfactory (75%)Borderline (50%)Unsatisfactory (25%)Poor (0)
Adherence to standards - 2 points
Does it conform to standards in every detail?
No errors. Minor details of the assignment are violated, or poor choices are made where the assignment is unclear. Significant details of the assignment or the underlying program intent are violated, but the program still fulfills essential functions. Significant details of the assignment or the underlying program intent are violated, but the program still fulfills some essential functions. Misses the point of the assignment.
Breakdown (modular design) - 1 point
Does it demonstrate good modular design?
No errors. 1-3 minor errors. > 3 minor errors OR 1 major error. 2 major errors > 2 major error.
Correctness of code - 4 points
Does it work? Does it pass JUnit?
Passes all tests. Works for typical input, may fail for minor special cases. Fails for typical input, for a minor reason. Fails for typical input, for a major reason. No.
Documentation, and style - 2 points
Is it clear and maintainable? Does it pass CheckStyle?
No errors. 1-3 minor errors. > 3 minor errors OR 1 major error. 2 major errors > 2 major error.
Efficiency of code - 1 point
Does it use the Java features well?
No errors. 1-3 minor errors. > 3 minor errors OR 1 major error. 2 major errors > 2 major error.

Turning in the Assignment

The assignment is due on Thursday at 11:55pm. You may turn it in early.