Conclusions
The experiments with Java show that object oriented programming deserves a closer look in the context of mathematics.
Knowledge of the mechanism of overriding and dynamic binding allows a straightforward implementation of abstract mathematical structures.
Object oriented programming should be a main feature in CAS (as user defined functions a couple of years ago).
Mathematical software should use object oriented terminology instead of "reinventing the wheel".