D_UC1 - luist18/feup-aeda-proj GitHub Wiki

Use case 1: Manage Provided Vehicles

Rational

Main flow Question: what class ... Answer Justification
1. The provider requests the management of the vehicles. ... interacts with the user? ManageProvidedVehiclesUI Pure Fabrication.
... coordinates the use case? ManageProvidedVehiclesController Controller.
2. The system asks what the provider wishes to do.

From now on three paths can be taken, each one of them is described below.

Addition of a vehicle

Main flow Question: what class ... Answer Justification
3. The provider chooses to add a vehicle to their personal list. ... interacts with the user? AddVehicleUI Pure Fabrication.
... coordinates the operation? AddVehicleController Controller.
4. The system asks for the type of vehicle.
5. The provider chooses the type of vehicle.
6. The system asks the vehicle specifications.
7. The provider inserts the vehicle specifications.
8. The system shows the vehicle information and requests confirmation. ... creates the Vehicle? VehiclesList Creator: VehiclesList aggregates Vehicles.
... knows the VehiclesList? Provider High Coesion + Low Coupling.
... knows the current Provider? CurrentSession
9. The provider confirms.
10. The system add the vehicles to the provider's personal list. ... validates the Vehicle? VehiclesList Information Expert: VehiclesList knows all the Vehicles.

Removal of a vehicle

Main flow Question: what class ... Answer Justification
3. The provider chooses to remove a vehicle from their personal list. ... interacts with the user? RemoveVehicleUI Pure Fabrication.
... coordinates the operation? RemoveVehicleController Controller.
4. The system shows the list of vehicles and requests a vehicle to remove. ... knows the list of vehicles? VehiclesList Information Expert: VehiclesList aggregates all Provider's vehicles.
... knows the VehiclesList? Provider High Coesion + Low Coupling and Information Expert.
... knows the curret Provider? CurrentSession
5. The provider chooses the vehicle.
6. The system removes the vehicle from the provider's personal list.

Edition of vehicle preferences

Main flow Question: what class ... Answer Justification
3. The provider chooses to edit a vehicle preferences. ... interacts with the user? EditVehicleUI Pure Fabrication.
... coordinates the operation? EditVehicleController Controller.
4. The system shows the list of vehicles and requests one. ... knows the list of vehicles? VehiclesList Information Expert: VehiclesList aggregates all Provider's vehicles.
... knows the VehiclesList? Provider High Coesion + Low Coupling and Information Expert.
... knows the curret Provider? CurrentSession
5. The provider chooses a vehicle.
6. The system asks if the provider wants to change its rental conditions, allowed rental schedule or rental price.
7. The provider chooses to change the vehicle's rental conditions. ... knows the vehicle's rental condition? Vehicle Information Expert: Vehicle knows its own information.
... creates the Schedule? Offer Creator: Offer contains Schedule.
... creates the Offer? OfferManager Creator: OfferManager agreggates Offers.
8. The provider chooses to change its rental schedule.
9. The system requests a new schedule.
10. The provider inserts the new schedule.
11. The provider chooses to change its rental price.
12. The system requests a new price.
13. The providers inserts the new price.

Systematization

From the rational results that the conceptual classes promoted to software classes are:

Other identified software classes (e.g. Pure Fabrication):

Sequece diagram

Sequence diagram

  • Addition of a vehicle

Sequence diagram

  • Removal of a vehicle

Sequence diagram

  • Edition of vehicle preferences

Sequence diagram

Class diagram

Class diagram