GDL 练习 5:定义不同功能的名称限制
运动
使用 练习 4 中的模板,定义*PFeature: InputTray 的 *POption 中显示的 *Name: 构造,使其最大限制为 16 个字符,而 *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
}
}
注意 使用 继承,可以进一步优化和派生基类的变体,而无需更改任何以前的模板或颠覆以前模板建立的架构的意图。 此功能是继承的另一个优势。 继承使第三方能够在不更改或违反主架构的情况下扩展主架构。