@startuml 'maybe for sneidc since he did videoshop:cahnge-password' skinparam linetype ortho skinparam groupInheritance 2 package Salespoint { interface UserAccountManagement interface DataInitalizer class UserAccount UserAccount - Role : "0...*" class Role } package catering.users { class Customer { - address - email + Customer(userAccount : UserAccount, address : String, email : String) + getAddress() : String + setAddress() : String + getUserAccount() : UserAccount } Customer --> UserAccount : "-userAccount" class UserController { + UserController() + register(form : Form, model : Model) : String + customers(model : Model) : String } UserController --> CustomerManagement : "-customerManagement" class CustomerManagement { + CustomerManagement(customers : CustomerRepository, userAccounts : UserAccountsManagement) + createCustomer(form : RegistrationForm) : Customer + findAll() : Streamable } CustomerManagement ---> UserAccountManagement : "-userAccounts" CustomerManagement ...> Role : "uses" class CustomerDataInitalizer { + CustomerDataInitalizer(userAcccountManager : UserAccountManagement, customerRepository : CustomerRepository) + initalize() : void } CustomerDataInitalizer --> CustomerManagement : "-customerManagement" CustomerDataInitalizer --> UserAccountManagement : "-userAcccountManagement" CustomerDataInitalizer ..|> DataInitalizer } 'do employees need an account?' @enduml