Programming Assignment 10
1 Summary
You must
design and
implement the software
components of KIKey, a system that will
provide controlled access to food dispensers of various kinds.
KIKey is being developed for the (fictitious) company
KitchIntel.
2 Software Process
This assignment again assumes that KitchIntel uses a heavyweight
process
3 Existing Files and Documents
The following planning document exists:
4 Use of Code from Previous Assignments
Though you may if you would like, you need not use the
Dispenser
, AbstractDispenser
, Canister
,
or BreadBox
interfaces/classes from previous
assignments. You should use them if they will make your life
easier, but you should create what you need from scratch if that
will simplify the design/implementation.
5 If You Have Time
Though it isn't required after you get everything working,
you should consider using a content handler to
create a
Voucher
object. This will enable you to do something
like the following on the client:
VoucherContentHandlerFactory factory = new VoucherContentHandlerFactory();
URLConnection.setContentHandlerFactory(factory);
URL url = new URL(resource);
Voucher voucher = (Voucher)url.getContent();
6 Frequently Asked Questions
-
What does "swappable" mean (with respect to the
"communication technology")?
It means that, from a design perspective, it should be easy to create
a client/server pair for a communication technology without having
a lot of duplicate code. It does not mean that the technologies should
be swappable at run-time.
-
What is the "business logic"?
Creating vouchers, ensuring that budgets aren't exceeded, etc.
-
How are the budgets determined/set?
For the
purposes of this assignment, they are predetermined (and can
be hard-coded or read from a file).
-
Are vouchers product-specific?
Yes.
-
Do I need to use the
java.xml.soap
package?
You can if you want, but it isn't necessary. For this assignment,
it's probably easier to just "roll your own" XML message format
(as in the initial currency converter example from lecture).
7 Submission
You must submit (using
Autolab) a
.zip
file
named pa10.zip
that contains all of your code.
You should not submit any of the code that was provided to you
(i.e., for the HTTP server) unless you make substantial changes to it.
8 Grading
The grade you receive on this assignment will be based on the effort
you devote to it. If you make a "serious" effort and have a design
and implementation that can be argued to be correct, you will
receive a grade of 100. If you make a "serious" effort but your
design and/or implementation clearly has major defects, you will
receive a grade of 75. If you make a "half-hearted" effort, you will
receive a grade of 50. Otherwise, you will receive a grade of 0.