@startuml scale 3 hide circle class Store { address: Address name: Text addSale() } class Register { makeNewSale() enterItem() endSale() makePayment() } class ProductCatalog { getSpecification(itemID): ProductSpecification } class ProductSpecification { description: Text price: Money itemID: itemID } class Sale { date: Date isComplete: Boolean time: Time becomeComplete() makeLineItem() makePayment() getTotal() } class SalesLineItem { quantity: Integer getSubtotal(): Money } class Payment { amount: Money } Store -r-> ProductCatalog : uses Store -d-> Register: houses Store -d-> Sale: logs-completed Register -u-> ProductCatalog: looks-in Register -r-> Sale : captures ProductCatalog -r-> "1..*" ProductSpecification: contains Sale -r-> "1..*" SalesLineItem: contains Sale "1" -r--> "1" Payment SalesLineItem "*" -u-> "1" ProductSpecification: described-by Register .u.> ProductSpecification Sale .u.> ProductSpecification @enduml