Object-oriented programming, I need a description about how this code works

Hello,

As @jb4x noted this is a really long piece of code.
It would be better if you could select a couple of areas you don’t understand to focus on.

Is this a homework assignment by any chance?
:nerd_face: