@startuml
package com.iluwatar.data.locality.game.component.manager {
  class AiComponentManager {
    - AI_COMPONENTS : Component[] {static}
    - LOGGER : Logger {static}
    - MAX_ENTITIES : int {static}
    - numEntities : int
    + AiComponentManager(numEntities : int)
    + start()
    + update()
  }
  class PhysicsComponentManager {
    - LOGGER : Logger {static}
    - MAX_ENTITIES : int {static}
    - PHYSICS_COMPONENTS : Component[] {static}
    - numEntities : int
    + PhysicsComponentManager(numEntities : int)
    + start()
    + update()
  }
  class RenderComponentManager {
    - LOGGER : Logger {static}
    - MAX_ENTITIES : int {static}
    - RENDER_COMPONENTS : Component[] {static}
    - numEntities : int
    + RenderComponentManager(numEntities : int)
    + render()
    + start()
  }
}
package com.iluwatar.data.locality {
  class Application {
    - LOGGER : Logger {static}
    - NUM_ENTITIES : int {static}
    + Application()
    + main(args : String[]) {static}
  }
}
package com.iluwatar.data.locality.game {
  class GameEntity {
    - LOGGER : Logger {static}
    - aiComponentManager : AiComponentManager
    - physicsComponentManager : PhysicsComponentManager
    - renderComponentManager : RenderComponentManager
    + GameEntity(numEntities : int)
    + start()
    + update()
  }
}
package com.iluwatar.data.locality.game.component {
  class AiComponent {
    - LOGGER : Logger {static}
    + AiComponent()
    + render()
    + update()
  }
  interface Component {
    + render() {abstract}
    + update() {abstract}
  }
  class PhysicsComponent {
    - LOGGER : Logger {static}
    + PhysicsComponent()
    + render()
    + update()
  }
  class RenderComponent {
    - LOGGER : Logger {static}
    + RenderComponent()
    + render()
    + update()
  }
}
GameEntity -->  "-physicsComponentManager" PhysicsComponentManager
GameEntity -->  "-aiComponentManager" AiComponentManager
GameEntity -->  "-renderComponentManager" RenderComponentManager
AiComponent ..|> Component 
PhysicsComponent ..|> Component 
RenderComponent ..|> Component 
@enduml