Class hierarchy and inheritance of slots

Inheritance is specified upon class definition. As said in the introduction, supports multiple inheritance. Hereafter are some classes definition:
\begin{scheme}
(define-class A () (a))
(define-class B () (b))
(define-class C (...
...A B) (d a))
(define-class E (A C) (e c))
(define-class F (D E) (f))
\end{scheme}

A, B, C have a null list of super classes. In this case, the system will replace it by the list which only contains <object>, the root of all the classes defined by define-class. D, E, F use multiple inheritance: each class inherits from two previously defined classes. Those class definitions define a hierarchy which is shown in Figure 1. In this figure, the class <top> is also shown; this class is the super class of all Scheme objects. In particular, <top> is the super class of all standard Scheme types.

Figure: A class hierarchy
\begin{figure}\centerline{\psfig{figure={hierarchy.eps}}}\end{figure}

The set of slots of a given class is calculated by ``unioning'' the slots of all its super class. For instance, each instance of the class D, defined before will have three slots (a, b and d). The slots of a class can be obtained by the class-slots primitive. For instance,
\begin{scheme}
(class-slots A) \lev (a)
(class-slots E) \lev (a e c)
(class-slots F) \lev (d a b c f)
\end{scheme}


\begin{note}
The order of slots is not significant.
\end{note}