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](https://github.com/luist18/feup-aeda-proj/wiki/SD_UC1.png)
![Sequence diagram](https://github.com/luist18/feup-aeda-proj/wiki/SD_UC1.1.png)
![Sequence diagram](https://github.com/luist18/feup-aeda-proj/wiki/SD_UC1.2.png)
- Edition of vehicle preferences
![Sequence diagram](https://github.com/luist18/feup-aeda-proj/wiki/SD_UC1.3.png)
Class diagram
![Class diagram](https://github.com/luist18/feup-aeda-proj/wiki/CD_UC1.png)