@startuml package com.iluwatar.threadpool { abstract class Task { - ID_GENERATOR : AtomicInteger {static} - id : int - timeMs : int + Task(timeMs : int) + getId() : int + getTimeMs() : int + toString() : String } class CoffeeMakingTask { - TIME_PER_CUP : int {static} + CoffeeMakingTask(numCups : int) + toString() : String } class Worker { - task : Task + Worker(task : Task) + run() } class PotatoPeelingTask { - TIME_PER_POTATO : int {static} + PotatoPeelingTask(numPotatoes : int) + toString() : String } class App { + App() + main(args : String[]) {static} } } Worker --> "-task" Task CoffeeMakingTask --|> Task PotatoPeelingTask --|> Task @enduml