Webel: Mathematica: WISHLIST: Support for decent vendor-supported, built-in, fully fledged, IDE-friendly, object-orientation (OO)! [With or without the use of state, which is a choice, not obligatory, and OO doesn't throw functional away]

Webel IT Australia promotes the amazing Mathematica tool and the powerful Wolfram Language and offers professional Mathematica services for computational computing and data analysis. Our Mathematica tips, issue tracking, and wishlist is offered here most constructively to help improve the tool and language and support the Mathematica user community.
DISCLAIMER: Wolfram Research does not officially endorse analysis by Webel IT Australia.
Icon class
icon_class
far fa-sticky-note
icon_class_computed
far fa-sticky-note
Note kind
Keywords
Dr Darren of Webel IT Australia says:
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.

Mathematica needs decent vendor-supported built-in Wolfram-language OO and integration of said OO with Wolfram Workbench and other IDEs

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.

UPDATE: There is now also (since early 2024) a user-contributed package called Objects developed by Kirill Belov


Relates to
Related notes
Related notes (backlinks)
Related snippets (extracts)
Visit also
Visit also (backlinks)
External links