The original Asteroids game contained a high level of coupling between its components. To address this, and to better support testing of extensions and extension points, I restructured the project to decouple the Vector and Clock classes from the rest of the game logic.
This change improves modularity, makes testing easier, and allows future features or updates to be integrated with less impact on existing code.
My design can be seen in the following image:
For comparison purposes, here is a link to the original project.