Link to Introduction


Frequently Asked Questions

What inherently mathematical uses (or math programming uses) do you see for OO technology?
First, it must be understood, that the oo system offered here, has to be compared with Mathematica packages not with application programs, a fact, that is often misunderstood. With oo you use classes as you use packages in procedural programming.
Oo has primarily to do with the organization of the code. Many think, that you get a better and more understandable organization of the code with oo than with procedural programming.

The use of oo offers features not present with procedural programming

There are not primarily inherently mathematical uses of oo. Oo offers for Mathematica the same advantages, as it does for other programmings languages.

What is the the difference between the oo system of Mr. Maeder and the system offered here?
The systems are very different. Here I only want to direct attention to the - in my opinion - most important point:
The oo system of Mr. Maeder is a very good demonstration of the power of Mathematica. But for the practical use it has a large disadvantage:
The classes are defined in the program, in which they are used.
In the system offered here the classes are defined outside any program and can be used in any program, as it is e.g. also the case in Java and C++.
In this way classes get a function comparable to the Mathematica packages.

Is there a reason that oosys.m isn't a 'real' package and one has to use run as notebook?
The file oosys.m contains the oo software in the form of a normal Mathematica package. But the software is offered in another form, in order to make the execution of the examples as easy as possible.

Is it possible to implement the 'rectangles' class to have more than one constructor (RectangleInit)
You may have more than one constructor. Mathematica takes that constructor, which matches the arguments "par" in MathNew (see documentation p.3 "creation of objects").

How are functions in packages called from objects?
The following statement is used:
pck["context"] @ f[..].
The statement may also be used outside objects, if the oo system is loaded.