@startuml skinparam linetype ortho skinparam groupInheritance 2 package Spring { class Assert class Errors interface Model } package Salespoint { interface DataInitializer class Product class Quantity interface UniqueInventory class UniqueInventoryItem } package catering { package catalog { interface ConsumableCatalog interface RentableCatalog } package inventory { class InventoryController { + InventoryController(inventory : UniqueInventory) + list(model : Model) : String + edit(model : Model, pid : Product) : String + edit(form : InventoryMutateForm, result : Errors, pid : Product) : String + add() : String + add(form : InventoryMutateForm, result : Errors) : String + delete(pid : Product) : String } InventoryController --> "1" catering.catalog.ConsumableCatalog : "-consumableCatalog" InventoryController --> "1" catering.catalog.RentableCatalog : "-rentableCatalog" InventoryController ..> InventoryMutateForm InventoryController .u.> Salespoint.Product InventoryController -u-> "1" Salespoint.UniqueInventory : "-inventory" InventoryController .u.> Salespoint.UniqueInventoryItem InventoryController .u.> Spring.Assert InventoryController .u.> Spring.Errors InventoryController .u.> Spring.Model class InventoryInitializer { + InventoryInitializer(inventory : UniqueInventory, catalog : CateringCatalog) + initialize() : void } InventoryInitializer --> "1" catering.catalog.ConsumableCatalog : "-consumableCatalog" InventoryInitializer --> "1" catering.catalog.RentableCatalog : "-rentableCatalog" InventoryInitializer .u.|> Salespoint.DataInitializer InventoryInitializer .u.> Salespoint.Quantity InventoryInitializer -u-> "1" Salespoint.UniqueInventory : "-inventory" InventoryInitializer .u.> Salespoint.UniqueInventoryItem InventoryInitializer .u.> Spring.Assert } } @enduml