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 스키마를 확장하는 기능을 타사에 제공합니다.