You have been asked to analyse and design a System for Cars For Hire Ltd. (CFH Ltd.). You have been given the following requirements from the staff of CFH Ltd. This requirement specification is a partial and incomplete description of the problem and you are asked to model it in a way that allows for further properties and behaviour to be added. For example CFH Ltd. only rent cars at present and they may expand to rent other forms of transportation such as vans, minibuses, small lorries, etc.
Another example may be that their billing and collection of payment may change. The model should be designed so it can be easily adapted to meet any changes. CFH Ltd. is a car rental company. All customers are registered before they can reserve a car for rental. Once registered and with a car reserved for rental, the customer is billed. Payment must be received from the customer before the customer leaves with the car. When a customer makes a request to CFH Ltd. the sales staff first check their customer database to confirm that they are registered. If they are not registered the customer is registered. The sales staff check the list of available cars for one that most closely matches the needs of the customer. The cars are stored in their garage.
The sales staff discuss with the garage staff to ascertain the availability of the cars. If the nearest match is not available a different car is suggested to the customer. After the customer is satisfied with the available car, a payment is requested from the customer by giving the customer an invoice. The customer makes the payment and receives a receipt of payment. The cars are returned to the appropriate garage bays. The system should then be updated with the returned car. You are required to produce models to represent only the description provided above. You are n o t required to consider any other details such as car insurance, maintenance, car damage, etc. These are not in the scope of this question.