@startuml package com.iluwatar.collectingparameter { class App { ~ printerQueue : PrinterQueue {static} + App() + addValidA2Papers(printerItemsCollection : Queue) {static} + addValidA3Papers(printerItemsCollection : Queue) {static} + addValidA4Papers(printerItemsCollection : Queue) {static} + main(args : String[]) {static} } ~enum PaperSizes { + A2 {static} + A3 {static} + A4 {static} + valueOf(name : String) : PaperSizes {static} + values() : PaperSizes[] {static} } class PrinterItem { ~ isColour : boolean ~ isDoubleSided : boolean ~ pageCount : int ~ paperSize : PaperSizes + PrinterItem(paperSize : PaperSizes, pageCount : int, isDoubleSided : boolean, isColour : boolean) } class PrinterQueue { ~ currentInstance : PrinterQueue {static} - printerItemQueue : Queue - PrinterQueue() + addPrinterItem(printerItem : PrinterItem) + emptyQueue() + getInstance() : PrinterQueue {static} + getPrinterQueue() : Queue } } PrinterQueue --> "-currentInstance" PrinterQueue PrinterQueue --> "-printerItemQueue" PrinterItem App --> "-printerQueue" PrinterQueue PrinterItem --> "-paperSize" PaperSizes @enduml