I am completely convinced that Mathematica (which I'm a huge fan of) would benefit greatly from fully-fledged, truly built-in (not contrived), class and object-orientation support for the Wolfram Language with complete IDE integration, and that this would also attract many new users to the otherwise fantastic Mathematica world.
Visit also this technical slide trail, much of which is dedicated to exploring strategies for object-orientation for the Wolfram Language, as required for the Webel IT Australia projects combining Mathematica with Systems Modeling Language v1 (SysML®):
The Webel libraries for Mathematica also include a complete documentation solution for classes and methods via the HelpO` help registry package, as well as options support for methods.While one can achieve a basic form of some of the data organisation of OO with the Mathematica Entity system, that has many limitations, it still requires far too much custom massaging.
Although a valiant attempt (many thanks to Mathematica expert Faysal Aberkane), the user contributed MTools has some limitations. There is a dedicated discussion here:
There is now a dedicated technical tutorial slide trail section demonstrating how the Webel MAll MTools class extension and the All` package make working with MTools easier: There is also a dedicated technical tutorial slide trail section on the Webel ADT variation on the Abstract Data Type (ADT) approach using TagSetDelayed (as adapted from a technique from Roman Maeder):Apart from MTools and the Abstract Data Types approach, there are some old "toy implementations" on stackexchange, not exactly the level of support one could recommend as an industrial strength solution to a client.