@startuml skinparam linetype ortho skinparam groupInheritance 2 package java.util { class ArrayList class Collection class HashSet class Optional class Set } package catering { package customer { class Customer { - id: int - surname: String - name: String + Customer(name: String, surname: String) + getId(): int + getSurname(): String + getName(): String + setId(): void + setSurname(): void + setName(): void } class CustomerController { + CustomerController(customerRepository: CustomerRepository) + getCustomer(model Model): String + removeCustomer(customerID: int, model Model): String + editCustomer(id: int, model Model): String + updateCustomer(customer: Customer): String } class CustomerDataInitializer { + CustomerDataInitializer(customerRepository: CustomerRepository) + initialize(): void } class CustomerRepository { + CustomerRepository() + addCustomer(customer: Customer): boolean + save(customer: Customer): void + count(): long + removeCustomer(customerID: int) boolean + getCustomers(): Collection + findById(id: int): Optional } class RegistrationForm { - name: String - password: String - address: String + RegistrationForm(String name, String password, String address) + getName(): String + getPassword(): String + getAddress(): String + validate(errors Errors): void } } } CustomerRepository *-- Customer : -customer CustomerController --> CustomerRepository : -customerRepository CustomerDataInitializer --> CustomerRepository : -customerRepository RegistrationForm <-- CustomerController : use CustomerRepository --> Set : -customers CustomerRepository --> HashSet : use CustomerRepository --> Collection : use CustomerRepository --> Optional : use CustomerRepository --> ArrayList : use @enduml