Domain diagram

---
config:
  class:
    hideEmptyMembersBox: true
---
classDiagram
    class User {
        <<interface, entity>>
        +id: String
        +username: String
        +password: String
        +role: Role
        +cars: Collection~Car~
    }
    class Role {
        <<enumeration, value-object>>
        BASE_USER
        ADMIN
    }
    class Car {
        <<interface, entity>>
        +id: String
        +plate: String
        +maxBattery: Int
        +currentBattery: Int?
    }
    class ChargingStation {
        <<interface, entity>>
        +id: String
        +power: Int
        +available: Boolean
        +enabled: Boolean
        +location: Location
    }
    class Location {
        <<interface, value-object>>
        +longitude: Double
        +latitude: Double
    }
    class Recharge {
        <<interface, value-object>>
        +car: Car
        +chargingStation: ChargingStation
    }
    Role --* User
    Car --o User
    Location --* ChargingStation
    Car --o Recharge
    ChargingStation --o Recharge