@startuml 'maybe for sneidc since he did videoshop:cahnge-password' skinparam linetype ortho skinparam groupInheritance 2 package Salespoint { interface UserAccountManagement interface DataInitalizer class UserAccount class CrudRepository } package catering.users { class User { - address : String + User(userAccount : UserAccount, address : String) + User() + getAddress() : String + setAddress() : String + getUsername() : String + setUsername() : boolean + getUserAccount() : UserAccount + getId() : UserIdentifier } User --> UserAccount : "-userAccount" class UserController { + UserController(userManagement: UserManagement) + index(): String + editProfile(name: String, password: String, address: String): String + deleteUser(): String } UserController --> UserManagement : "-userManagement" class UserManagement { + UserManagement(users : UserRepository, userAccounts : UserAccountManagement) + createUser(name: String, password: String, address: String) : user + findAll() : Streamable } UserManagement ---> UserAccountManagement : "-userAccounts" UserManagement ---> UserRepository : "-users" class UserDataInitalizer { - userManagement : UserManagement + UserDataInitalizer(userManagement : UserManagement) + initalize() : void } UserDataInitalizer --> UserManagement : "-userManagement" UserDataInitalizer ..|> DataInitalizer class UserRepository { } UserRepository --|> CrudRepository } @enduml