@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
