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.