ObjSci - Objects for Science

ObjSci is the object model behind these libraries. It is documented here for completeness and may be of use to those of you who wish to develop for this package.

Objective

ObjSci aims to encapsulate scientific principles and ideas in a way that is representative of their underlying structure and usage.

Specification

ObjSci specifies two different types of classes:

Library classes

These types of classes cannot be instantiated and usually have a postfix of Math. They contain independent functions that require no interaction at the API level. Independent meaning that it should be possible to isolate a function in a class of its own. Note, this does not preclude being able to share function code within a class as long as it is possible to separate it - usually by duplication. Library classes are used to manipulate the Representation classes.

Representation classes

These types of classes can be instantiated. They allow for interactivity at the API level and represent physical/mathematical structures. Generally, these classes should be immutable so that there is an injective map between the objects and "reality".