@startuml
'https://plantuml.com/class-diagram
!pragma layout smetana

class Bookingsystem
class Car
class CarHandler
class Communications
class Customer
class Dashboard
class Foreman
class Mechanic
abstract User
class UserHandler

Car : - int id
Car : - String make
Car : - String model
Car : - int year
Car : - int km
Car : + Car(id, make, model, year, km)
Car : + int getId()
Car : + String getMake()
Car : + String getModel()
Car : + int getYear()
Car : + int getKm()

Customer : - String name
Customer : - String lastname
Customer : - int phoneNumber
Customer : - String address
Customer : + Customer(id, username, password, rights, name, lastname, phoneNumber, address)
Customer : + String getName()
Customer : + String getLastname()
Customer : + int getPhoneNumber()
Customer : + String getAddress()

User : - int id
User : - String username
User : - String password
User : - String rights
User : + User(id, username, password, rights)
User : + int getId()
User : + String getUsername()
User : + String getPassword()
User : + String getRights()

UserHandler : ArrayList<User> users
UserHandler : + boolean login()
UserHandler : + boolean createUser()
UserHandler : + void loadUsers()
UserHandler : + void saveUsers()
UserHandler : + boolean isUserNameValid()
UserHandler : + boolean isValidPassword()

Mechanic : + Mechanic(id, username, password, rights)

Foreman : + Foreman(id, username, password, rights)

CarHandler : + carDatabase()
CarHandler : ArrayList<Car> cars

Dashboard *-- Bookingsystem
Bookingsystem *-- Foreman
Foreman *-- Communications
Communications *-- Mechanic

CarHandler *-- Car
Communications *-- CarHandler
Communications *-- UserHandler
User <|-- Customer
User <|-- Foreman
User <|-- Mechanic
UserHandler *-- User

@enduml