# JSci Specification

This is here as a reminder for me and an aid for you when developing further classes for JSci.

### Naming

All sub-package names should be in lower case.

### Hierarchy

Any class with the postfix Math should extend JSci.maths.AbstractMath, and be impossible to instantiate.

### Class Design

Classes that encapsulate mathematical objects should follow these guidelines:

- implement a sub-interface of JSci.maths.Member.
- generally be immutable (does not implement java.lang.Cloneable interface).
- contain methods that perform defined mathematical operations on the class.
- non-mathematical methods should be kept to an absolute minimum - put them in another class. This is to keep the dependence on other (auxiliary) classes to a minimum.

Return to the Developer's Guide contents.