Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТ Компьютерный практикум.doc
Скачиваний:
489
Добавлен:
20.03.2016
Размер:
3.35 Mб
Скачать
      1. Основные этапы разработки объектной модели

Объектная модель предметной области может быть разработана как с помощью KAL-интерпретатора, так и в окне Иерархии объектов (Object Browser). Коротко опишем основные приемы построения.

Разработка иерархии классов и объектов. Сразу после запуска системы КАРРА (до открытия конкретного файла) в окне Object Browser представлены следующие структуры, которые составляют основу для разработки всех приложений:

  • класс Root - фундамент, из которого определяются все остальные классы, его нельзя уничтожить или переименовать;

  • подкласс Image - для хранения объектов, используемых при создании пользовательско­го интерфейса;

  • объект Global - предопределённый объект;

  • подкласс KWindows - для описания окон сеанса, в нем уже хранится описание главного окна сеанса системы КАРРА - SESSION.

Чтобы создать в классе подкласс/объект, необходимо

1) щелкнуть мышью на имени класса в окне Object Browser;

2) не отпуская клавиши, в появившемся меню выбрать Добавление Подкласса/Объекта (Add Subclass/Instance);

3) ввести название подкласса/объекта;

4) нажать кнопку ОК.

Удаление и редактирование классов/объектов производятся аналогичным образом (команды Edit и Delete).Класс, у которого есть потомки, удалить невозможно.

Пример. Окно Object Browser

В Root создан класс Volost, класс People - его подкласс, Lgoth и Usual - объекты этого класса. Объекты показываются курсивом, связи КЛАСС-КЛАСС - непрерывной чертой, а КЛАСС-ОБЪЕКТ - штриховой линией, а иерархия объ­ектов распространяется слева направо. Если в классе People определить слот, например, NumberOfp (количество человек), то и объек­ты Lgoth и Usual будут иметь аналогичный слот NumberOfp, перешедший к ним по наследству от роди­тельского класса People.

КАРРА автоматически относит к каждому слоту ряд опций (в редакторе клас­са/объекта выбрав конкретный слот, войдите в меню Slots/Edit/Options), среди которых, в частности, три опции для присоединения к слоту методов (процедур):

  • метод, выполняемый автоматически, когда запрашивается значение слота, а это значе­ние отсутствует;

  • метод, выполняемый перед тем, как произойдет изменение значения слота;

  • метод, выполняемый сразу после изменения значения слота.

Кроме того, для слота определяются значность, тип, область допустимых значений:

  • значность (cardinality) - один (single, по умолчанию), много (multiple, зна­чения имеют, вид списка);

  • тип значения: текст, число (целое или вещественное), булевский (true или false), объект (имя класса или экземпляра);

  • ограничения и допустимые значения (если список значений, то эти значения писать через пробел).

В окне Иерархии объектов есть возможность просматривать только часть всей ие­рархии, для этого нужно в классе использовать команду Focus , в результате будут видны только этот класс и его потомки. Для какой-либо работы с существующим элементом сначала следует вы­брать его имя из списка имеющихся, а затем уже активизируется соответствующий редак­тор.

Насле­дуемые от предков слоты КАРРА помечает звездочкой (*). Глобальный (для конкретной части объектов) слот будет передавать по наследству и полученное значение, что бывает лишним. Существует два способа отменить такое наследование:

• сделать слот локальным (в редакторе класса/объекта для соответствующего слота вы­брать пункты меню Slots/Make local). Глобальность слота можно восстановить путем удаления соответствующего локального слота;

• редактировать значение слота на определенном уровне.

В обоих случаях измененное значение наследуется слотами, которые находятся ниже по иерархии.

Разработка методов

Методы - это процедуры, являющиеся атрибутами объекта. Процесс активизации метода в объекте назван посылкой сообщения. Когда объект получает сообщение, отно­сящееся к одному из его методов, этот метод вступает в действие и выполняет опреде­ленную им процедуру. Методы передаются по наследству, по аналогии со слотами.

Пример.

Создадим метод, который будет сообщать нашему пользователю о том, что введено слишком большое количество жителей волости (People:NumberOfP). Для этого нужно;

1) выбрать редактор Класса, пункт меню Edit и класс People;

2) меню Methods/New;

3) назовем метод num;

4) в появившемся окне редактора метода в строке аргументов (Arguments) ввести:

x NumberOfP

5) в теле метода:

{

If( Self:x<=1000 )

Then PostMessage(«Вы ввели количество жителей волости.»)

Else PostMessage(«Введенное Вами число жителей волости слишком большое !»);

};

6) выбрать Update/Close;

7) в классе People щелкнуть два раза на слот NumberOfp;

8) войти в пункт меню Options;

9) ввести в поле After Change название нашего метода num;

10) выбрать тип значения number и ограничения 0 .. 1000;

11) нажать OK и сохраните класс People.

Для проверки этого метода следует ввести в окне Интерпретатора:

AskValue(People, NumberOfp);

и нажать Enter.

Методы выполняют несколько видов действий:

  • изменяют состояние БЗ (значения слотов),

  • посылают сообщения в любой объект;

  • активизируют другие средства системы, например, базирующиеся на правилах рассуж­дения.