Java Reference
In-Depth Information
Exercise 14.5 Create physical CRC cards for the nouns/classes identified in this section, in
order to be able to work through the scenarios suggested by the project description.
Exercise 14.6 Do the same for any of your own extensions you wish to follow through in the
next stage.
The taxi company does not actually represent a very complex application. We shall find that
much of the total interaction in the system is explored by taking the fundamental scenario of
trying to satisfy a passenger request to go from one location in the city to another. In practice,
this single scenario will be broken down into a number of steps that are followed in sequence,
from the initial call to the final drop-off.
We have decided that a passenger source creates all new passenger objects for the system. So a
responsibility of PassengerSource is Create a Passenger , and a collaborator is Passenger .
The passenger source calls the taxi company to request a pickup for a passenger. We note
TaxiCompany as a collaborator of PassengerSource and add Request a pickup as a respon-
sibility. Correspondingly, we add to TaxiCompany a responsibility to Receive a pickup request .
Associated with the request will be a passenger and a pickup location. So TaxiCompany has
Passenger and Location as collaborators. When it calls the company with the request, the
passenger source could pass the passenger and pickup location as separate objects. However,
it is preferable to associate closely the pickup location with the passenger. So a collaborator of
Passenger is Location , and a responsibility will be Provide pickup location .
From where does the passenger's pickup location originate? The pickup location and desti-
nation could be decided when the Passenger is created. So add to PassengerSource the
responsibility Generate pickup and destination locations for a passenger , with Location
as a collaborator; and add to Passenger the responsibilities Receive pickup and destination
locations and Provide destination location .
On receipt of a request, the TaxiCompany has a responsibility to Schedule a vehicle . This
suggests that a further responsibility is Store a collection of vehicles , with Collection and
Vehicle as collaborators. Because the request might fail—there may be no vehicles free—a
success or failure indication should be returned to the passenger source.
There is no indication whether the company seeks to distinguish between taxis and shuttles
when scheduling, so we do not need to take that aspect into account here. However, a vehi-
cle can be scheduled only if it is free. This means that a responsibility of Vehicle will be
Indicate whether free .
When a free vehicle has been identified, it must be directed to the pickup location. TaxiCompany
has the responsibility Direct vehicle to pickup , with the corresponding responsibility in Vehicle
being Receive pickup location . Location is added as a collaborator of Vehicle .
On receipt of a pickup location, the behavior of taxis and shuttles may well differ. A taxi
will have been free only if it was not already on its way to either a pickup or a destination
Search WWH ::

Custom Search