@startuml
class FlightSimulator {
    +run()
    +step()
    +initialize()
    +handleEvents()
    +checkTermination()
    +updateMotors()
}

class ForcesModel {
    +computeNetForce()
    +computeNetMoment()
    +computeThrust()
    +computeAerodynamicDrag()
    +computeGravity()
}

class FlightState {
    +getPosition()
    +setPosition()
    +getVelocity()
    +setVelocity()
    +getAcceleration()
    +setAcceleration()
    +getOrientation()
    +setOrientation()
    +getAngularVelocity()
    +setAngularVelocity()
    +getTime()
    +setTime()
}

class Environment {
    +getAirDensity()
    +getGravity()
}

class Integrator {
    +step()
    +eulerIntegration()
}

FlightSimulator --> ForcesModel
FlightSimulator --> Integrator
FlightSimulator --> FlightState
FlightSimulator --> Environment
ForcesModel --> Rocket
ForcesModel --> Environment
Integrator --> Rocket
Integrator --> ForcesModel
@enduml
