@startuml package com.iluwatar.datatransferenum { class App { - LOGGER : Logger {static} + App() + main(args : String[]) {static} } class Product { - cost : Double - id : Long - name : String - price : Double - supplier : String + Product() + getCost() : Double + getId() : Long + getName() : String + getPrice() : Double + getSupplier() : String + setCost(cost : Double) : Product + setId(id : Long) : Product + setName(name : String) : Product + setPrice(price : Double) : Product + setSupplier(supplier : String) : Product + toString() : String } enum ProductDTO { + valueOf(name : String) : ProductDTO {static} + values() : ProductDTO[] {static} } -interface Cost { + getCost() : Double {abstract} } -interface Id { + getId() : Long {abstract} } -interface Name { + getName() : String {abstract} } -interface Price { + getPrice() : Double {abstract} } enum Request { + valueOf(name : String) : Request {static} + values() : Request[] {static} } class Create { - cost : Double - name : String - price : Double - supplier : String + Create() + getCost() : Double + getName() : String + getPrice() : Double + getSupplier() : String + setCost(cost : Double) : Create + setName(name : String) : Create + setPrice(price : Double) : Create + setSupplier(supplier : String) : Create } enum Response { + valueOf(name : String) : Response {static} + values() : Response[] {static} } class Private { - cost : Double - id : Long - name : String - price : Double + Private() + getCost() : Double + getId() : Long + getName() : String + getPrice() : Double + setCost(cost : Double) : Private + setId(id : Long) : Private + setName(name : String) : Private + setPrice(price : Double) : Private + toString() : String } class Public { - id : Long - name : String - price : Double + Public() + getId() : Long + getName() : String + getPrice() : Double + setId(id : Long) : Public + setName(name : String) : Public + setPrice(price : Double) : Public + toString() : String } -interface Supplier { + getSupplier() : String {abstract} } class ProductResource { - products : List + ProductResource(products : List) + getAllProductsForAdmin() : List + getAllProductsForCustomer() : List + getProducts() : List + save(createProductDTO : Create) } } Create ..+ Request Request ..+ ProductDTO Private ..+ Response Supplier ..+ ProductDTO Name ..+ ProductDTO ProductResource --> "-products" Product Public ..+ Response Id ..+ ProductDTO Price ..+ ProductDTO Response ..+ ProductDTO Cost ..+ ProductDTO Create ..|> Name Create ..|> Price Create ..|> Cost Create ..|> Supplier Private ..|> Id Private ..|> Name Private ..|> Price Private ..|> Cost Public ..|> Id Public ..|> Name Public ..|> Price @enduml