@startuml class Rocket { +addStage() +updateMassProperties() +prepareForFlight() +applyFlightState() +getTotalMass() +getCenterOfGravity() +getCenterOfPressure() } class Stage { +addMotor() +setAirframe() +setFinSet() +setRecoverySystem() +updateMassProperties() +getTotalThrust() } class Motor { +addThrustDataPoint() +ignite() +update() +getCurrentThrust() } class Airframe { +getLength() +getReferenceArea() } class FinSet { +calculateNormalForceCoefficient() +calculateCenterOfPressure() +calculateDragArea() +calculateMass() } class RecoverySystem { +checkDeploymentCondition() +deploy() +isDeployed() } Rocket "1" *-- "*" Stage Stage "1" *-- "*" Motor Stage "1" *-- "0..1" Airframe Stage "1" *-- "0..1" FinSet Stage "1" *-- "0..1" RecoverySystem @enduml