@startuml
'skinparam monochrome true
skinparam packageStyle rectangle
skinparam shadowing false
skinparam linetype polyline
skinparam linetype orto

skinparam classAttributeIconSize 0

'left to right direction

class RegisterVehicleUI
{
}

class RegisterVehicleController
{
+ RegisterVehicleController(VehicleRepository vehicleRepository)
+ registerVehicle(brand, model, type, plateID, tareWeight, grossWeight, registerDate, currentKms, acquisitionDate, maintenanceFrequency)
}

class Repositories {
+ getInstance()
+ getVehicleRepository()

}
class VehicleRepository
{
+ getVehicleList()
+ registerVehicle(brand, model, type, plateID, tareWeight, grossWeight, registerDate, currentKms, acquisitionDate, maintenanceFrequency)
+ addVehicle(vehicle)
+ validateVehicle(vehicle)
+ getVehicleByPlateID(String plateID)
}

class Vehicle
{
-Brand: String
-Model: String
-PlateID: String
-TareWeight: int
-GrossWeight: int
-CurrentKM: int
-RegistrationDate: String
-AcquisitionDate: String
-VehicleMaintenanceFrequency: boolean

+ Vehicle(brand, model, type, tareWeight, grossWeight, currentKm, registerDate, acquisitionDate, maintenanceFrequencyKm)
}

class VehicleType
{
+VehicleType{Passenger, Mixed, Van, ClosedVan, BackhoeLoaders, Tractor, Excavator, LawnMower, CargoTruck, OpenBox, ClosedTruck}
}

RegisterVehicleUI --> RegisterVehicleController
RegisterVehicleController --> Repositories: repositories
Repositories --> "1" VehicleRepository: stores
VehicleRepository --> "1*" Vehicle: stores
Vehicle --> "1*" VehicleType: stores
RegisterVehicleController --> VehicleRepository: VehicleRepository



@enduml