- •Содержание
- •Частей приложения 34
- •Введение
- •Что Вы будете изучать в этом пособии
- •Краткие сведения о использовании пособия
- •3. Начало обучения
- •Шаг 1: Создание классов
- •Результаты выполнения шага 1.
- •Шаг 2: Разработка объектов
- •Результаты выполнения шага 2.
- •Шаг 3: Разработка слотов
- •Результаты выполнения шага 3.
- •Шаг 4: Создание и использование образов
- •Результаты выполнения шага 4
- •Шаг 5: Создание и использование методов
- •Результаты выполнения шага 5
- •Шаг 6: Создание и использование функций
- •Результаты выполнения шага 6.
- •Шаг 7: Создание и использование правил
- •Результаты выполнения шага 7
- •Шаг 8: Разработка пользовательского интерфейса (часть 1)
- •Результаты выполнения шага 8
- •Шаг 9: Разработка и использование пользовательского интерфейса (часть 2)
- •Результаты выполнения шага 9
- •Шаг 10: Сохранение и повторное использование частей приложения
- •Результаты выполнения шага 10
- •Заключение
- •Раздел 1. Создание классов, объектов и слотов.
Результаты выполнения шага 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 **/
/*********************************************************/