Update catalog design model

This commit is contained in:
Theo Reichert 2023-11-10 23:57:50 +01:00 committed by Simon Bruder
parent 8815cbe6eb
commit 6060c8081e
Signed by: simon
GPG key ID: 8D3C82F9F309F8EC
2 changed files with 34 additions and 16 deletions

View file

@ -17,27 +17,34 @@ package Salespoint {
interface DataInitializer interface DataInitializer
interface Inventory << T > InventoryItem >> interface Inventory << T > InventoryItem >>
class Product { class Product {
- name : String
+ Product(name : String, price : javax.money.MonetaryAmount, [Metric : metric]) + Product(name : String, price : javax.money.MonetaryAmount, [Metric : metric])
+ getID() : Product.Identifier + getID() : Product.Identifier
'+ addCategory(category : String) : boolean' #TODO: for class Inventory
'+ removeCategory(category : String) : boolean' #TODO: for class Inventory
'+ supports(quantity : Quantity) : boolean' #TODO: for class Cart
+ getCategories() : Streamable<String> + getCategories() : Streamable<String>
'+ addCategory(category : String) : boolean
'+ removeCategory(category : String) : boolean
+ getName() : String + getName() : String
+ getPrice() : @NonNull javax.money.MonetaryAmount + getPrice() : @NonNull javax.money.MonetaryAmount
'+ setPrice() : @NonNull javax.money.MonetaryAmount
'+ supports(quantity : Quantity) : boolean
} }
class Quantity { ' class Quantity {
+ getAmount() : @NotNull BigDecimal ' + getAmount() : @NotNull BigDecimal
} ' }
} }
package catering.catalog { package catering.catalog {
interface CateringCatalog { interface RentableCatalog {
+ DEFAULT_SORT : Sort + DEFAULT_SORT : Sort
} }
CateringCatalog --o CatalogController : "-catalog" interface ConsumableCatalog {
CateringCatalog ..> Catalog : "<bind> <T->Product" + DEFAULT_SORT : Sort
}
RentableCatalog --o CatalogController : "-rentableCatalog"
RentableCatalog ..> Catalog : "<bind> <T->Rentable"
ConsumableCatalog --o CatalogController : "-consumableCatalog"
ConsumableCatalog ..> Catalog : "<bind> <T->Catalog"
class CatalogController { class CatalogController {
+ CatalogController() + CatalogController()
@ -53,21 +60,32 @@ package catering.catalog {
} }
class Consumable { class Consumable {
- wholesalePrice : javax.money.MonetaryAmount '- wholesalePrice : javax.money.MonetaryAmount
- retailPrice : javax.money.MonetaryAmount - retailPrice : javax.money.MonetaryAmount
- promotionPrice : javax.money.MonetaryAmount - promotionPrice : javax.money.MonetaryAmount
+ getWholesalePrice() : javax.money.MonetaryAmount + Consumable(name : String, price : javax.money.MonetaryAmount) : Consumable
+ getPrice() : javax.money.MonetaryAmount + getPrice() : javax.money.MonetaryAmount
+ setPrice() : javax.money.MonetaryAmount
'+ setWholeSalePrice(price : javax.money.MonetaryAmount)
+ setRetailPrice(price : javax.money.MonetaryAmount)
+ setPromotionPrice(price : javax.money.MonetaryAmount)
} }
Consumable --|> Product Consumable --|> Product
class Rentable { class Rentable {
- pricePerHour : javax.money.MonetaryAmount - pricePerHour : javax.money.MonetaryAmount
- Events : Streamable<Event> + Rentable(name : String, pricePerHour : javax.money.MonetaryAmount) : Rentable
+ getPrice() : javax.money.MonetaryAmount + getPrice() : javax.money.MonetaryAmount 'return pricePerHour'
+ setPrice(price : javax.money.MonetaryAmount)
} }
Rentable --|> Product Rentable --|> Product
class CatalogDataInitalizer {
- rentableCatalog : RentableCatalog
- consumableCatalog : ConsumableCatalog
+ initalize()
}
CatalogDataInitalizer ..|> DataInitializer
} }
'#TODO: to determine which Products of a Category to offer I need to retrieve information about availability of e.g. Cooks and ServicePersonel from the Users or Rentables from the Inventory' '#TODO: to determine which Products of a Category to offer I need to retrieve information about availability of e.g. Cooks and ServicePersonel from the Users or Rentables from the Inventory'

Binary file not shown.