@startuml package com.iluwatar.object.pool { class App { - LOGGER : Logger {static} + App() + main(args : String[]) {static} } abstract class ObjectPool<T> { - available : Set<T> - inUse : Set<T> + ObjectPool<T>() + checkIn(instance : T) + checkOut() : T # create() : T {abstract} + toString() : String } class Oliphaunt { - counter : AtomicInteger {static} - id : int + Oliphaunt() + getId() : int + toString() : String } class OliphauntPool { + OliphauntPool() # create() : Oliphaunt } } OliphauntPool --|> ObjectPool @enduml