GDL 練習 5:定義不同功能的名稱限制
運動
使用 練習 4中的範本,定義 *Name: 建構,該建構出現在 *PFeature:InputFeature:InputTray 的 *POption 內,使其限制為 16 個字元上限,而 *Name:出現在 *PFeature 的 *POption 內: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
}
}
注意 使用 繼承,您可以進一步精簡和衍生基類的變化,而不需要改變任何先前的範本,或改變先前範本所建立之架構的意圖。 這項功能是繼承的另一個強度。 繼承提供協力廠商擴充主要架構的能力,而不需變更或違反主要架構。