GDL, упражнение 5. Определение ограничений имен для различных функций
Упражнения
С помощью шаблонов из упражнения 4 определите конструкцию *Name: , которая отображается в *POption, которая является частью *PFeature: InputTray, чтобы она была ограничена максимум 16 символами, а *Name: отображается в *POption, которая является частью *PFeature: PaperSize, ограничена максимум 24 символами.
Внесите это изменение, не удаляя или не изменяя ранее определенные шаблоны. Создайте простой файл данных GDL, чтобы проверить правильность шаблонизации записей.
Решение
Приведенный ниже шаблон удовлетворяет условиям.
*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
}
}
Примечание Используя наследование, можно дополнительно уточнить и получить варианты базового класса, не изменяя ни один из предыдущих шаблонов, ни подрывая намерение схемы, установленной предыдущими шаблонами. Эта функция является еще одной силой наследования. Наследование предоставляет третьей стороне возможность расширения схемы master без изменения или нарушения схемы master.