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

- Addition of a vehicle

- Removal of a vehicle

- Edition of vehicle preferences

Class diagram
