This test should be written in Java or a similar language.
- Create a software design for a basic vending machine. What are the functional components of the user interface? What are the possible states of the vending machine, and what are the transitions between those states? What are the functions of the vending machine? Create and submit written descriptions, flow charts, state diagrams, etc., as necessary to document your design. We're interested only in the functional design, not the visual/physical design.
- Write Java code implementing the virtual vending machine you designed. Demonstrate your understanding of object-oriented design and good coding practices.
- Write a command-line test program that allows a user to test your vending machine. The user should be able to see a list of snacks/prices, select a snack, put money into the machine, receive money back, etc.
In all of these tasks, focus on simplicity and thorough design. The design is intentionally open- ended.