ClassSynopsis = ( ( OOClass | OOInterface | OOException )+, ( ClassSynopsisInfo | FieldSynopsis| ConstructorSynopsis | DestructorSynopsis | MethodSynopsis )* ) OOClass = (Modifier*, ClassName) OOInterface = (Modifier*, InterfaceName) OOException = (Modifier*, ExceptionName) ClassName = ( #PCDATA | Replaceable | InlineGraphic | InlineMediaObject | IndexTerm )* InterfaceName = ( #PCDATA | Replaceable | InlineGraphic | InlineMediaObject | IndexTerm )* ExceptionName = ( #PCDATA | Replaceable | InlineGraphic | InlineMediaObject | IndexTerm )* FieldSynopsis = ( Modifier*, Type?, VarName, Initializer? ) ConstructorSynopsis = ( Modifier*, MethodName?, ( MethodParam+ | Void ), ExceptionName* ) DestructorSynopsis = ( Modifier*, MethodName?, ( MethodParam+ | Void ), ExceptionName* ) MethodSynopsis = ( Modifier*, ( Type | Void )?, MethodName, ( MethodParam+ | Void ), ExceptionName*, Modifier* ) Modifier = ( #PCDATA | Replaceable | InlineGraphic | InlineMediaObject | IndexTerm )* Type = ( ( #PCDATA | Replaceable | InlineGraphic | InlineMediaObject | IndexTerm )+ ) VarName = ( ( #PCDATA | Replaceable | InlineGraphic | InlineMediaObject | IndexTerm )+ ) Initializer = ( ( #PCDATA | Replaceable | InlineGraphic | InlineMediaObject | IndexTerm )+ ) MethodName = ( #PCDATA | Replaceable | InlineGraphic | InlineMediaObject | IndexTerm )* MethodParam = ( Modifier*, Type?, ( ( Parameter , Initializer? ) | FuncParams ), Modifier* ) Void = EMPTY ExceptionName = ( #PCDATA | Replaceable | InlineGraphic | InlineMediaObject | IndexTerm )* |
Éléments : ClassSynopsis, OOClass, OOInterface, OOException, ClassSynopsisInfo, FieldSynopsis, ConstructorSynopsis, DestructorSynopsis, MethodSynopsis, Modifier, ClassName, InterfaceName, ExceptionName, Type, VarName, Initializer, MethodName, MethodParam, Void, Replaceable, InlineGraphic, InlineMediaObject, IndexTerm, Parameter, FuncParams. Attributs : Language, Class, Choice, Rep.
L'élément ClassSynopsis permet de donner la définition d'une classe pour un langage orienté objet comme Java, C++, IDL et Python.
Il n'est pas nécessaire de fournir la ponctuation pour le rendu final de la définition de la classe. L'élément ClassSynopsis permet de définir une classe indépendemment d'un langage orienté objet, et l'application de traitement pourra alors rendre différemment cette définition de classe selon le langage désiré.
L'élément ClassSynopsis permet de définir soit une classe, soit une interface. Pour cela, il faut utiliser l'attribut Class, qui peut prendre les valeurs Class et Interface. La valeur Class est prise par défaut.
De plus, l'attribut Language de ClassSynopsis permet de donner le langage de programmation objet pour lequel cette définition doit être rendue. DocBook ne donne pas de valeurs particulières pour cet attribut. C'est à l'application de traitement de spécifier la liste des langages possibles, ainsi que le langage par défaut.
L'élément ClassSynopsis contient pour commencer un ou plusieurs des éléments OOClass, OOInterface et OOException. Ces éléments permettent de définir la classe, les superclasses, les interfaces implémentées et les exceptions levées par la classe dans le cas de la définition d'une classe, ou l'interface dans le cas de la définition d'une interface.
Chacun de ces éléments OOClass, OOInterface et OOException contiennent un nombre quelconque de modificateurs (Modifier), suivis, respectivement, de l'élément ClassName, InterfaceName ou ExceptionName.
Les éléments Modifier, ClassName, InterfaceName et ExceptionName contiennent un nombre quelconque d'éléments suivants :
des caractères (#PCDATA),
Un élément Replaceable, qui indique que le contenu doit être remplacé par l'utilisateur,
un objet graphique en ligne (InlineGraphic),
un objet multimédia en ligne (InlineMediaObject),
un terme d'index (IndexTerm).
L'élément ClassSynopsis contient ensuite des métainformations pour un synopsis de classe ClassSynopsisInfo (see le chapitre intitulé Métainformations).
Viennent ensuite les définitions des champs, des constructeurs, du destructeur et des méthodes de la classe, respectivement représentés par FieldSynopsis, ConstructorSynopsis, DestructorSynopsis et MethodSynopsis. Chaque synopsis de classe peut contenir un nombre quelconque de ces éléments dans un ordre quelconque.
Une définition de champ FieldSynopsis est constitué :
d'un nombre quelconque de modificateurs (Modifier),
d'un type (Type), optionnel,
d'un nom de variable (VarName), obligatoire,
d'un initialiseur (Initializer), optionnel, qui donne la valeur d'initialisation de la variable.
Les définitions de constructeurs et de destructeurs sont constitués :
d'un nombre quelconque de modificateurs (Modifier),
d'un nom de méthode (MethodName), optionnel,
des paramètres, constitués soit d'un ou plusieurs paramètres de méthode (MethodParam), soit du seul élément Void indiquant que la méthode n'a pas de paramètre,
d'un nombre quelconque de noms d'exceptions (ExceptionName).
Dans les divers langages objet, les constructeurs et destructeurs portent généralement le nom de la classe. Il n'est donc pas obligatoire de déclarer le nom de la méthode dans ce cas-là.
Une définition de méthode est constituée :
d'un nombre quelconque de modificateurs (Modifier),
du type de la méthode, optionnel, en utilisant soit un type explicite (Type) soit un non-type (Void),
du nom de la méthode (MethodName), obligatoire,
des paramètres, constitués soit d'un ou plusieurs paramètres de méthode (MethodParam), soit du seul élément Void indiquant que la méthode n'a pas de paramètre,
d'un nombre quelconque de noms d'exceptions (ExceptionName),
d'un nombre quelconque de modificateurs (Modifier), suffixes cette fois.
Les éléments Type, VarName, Initializer contiennent un ou plusieurs éléments suivants :
des caractères (#PCDATA),
Un élément Replaceable, qui indique que le contenu doit être remplacé par l'utilisateur,
un objet graphique en ligne (InlineGraphic),
un objet multimédia en ligne (InlineMediaObject),
un terme d'index (IndexTerm).
Les éléments MethodName et ExceptionName contiennent un nombre quelconque d'éléments suivants :
des caractères (#PCDATA),
Un élément Replaceable, qui indique que le contenu doit être remplacé par l'utilisateur,
un objet graphique en ligne (InlineGraphic),
un objet multimédia en ligne (InlineMediaObject),
un terme d'index (IndexTerm).
Un paramètre de méthode (MethodParam) est constitué :
d'un nombre quelconque de modificateurs (Modifier),
d'un type (Type), optionnel,
soit d'un nom de paramètre (Parameter), suivi d'un initialisateur optionnel (Initializer) dans le cas où le paramètre est une variable, soit de paramètres de fonctions (FuncParams) dans le cas où le paramètre est un pointeur de fonction,
d'un nombre quelconque de modificateurs (Modifier), suffixes.
<classsynopsis language="java" class="interface"> <oointerface> <modifier>public</modifier> <interfacename>Figure</interfacename> </oointerface> <fieldsynopsis> <type>int</type> <varname>dimensions</varname> </fieldsynopsis> <methodsynopsis> <modifier>public</modifier> <modifier>abstract</modifier> <void> <methodname>Dessine</methodname> <void> </methodsynopsis> </classsynopsis> |
public interface Figure { int dimensions; public abstract void Dessine (); } |
<classsynopsis language="java" class="interface"> <oointerface> <modifier>public</modifier> <interfacename>FigurePlane</interfacename> </oointerface> <oointerface> <interfacename>Figure</interfacename> </oointerface> <fieldsynopsis> <type>int</type> <varname>dimensions</varname> <initializer>2</initializer> </fieldsynopsis> <methodsynopsis> <modifier>public</modifier> <modifier>abstract</modifier> <void> <methodname>Dessine</methodname> <void> </methodsynopsis> </classsynopsis> |
public interface FigurePlane extends Figure { int dimensions = 2; public abstract void Dessine (); } |
<classsynopsis language="java" class="class"> <ooclass> <modifier>public</modifier> <classname>Rectangle</classname> </ooclass> <oointerface> <interfacename>FigurePlane</interfacename> </oointerface> <constructorsynopsis> <methodname>Rectangle</methodname> <methodparam> <type>int</type> <parameter>largeur</parameter> </methodparam> <methodparam> <type>int</type> <parameter>hauteur</parameter> </methodparam> </constructorsynopsis> </classsynopsis> |
public class Rectangle implements FigurePlane { Rectangle (int largeur, int hauteur); } |
<classsynopsis language="java" class="class"> <ooclass> <modifier>public</modifier> <classname><replaceable>nom_classe</replaceable></classname> </ooclass> <oointerface> <interfacename><replaceable>nom_interface</replaceable></interfacename> </oointerface> <constructorsynopsis> <methodname><replaceable>nom_classe</replaceable></methodname> <methodparam> <type><replaceable>type</replaceable></type> <parameter><replaceable>argument1</replaceable></parameter> </methodparam> <methodparam> <type><replaceable>type</replaceable></type> <parameter><replaceable>argument2</replaceable></parameter> </methodparam> </constructorsynopsis> </classsynopsis> |
public class nom_classe implements nom_interface { nom_classe (type argument1, type argument2); } |