Comp 212 Assignment #1
The Ultimate Pizza Experience
Due Sunday, September 08, 2002 11:59
PM -
No Late Submission will be accepted
This homework exercise serves as a transition from functional programming to
object-oriented programming. It also serves as a "dry run" for the larger
programming projects that will come later. It is based on the pizza example
discussed in class.
You may discuss the homework with other classmates at a high level.
However, you may not share your code nor your design with your
classmates.
I. Modeling Pizzas
Pizza Unlimited will customize their pizzas to any shape you want.
Ready to go are 4" x 6" rectangular pizzas and 5" diameter round
pizzas. The pizzas come in two standard kinds of crust: thin and
thick. The thin crust is chewy and costs the house $0.15/in2 to
make. The thick crust is crunchy and costs the house $0.17/in2
to make. Besides these standard crusts, Pizza Unlimited will customize the
crust to your specification as well. Of course, the cost per in2
for customized crusts will vary. The pizzas of different shapes and crusts
are sold at various prices. Pizza Unlimited wants to know which the most
profitable kind of pizza is. For example, is the 4" x 6" thin
crust at $4.99 more profitable than the 5" round thick crust at $4.69?
- Use UML to describe the design of your pizzas. 25 pts
- Write the Java code for your pizza design. 25 pts
- Override the toString() method in appropriate
classes of your pizza design to return a String
representation of a pizza that shows its price, its shape with the relevant
dimension, and the crust type. For example, the standard 4" x
6" thin crust at $4.99 has the String representation:
[$4.99 Rectangle(4, 6) thin and chewy]. 5 pts
- Write a client test class. The test class must cover all possible
combination of shapes and crusts. 5 pts
- Given two pizzas, each of certain shape, crust, and price, write an
appropriate class to find out which one is more profitable and return
it. 5 pts
- Write a client test class. What cases should the test cover?
Explain your reason for testing only those cases. 5 pts
- Given three pizzas, each of certain shape, crust, and price, write an
appropriate class to find out which one is more profitable and return
it. 5 pts
- Write a client test class. What cases should the test
cover? Explain your reason for testing only those cases. 5 pts
- Given a pizza and a list of pizzas, each of certain shape, crust, and price, write an
algorithm to find out which one is more profitable
and return it. You must use the list framework IList for the list of
pizzas and the algorithm must be written as an IListAlgo. The
parameters for the algorithm's method are list (the 'host' param) and a
pizza (the 'inp' parameter). 10 pts
- Write a client test class. What cases should the test
cover? Explain your reason for testing only those cases. 5 pts
II. General Instructions
- Compiling and testing your code: The jar file listFW.jar
contains the binary class files for IList, IEmptyList, INEList,
IListFactory, IListAlgo and CompositeListFactory. To use them in your
code, you need to put this file in the directory of your current homework
and add the following statement at the beginning of your java source file:
- import listFW.*; // this is to use IList, IEmptyList, INEList,
IListFactory and IListAlgo
- import listFW.factory.*; // this is to use CompositeListFactory
To compile your Java code, say SourceFile.java,
type the following (Unix) command from your current homework directory:
javac -classpath .:listFW.jar SourceFile.java
To run your test code, say TestFile.class,
type the following (Unix) command from your current homework directory:
java -classpath .:listFW.jar TestFile
- Functional programming as a subset of object-oriented programming: All programs in this exercise should be written in a purely functional style:
no object fields should be modified once they have been initialized by a constructor.
- Documentation and coding style: As with all programs in this course, lack of good coding style (good style includes
reasonable variable names, a comment preceding each method, consistent indentation) will result in a substantial loss of points.
The provided java files in the labs and lectures can serve as examples of coding style and documentation format that are acceptable
to us.
III. Submission
The homework is due Sunday, September 08, 2002 11:59
PM . It is to be submitted
electronically. The electronic submission project name is "pizza".
The complete homework set should contain the following:
- A plain text file called README
documenting what you have and/or have not done, describing specific details that you feel we need to know when grading your work.
The README file should also contain the Rice Pledge of Honor. This README file alone is worth 5 points.
- StructureBuilder's UML diagrams of all your class designs. You are
allow to use any other UML diagramming tool to draw the UML diagram, as long
as it is in the form readable by the graders.
- All the Java source code necessary to compile and execute your test code.
dxnguyen@cs.rice.edu
Please let us know of any broken links
Revised August 28, 2002