---
puppeteer:
  landscape: false
  format: "A4"
  timeout: 3000
export_on_save:
    puppeteer: true
---


```plantuml
@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
```