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

skinparam classAttributeIconSize 0

'left to right direction

class Vehicle{
    + static final String[] VEHICLETYPES
    - String vehicleBrand;
    - String vehicleModel;
    - int vehicleTare;
    - int vehicleGrossWeight;
    - int vehicleCurrentKms;
    - String vehicleRegisterDate;
    - String vehicleAcquisitionDate;
    - int vehicleMaintFreq;
    - int vehiclePassengerNumber;
    - int vehicleDoorNumber;
    - String vehicleLicensePlate;
    - String vehicleFuelType;
    - String vehicleVIN;
    - String vehicleType

    + Vehicle(vehicleBrand, vehicleModel, vehicleTare,\n vehicleGrossWeight, vehicleCurrentKms,\n vehicleRegisterDate, vehicleAcquisitionDate, vehicleMaintFreq,\n vehiclePassengerNumber, vehicleDoorNumber, vehicleLicensePlate,\n vehicleFuelType, vehicleVIN) {
    + getVehicleBrand()
    + setVehicleBrand(vehicleBrand)
    + getVehicleModel()
    + setVehicleModel(vehicleModel)
    + getVehicleTare()
    + setVehicleTare(tare)
    + getVehicleGrossWeight()
    + setVehicleGrossWeight(vehicleGrossWeight)
    + getVehicleCurrentKms()
    + setVehicleCurrentKms(vehicleCurrentKms)
    + getVehicleRegisterDate()
    + setVehicleRegisterDate(vehicleRegisterDate)
    + getVehicleAcquisitionDate()
    + setVehicleAcquisitionDate(vehicleAcquisitionDate)
    + getVehicleMaintFreq()
    + setVehicleMaintFreq(vehicleMaintFreq)
    + getVehiclePassengerNumber()
    + setVehiclePassengerNumber(vehiclePassengerNumber)
    + getVehicleDoorNumber()
    + setVehicleDoorNumber(vehicleDoorNumber)
    + getVehicleLicensePlate()
    + setVehicleLicensePlate(vehicleLicensePlate)
    + getVehicleFuelType()
    + setVehicleFuelType(vehicleFuelType)
    + getVehicleVIN()
    + setVehicleVIN(vehicleVIN)
    + getVehicleType()
    + setVehicleType(vehicleType)
}

class CreateVehicleController{
    -VehicleRepository vehicleRepository
    + CreateVehicleController()
    + CreateVehicleController(VehicleRepository vehicleRepository)
    + VehicleRepository getVehicleRepository()
    + createVehicle(vehicleBrand, vehicleModel, vehicleTare,\n vehicleGrossWeight, vehicleCurrentKms, vehicleRegisterDate,\n vehicleAcquisitionDate, vehicleMaintFreq, vehiclePassengerNumber,\n vehicleDoorNumber, vehicleLicensePlate, vehicleFuelType, vehicleVIN)
    + deleteVehicle(vehicleLicensePlate)
}

class Repositories {
    - Repositories()
    + getInstance() : Repositories
    + getProfessionRepository()
}

class VehicleRepository{
    - final ArrayList<Vehicle> vehicleList
    + VehicleRepository()
    + addVehicle(Vehicle newVehicle)
    + removeVehicle(Vehicle vehicleToRemove)
    + getVehicleList()
    removeVehicleByLicensePlate(vehicleLicensePLate)
}

class CreateVehicleUI{
    + CreateVehicleUI()
    - getController()
    + run()
}

Repositories -> Repositories:instance
Repositories -->VehicleRepository:instance
CreateVehicleUI .> CreateVehicleController
CreateVehicleController .> Repositories: getVehicleRepository()
VehicleRepository ..>Vehicle

@enduml