JMU JMU - Department of Computer Science
Help Tools
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

  1. 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.
  2. What is the "business logic"?
    Creating vouchers, ensuring that budgets aren't exceeded, etc.
  3. 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).
  4. Are vouchers product-specific?
    Yes.
  5. 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.

Copyright 2020