Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие (KAPPA).doc
Скачиваний:
28
Добавлен:
10.02.2015
Размер:
393.22 Кб
Скачать

Результаты выполнения шага 10

Вы выполнили последний шаг в разработке приложения. При этом Вы сохранили необходимый для разработки нового приложения класс JobbLevel, что сэкономит время создания нового приложения. Вы также можете сохранять и использовать вновь и другие части приложения, например, функции, правила и др.

Ниже приведено окно Object Browser (рис. 20), открытое при разработке нового приложения. Видно, что в иерархии уже имеется класс JobLevel.

Рис. 20. Окно Object Browser с классом JobLevel для разработки нового приложения.

Ниже приведено представление класса JobLevel в виде файла.

Ниже приведено представление всей проделанной при создании данного приложения работы в виде текстового файла. Рекомендуется внимательно ознакомиться с текстом, который может быть отредактирован в любом текстовом редакторе.

/*********************************************************/

/** ALL FUNCTIONS ARE SAVED BELOW **/

/*********************************************************/

/*************************************

**** FUNCTION: Demote

*************************************/

MakeFunction( Demote, [],

{

PostInputForm( "Who is to be demoted?", Global:Demotee, Name );

MoveInstance( Global:Demotee, Engineer );

} );

/*************************************

**** FUNCTION: Promote

*************************************/

MakeFunction( Promote, [],

{

PostInputForm( "Who is to be promoted?", Global:Promotee, Name );

MoveInstance( Global:Promotee, Manager );

} );

/*********************************************************/

/** ALL CLASSES ARE SAVED BELOW **/

/*********************************************************/

/*************************************

**** CLASS: Image

*************************************/

Image:X = 100;

Image:Y = 100;

Image:Width = 150;

Image:Height = 120;

Image:WinType = Make_ImageWindow;

Image:Visible = FALSE;

Image:ShowBorder = TRUE;

Image:Transparent = FALSE;

SetSlotOption( Image:ForegroundColor, MULTIPLE );

ClearList( Image:ForegroundColor );

SetSlotOption( Image:BackgroundColor, MULTIPLE );

ClearList( Image:BackgroundColor );

Image:TabStop = FALSE;

/*************************************

**** CLASS: SlotView

*************************************/

/*************************************

**** CLASS: OutputView

*************************************/

/*************************************

**** CLASS: StateBox

*************************************/

SetSlotOption( StateBox:AllowableValues, MULTIPLE );

ClearList( StateBox:AllowableValues );

StateBox:Draw = Draw_RectLight;

StateBox:Update = Update_RectLight;

/*************************************

**** CLASS: Meter

*************************************/

Meter:XFormat = FormatValue ( "\%8.2f" );

Meter:Draw = Draw_HMeter;

Meter:Update = Update_HMeter;

/*************************************

**** CLASS: InputOutputView

*************************************/

InputOutputView:TabStop = 0;

/*************************************

**** CLASS: ListBox

*************************************/

ListBox:ShowBorder = FALSE;

ListBox:Sort = TRUE;

SetSlotOption( ListBox:AllowableValues, MULTIPLE );

ClearList( ListBox:AllowableValues );

ListBox:TabStop = FALSE;

/*************************************

**** CLASS: SingleListBox

*************************************/

SingleListBox:WinType = Make_SingleListBoxWindow;

SingleListBox:Update = Update_SingleLB;

/*************************************

**** CLASS: MultipleListBox

*************************************/

SetSlotOption( MultipleListBox:Value, MULTIPLE );

ClearList( MultipleListBox:Value );

MultipleListBox:WinType = Make_MultipleListBoxWindow;

MultipleListBox:Update = Update_MultipleLB;

/*************************************

**** CLASS: Edit

*************************************/

Edit:ShowBorder = FALSE;

Edit:Width = 100;

Edit:Height = 25;

Edit:WinType = Make_EditWindow;

Edit:Update = Update_Edit;

/*************************************

**** CLASS: Slider

*************************************/

Slider:XFormat = FormatValue ( "\%8.2f" );

Slider:Width = 200;

Slider:Height = 85;

Slider:TabStop = 0;

Slider:WinType = Make_SliderWindow;

Slider:Draw = Draw_Slider;

Slider:Update = Update_Slider;

/*************************************

**** CLASS: CheckBox

*************************************/

CheckBox:ShowBorder = FALSE;

CheckBox:Width = 100;

CheckBox:Height = 25;

CheckBox:WinType = Make_CheckBoxWindow;

CheckBox:Update = Update_CheckBox;

/*************************************

**** CLASS: CheckBoxGroup

*************************************/

SetSlotOption( CheckBoxGroup:AllowableValues, MULTIPLE );

ClearList( CheckBoxGroup:AllowableValues );

SetSlotOption( CheckBoxGroup:Value, MULTIPLE );

ClearList( CheckBoxGroup:Value );

CheckBoxGroup:TabStop = FALSE;

CheckBoxGroup:WinType = Make_CBGroupWindow;

CheckBoxGroup:Update = Update_CBGroup;

/*************************************

**** CLASS: RadioButtonGroup

*************************************/

SetSlotOption( RadioButtonGroup:AllowableValues, MULTIPLE );

ClearList( RadioButtonGroup:AllowableValues );

RadioButtonGroup:TabStop = FALSE;

RadioButtonGroup:WinType = Make_RBGroupWindow;

RadioButtonGroup:Update = Update_RBGroup;

/*************************************

**** CLASS: Button

*************************************/

Button:ShowBorder = FALSE;

Button:Width = 100;

Button:Height = 25;

Button:TabStop = 0;

Button:WinType = Make_ButtonWindow;

Button:Draw = Draw_Bitmap;

/*************************************

**** CLASS: Text

*************************************/

Text:Transparent = FALSE;

Text:Justification = CENTER;

Text:ShowBorder = FALSE;

Text:Width = 100;

Text:Height = 25;

Text:WinType = Make_StaticWindow;

/*************************************

**** CLASS: Transcript

*************************************/

Transcript:ProportionalFont = TRUE;

Transcript:VertScroll = AUTO;

Transcript:HorzScroll = AUTO;

Transcript:ShowBorder = TRUE;

Transcript:WinType = Make_TransWindow;

/*************************************

**** CLASS: LinePlot

*************************************/

LinePlot:AutoScale = FALSE;

LinePlot:Grid = FALSE;

LinePlot:MinTicks = 3;

LinePlot:MaxTicks = 8;

LinePlot:XFormat = FormatValue ( "\%6.2f" );

LinePlot:YFormat = FormatValue ( "\%6.2f" );

LinePlot:Draw = Draw_LinePlot;

LinePlot:Update = Update_LinePlot;

LinePlot:Print = Print_LinePlot;

/*************************************

**** CLASS: Bitmap

*************************************/

Bitmap:FitToScreen = FALSE;

Bitmap:Draw = Draw_Bitmap;

/*************************************

**** CLASS: Drawing

*************************************/

Drawing:XLeft = 0;

Drawing:YTop = 0;

Drawing:XRight = 100;

Drawing:YBottom = 100;

Drawing:Draw = Draw_Drawing;

Drawing:Print = Print_Drawing;

/*************************************

**** CLASS: KWindow

*************************************/

KWindow:Visible = FALSE;

SetSlotOption( KWindow:BackgroundColor, MULTIPLE );

ClearList( KWindow:BackgroundColor );

/*************************************

**** CLASS: KSession

*************************************/

KSession:X = 20;

KSession:Y = 120;

KSession:Width = 465;

KSession:Height = 220;

KSession:Sizebox = TRUE;

KSession:Menu = TRUE;

KSession:Freeze = FALSE;

KSession:Titlebar = TRUE;

KSession:State = HIDDEN;

KSession:WinType = Make_SessionPopupWindow;

/*************************************

**** CLASS: JobLevel

*************************************/

MakeClass( JobLevel, Root );

/************** METHOD: ChangeJob **************/

MakeMethod( JobLevel, ChangeJob, [],

If ( Self:Performance > 9 )

Then MoveInstance( Self, Manager )

Else MoveInstance( Self, Engineer ) );

MakeSlot( JobLevel:Performance );

SetSlotOption( JobLevel:Performance, AFTER_CHANGE, ChangeJob );

MakeSlot( JobLevel:Salary );

JobLevel:Salary = 30000;

/*************************************

**** CLASS: Engineer

*************************************/

MakeClass( Engineer, JobLevel );

/*************************************

**** CLASS: Manager

*************************************/

MakeClass( Manager, JobLevel );

/*********************************************************/

/** ALL INSTANCES ARE SAVED BELOW **/

/*********************************************************/

MakeSlot( Global:Demotee );

Global:Demotee = Bill;

MakeSlot( Global:Promotee );

Global:Promotee = Dick;

/*************************************

**** INSTANCE: SESSION

*************************************/

SESSION:X = 103;

SESSION:Y = 174;

SESSION:Title = Demo;

SESSION:SessionNumber = 0;

SESSION:Width = 404;

SESSION:Height = 270;

SESSION:State = NORM;

SESSION:Visible = TRUE;

SetValue( SESSION:BackgroundColor, 0, 255, 0 );

SESSION:Menu = TRUE;

SESSION:Titlebar = TRUE;

SESSION:Sizebox = TRUE;

ResetWindow ( SESSION );

/*************************************

**** INSTANCE: Tom

*************************************/

MakeInstance( Tom, Manager );

Tom:Performance = 9.73;

SetSlotOption( Tom:Performance, IMAGE, Slider1 );

/*************************************

**** INSTANCE: Bill

*************************************/

MakeInstance( Bill, Engineer );

/*************************************

**** INSTANCE: Jean

*************************************/

MakeInstance( Jean, Engineer );

/*************************************

**** INSTANCE: Dick

*************************************/

MakeInstance( Dick, Engineer );

/*************************************

**** INSTANCE: Mary

*************************************/

MakeInstance( Mary, Manager );

Mary:Performance = 8;

Mary:Salary = 40000;

/*************************************

**** INSTANCE: Slider1

*************************************/

MakeInstance( Slider1, Slider );

Slider1:SessionNumber = 0;

Slider1:Title = "Set Tom's Performance";

Slider1:TabStop = 0;

Slider1:Visible = TRUE;

Slider1:X = 12;

Slider1:Y = 98;

Slider1:Owner = Tom;

Slider1:OwnerSlot = Performance;

Slider1:MaxValue = 10;

Slider1:MinValue = 1;

Slider1:Width = 200;

Slider1:Height = 93;

Slider1:Value = 9.73;

ResetImage ( Slider1 );

/*************************************

**** INSTANCE: Button1

*************************************/

MakeInstance( Button1, Button );

Button1:SessionNumber = 0;

Button1:Title = Demotion;

Button1:Visible = TRUE;

Button1:X = 255;

Button1:Y = 159;

Button1:Action = Demote;

Button1:Width = 100;

Button1:Height = 25;

ResetImage ( Button1 );

/*************************************

**** INSTANCE: Button2

*************************************/

MakeInstance( Button2, Button );

Button2:SessionNumber = 0;

Button2:Title = Promotion;

Button2:Visible = TRUE;

Button2:X = 252;

Button2:Y = 98;

Button2:Action = Promote;

Button2:Width = 100;

Button2:Height = 25;

ResetImage ( Button2 );

/*************************************

**** INSTANCE: Text1

*************************************/

MakeInstance( Text1, Text );

Text1:SessionNumber = 0;

Text1:Title = "Demonstration Application";

Text1:X = 69;

Text1:Y = 28;

Text1:Width = 216;

Text1:Height = 26;

Text1:TextSize = 16;

Text1:Font = "MS Serif";

Text1:Bold = TRUE;

Text1:Visible = TRUE;

Text1:ShowBorder = TRUE;

Text1:Underline = FALSE;

Text1:Italic = FALSE;

ResetImage ( Text1 );

/*********************************************************/

/** ALL RULES ARE SAVED BELOW **/

/*********************************************************/

/*************************************

**** RULE: Recommend

*************************************/

MakeRule( Recommend, [x|Engineer],

x:Performance > 7 And x:Salary > 35000,

{

PostMessage( x, " will now be promoted." );

MoveInstance( x, Manager );

} );

/*********************************************************/

/** ALL GOALS ARE SAVED BELOW **/

/*********************************************************/