Pour définir une classe en CLOS, on utilise la macro defclass dont voici la syntaxe :
Les superclasses sont les classes dont celle-ci hérite. L'ordre entre les superclasses est important pour déterminer le comportement exact des instances de la classe ; cependant, il est sans importance pour des applications simples.
Chaque créneau-i est une liste dont le premier élément est le nom du créneau(en Anglais : slot) et les autres éléments sont des options du créneau (en Anglais : slot options).
Les options du créneau sont des couples constitués d'un mot-clé et d'une valeur. Avec l'option :initform il est possible de donner une valeur initiale à une instance créée par make-instance. Exemple de McCLIM :
L'expression qui suit le mot-clé :initform est évaluée à chaque fois qu'une instance de la classe est créée.
Avec l'option :initarg, on peut indiquer un argument mot-clé à utiliser avec make-instance pour donner une valeur initiale au créneau. Le mot-clé est souvent le même que le nom du créneau, mais pas toujours. Exemples de McCLIM :
Le dernier exemple illustre l'utilisation simultanée de :initarg et :initform. Dans ce cas, si l'argument d'initialisation n'est pas fourni à make-instance, c'est la valeur de l'expression qui suit :initform qui est évaluée.
Voici quelques exemples d'utilisation de make-instance :
Deux autres options de créneau sont souvent utiles : :reader et :accessor. Ce sont des abréviations pour la définition de méthodes dont le but est de accéder ou de modifier le créneau.
Une définition comme celle-ci :
est équivalente à
Irene DURAND