@startuml skinparam linetype ortho skinparam groupInheritance 2 package Spring { interface Model class Sort } package Salespoint { interface Catalog << T > Product >> interface DataInitializer interface Inventory << T > InventoryItem >> class Product ' + has price,name and categories : Iterable' class Quantity } package catering.catalog { interface CateringCatalog { + DEFAULT_SORT : Sort + findByType(type, sort : Sort) : Iterable + findByEventType(type) : Iterable } class CatalogController { + CatalogController() + eventcateringCatalog(model : Model) : String + partyserviceCatalog(model : Model) : String + mobilebreakfast(model : Model) : String + rentacookCatalog(model : Model) : String } class Consumable { wholesalePrice retailPrice promotionPrice [0..1] } class Rentable { pricePerHour } } CateringCatalog --o "-catalog" CatalogController '- for listing entries to customers' Inventory "- inventory" <-- CatalogController '- for checking availabilty' Model "use" <.. CatalogController '- for generating html for a view' Catalog <.. " Product" CateringCatalog Product <|-- Consumable Product <|-- Rentable @enduml