GDL 연습 5: 다양한 기능에 대한 이름 제한 정의

운동

연습 4의 템플릿을 사용하여 *PFeature: InputTray의 일부인 *POption 내에 표시되는 *이름: 구문을 정의하여 최대 16자의 문자로 제한되고 *PFeature: PaperSize의 일부인 *POption 내에 표시되는 *이름: 최대 문자는 최대 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 스키마를 확장하는 기능을 타사에 제공합니다.