@startuml package com.iluwatar.event.queue { class App { - LOGGER : Logger {static} + App() + main(args : String[]) {static} } class Audio { - INSTANCE : Audio {static} - LOGGER : Logger {static} - MAX_PENDING : int {static} - headIndex : int - pendingAudio : PlayMessage[] - tailIndex : int - updateThread : Thread ~ Audio() + getAudioStream(filePath : String) : AudioInputStream + getInstance() : Audio {static} + getPendingAudio() : PlayMessage[] + init() + isServiceRunning() : boolean + playSound(stream : AudioInputStream, volume : float) - startThread() + stopService() - update() } class PlayMessage { - stream : AudioInputStream - volume : float + PlayMessage(stream : AudioInputStream, volume : float) + getStream() : AudioInputStream + getVolume() : float - setStream(stream : AudioInputStream) + setVolume(volume : float) } } Audio --> "-INSTANCE" Audio @enduml