Partager via


Exercice GDL 5 : Définition de limites de noms pour différentes fonctionnalités

Exercice

À l’aide des modèles de l’exercice 4, définissez la construction *Name: qui apparaît dans le *POption qui fait partie de *PFeature: InputTray afin qu’elle soit limitée à 16 caractères maximum et le *Name: qui apparaît dans le *POption qui fait partie de *PFeature: PaperSize est limité à 24 chars maximum.

Apportez cette modification sans supprimer ou modifier aucun des modèles précédemment définis. Créez un fichier de données GDL simple pour vérifier la modélisation correcte des entrées.

Solution

Le modèle suivant remplit les conditions.

*Template:  PAPER_SIZE_OPT_NAME
{
*Name:  "*Name"  *% isolate this branch from base templates
*Inherits: NAME
*MaxLength: 24 chars
}
*Template:  INPUTTRAY_OPT_NAME
{
*Name:  "*Name"  *% isolate this branch from base templates
*Inherits: NAME
*MaxLength: 16 chars
}

*Template:  INPUTTRAY_OPTION2
{
    *Inherits: INPUTTRAY_OPTION
    *Members:  (INPUTTRAY_OPT_NAME)
    *Instances:  <ANY>
}
*Template:  PAPERSIZE_OPTION2
{
    *Inherits: PAPERSIZE_OPTION
    *Members:  (PAPER_SIZE_OPT_NAME)
    *Instances:  <ANY>
}
*PFeature: random
{
*Name:"Generic Feature"
*DefaultOption: First
*POption: First
{
 *Name: "First Option"
 *Command: "Select me"
}
}
*PFeature: PaperSize
{
*Name: "Paper Size"
*DefaultOption: Letter
*POption: Letter
{
 *Name: "Letter"
 *Command: "Select Letter"
 *PaperSize: PAIR(8.5, 11) inches
}
*POption:   Legal
{
 *Name: "Legal"
 *Command: "Select Legal"
 *PaperSize: PAIR(8.5, 14) inches
}
*POption: A4
{
 *Name: "A4"
 *Command: "Select A4"
 *PaperSize: PAIR(205, 317) mm
}
}
*PFeature: InputTray
{
*Name:  "Paper Source"
*DefaultOption: Upper
*POption: Upper
{
 *Name: "Upper Tray"
 *Command:  "Select Upper Tray"
 *Capacity:  2000 sheets
}
*POption: Lower
{
 *Name: "Lower Tray"
 *Command:  "Select Lower Tray"
 *Capacity:  500 sheets
}
}

Note À l’aide de l’héritage, vous pouvez affiner et dériver davantage les variations d’une classe de base sans modifier les modèles précédents ou inverser l’intention du schéma établi par les modèles précédents. Cette fonctionnalité est une autre force de l’héritage. L’héritage permet à un tiers d’étendre le schéma master sans modifier ou violer le schéma master.