Unfortunately your screen name does not follow the naming policy that we follow here at javaranch. Request you to kindly change the same. (The link has all the information as to how to change it)
Coming to your question: (I liked the way you have described the problem) Basically, what you have written down is nothing related to Java as a language. You are trying to figure out the entities in your system and their interaction, such an exercise is done best using a modelling language like UML. So, your question that "Am I looking at the problem in the right way or are there other alternative approaches using java that would be better" does not really make much sense.
(IMHO this topic can be moved to an appropriate forum)
Ofcourse, the entities you have listed are good (i would like to add one more entity, kitchen, this will definetly have a lot of effect on how much time a client have to wait for food after order and you can simulate the high rush scenarios in a restaurent) but you need to come up with the scenarios of how the entities communicate with each other and more granular methods on each entity. If you do the above, you will be in a position to tell what is the data that each entity maintain and what all interactions will change the data. Once you get this information, you will be in a good shape to decide the synchronization strategies for the entities and the data they store.
I hope this helps.
[ February 27, 2008: Message edited by: Nitesh Kant ] [ February 27, 2008: Message edited by: Nitesh Kant ]
Originally posted by Carla Pinate: Thank You very much for the suggestions and I will take that all into consideration but I want to learn how to do that using Java...
Hi Carla, (Thanks for changing the screen name.) What have you tried till now. Can you post some code? What exactly you were not able to get related to Java while implementing the above. Conceptually, the interaction between most of the entities should be asynchronous i.e. each entity working for the restaurant will have a work queue (except for between a customer and a waiter). All entities will finish their work and put the result into another work queue (eg: a waiter will put the order into the work queue of a chef, a chef will execute and put the order back into the queue of the waiter. Waiter will deliver and then will put the bill in the queue of the cashier and so on) To implement a work queue you can look at ThreadPoolExecutor and related classes.