The Mixin Hotel is a sample application for Barbara
and Manuela, two concierges who are overwhelmed by
scribbled notes. Four use-case slices constitute the application:
- reservation system – managing (future) reservations for rooms
- billing – the guest's consumption from the hotel bar
is logged and eventually added to the rent for the room - discount extension – a new incentive from the hotel
management: for each third visit, guests get a 10%
discount - queueing extension – reservations can be
put into a reservation queue if the hotel is completely booked
for the week of the attempted reservation
The Mixin Hotel sample code is just that – a sample, not a
real working hotel management program. The sample is written for
a toy-world, some restrictions apply. This list is not
exhaustive:
- guests can call or fax reservation requests
- rooms can only be booked for an entire week
- there are no months or years; weeks are simply counted
- guests can reserve SOME room, not a particular room;
a room is assigned by the system, which takes the first
available room - guests are identified unambiguously by their name (i.e. there
is only one Smith, for example) - no user-interface is provided here, just code and unit-tests
What's more, we don't use an inversion of control container
or an O/R-mapper here.
In a real application, you would use re-motion mixin's
ObjectFactory
in tandem with something like Castle.Windsor
.
(A "facility" for integrating Castle.Windsor
's inversion of control
container can be found here: FIXME).
...
The idea from a hotel sample is from Ivar Jacobson's aforementioned
book Aspect-Oriented Programming with Use-Cases. The sample
is designed in the spirit of domain-driven development, way of designed
software in close accordance with the business domain, based, on use-cases.
Classes are modeled after
real-world entities; methods represent real concierge
activities behind the desk.