@startuml

!include https://deep-tek.com/puml/core.puml


class Satellite {
    -String satelliteId
    -String type
    -Angle position
    -double height
  +setPosition
}
class StandardSatellite {
  -int speed
  -int getFileSpeed
}
class ShrinkingSatellite {
  -int speed
  -int getFileSpeed
}
class RelaySatellite {
  -int speed
  -int getFileSpeed
}
Satellite <|- StandardSatellite
Satellite <|- ShrinkingSatellite
Satellite <|- RelaySatellite

class Device {
    -String deviceId
    -String type
    -Angle position
  +setPosition
}

class BlackoutController {
    -List<String> deviceList
    -List<String> satelliteList
    -List<String> fileSendingList
    -Map<String, Device> deviceMap
    -Map<String, Satellite> satelliteMap
    -Map<String, EntityInfoResponse> map
    +void createDevice(String deviceId, String type, Angle position)
    +void removeDevice(String deviceId)
    +void createSatellite(String satelliteId, String type, double height, Angle position)
    +void removeSatellite(String satelliteId)
    +List<String> listDeviceIds()
    +List<String> listSatelliteIds()
    +void addFileToDevice(String deviceId, String filename, String content)
    +EntityInfoResponse getInfo(String id)
    +void simulate()
    +List<String> communicableEntitiesInRange(String id)
    +void sendFile(String fileName, String fromId, String toId)
}

Device - Satellite : sendFile >
Satellite - Device : sendFile >

Device <|.. BlackoutController
Satellite <|.. BlackoutController

@enduml