History homework class
It's opinion-driven, but general points:


You return large strings. Use try/catch for custom errors and warnings.
Manage specific messages separately from your OOP (for example, language files).
Separate layers, such as presentation, application, business logic, etc.


About the further structure: correct, but you didn't post serious logic.

There are many patterns to solve problems, such as Model-View-Controller (separating responsibilities), Adapter pattern, Factory pattern, etc. Read more here.