@startuml skinparam classAttributeIconSize 0 class SpaceObject { x y radius color mass update() draw() } class Star { name planets add_planet() set_position() update() draw() } class Planet { star orbit_number orbit_radius angle speed angular_speed linear_speed direction calculate_position() update() draw_orbit() draw() } class SolarSystem { width height stars show_orbits paused create_system() get_direction() resize() update() draw() toggle_pause() toggle_orbits() get_all_objects() get_total_mass() get_planet_count() } class SolarApp { screen clock system save_callback draw_panel() handle_events() run() } class save_system_to_file SpaceObject <|-- Star SpaceObject <|-- Planet SolarSystem *-- Star Star *-- Planet SolarApp --> SolarSystem SolarApp --> save_system_to_file @enduml