Sigh... And then they wonder why students taking Object Oriented programming courses end up being so bad at doing proper OO.

'Graphical Shapes' is such a bad example to work with. Taking real life 'objects' and trying to match them with the 'Objects' (classes) in OO is just a really really bad mindset. It's one of the first things we always have to stamp out of new job recruits.

In real life a circle is a special form of an oval
a square is a special form of a rectangle

trying to enforce this type of thinking into an OO design class hierarchy (class shape has a derived class rectangle and this in turn has a derived class square) is just asking for problems.
Most books and courses using this very 'shapes' example invariably end up weasling their way out of it either by awful implementation or by just avoiding the issue altogether.

Your teacher deserves a slapping.
For perpetuating bad design concepts, and for making you use antiquated user interfaces.