Project 1. Accessible Vending Machine
Assigned: Friday, September 9, 2005
Requirements and Design Due: Thursday, September 15, 2005
Program Due: Sunday, September 26, 2005 (midnight)
Assignment.
Design and implement an interface to a vending machine that is accessible to people
with and without visual disabilities.
Your system should be able to handle at
least two different kinds of vending applications. One should be the typical "junk-food" machine where candy and chips are dispensed. The others can be whatever you want, but must be different in some functional way.
Objectives.
- To gain experience defining the functional requirements of a program.
- To gain experience designing an OO solution to a problem.
- To practice programming again, after summer break.
- To learn how to do JavaDoc documentation.
Restrictions.
- You must have visual output as well as sound output. Your sound output should
make use of Cloud Garden's JSAPI
implementation.
- Your program should be navigatable by keyboard commands only.
- Your program should have at least one level of inheritance.
- You must have JavaDoc comments.
- You may not reuse anyone else's code for this project.
Requirements/Design Report.
This report should clearly spell out the functional requirements (i.e., "what" your program is going to do) of your Accessible Vending Machine interface. The requirements should be numbered and should be independent of implementation and design issues.
This report should also present the design of your OO solution. In particular, enumerate the classes you will use, and the methods and data members of each. In addition, use a UML diagram to depict the inheritance structure and the communication paths among the classes.
Grading Criteria.
** Programs with compile-time errors will receive no credit.
** Programs with non-exceptional run-time errors will receive at most 50% credit.
- initial design
- final object-oriented design
- inheritance structure; abstract classes
- adaptability to k different vending machines
- appropriate classes
- appropriate methods and data members for each class
- accessibility
- speech output
- keyboard navigation
- implementation
- clean logic
- modularity
- documentation
- functionality
- kinds of vending machines supported
- functions provided for vending machines
- ease of use
- creativity