русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Разработка и программирование объектной модели предметной области


Дата добавления: 2014-11-28; просмотров: 696; Нарушение авторских прав


Содержанием этого этапа практического задания является решение студентом нескольких задач, связанных с разработкой и программированием объектной модели. Каждой из этих задач ниже посвящается отдельный подраздел. В начале каждого подраздела формулируется частная задача, а далее следуют краткие методические указания по ее решению. В результате должны быть разработаны все компоненты объектной модели: классы, объекты, методы. При этом студент должен продемонстрировать знание двух
подходов – в окне Object Browser и в окне KAL Interpreter - и воспользоваться ими для создания иерархии классов и объектов.

Разработка иерархии классов и объектов в окне Object Browser

Необходимо создать иерархию классов и объектов, изображенную на рис. 1.10. В данном случае класс System1 представляет реализацию проектируемой системы на базе первой аппаратной платформы. При этом система состоит из двух приборов Device1 и Device2. Следует представить иерархию в окне в сжатом виде (скрыть подкласс Hardware), а затем вернуться к развернутому представлению.

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

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

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

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

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

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

Информация в окне Object Browser может быть представлена в сжатом или развернутом виде путем удаления из окна объектов или подклассов некоторых указанных пользователем классов (команды Hide/Show Subclasses/Instances). При этом в окне имя класса, чьи объекты или подклассы скрыты, обводится рамкой.

Создать в соответствии с таблицей для классов и объектов слоты. Слоты Proizv и Stoim отражают производительность и стоимость конкретного прибора в объекте Device, и средние значения по системе в объекте Global. Сделать слоты Name и Number в классе Hardware и объекте Device локальными и присвоить им значения. Слот Number в объекте Device, доставшийся по наследству, использовать для хранения номера группы.



 

Таблица слотов

Класс/объект Hardware System   Device Global
Слот Name Name Name Name
Number Number Number Proizv
    Proizv Stoim
    Stoim  

Методические указания. Чтобы создать в классе (объекте) слот, необходимо:

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

· перейти в редактор класса, для чего, не отпуская клавиши, в появившемся меню выбрать Редактирование (Edit);

· выбрать меню Slot/New;

· ввести имя слота.

Для присвоения требуемого значения слоту надо продолжить предыдущую процедуру:

· перейти в редактор слотов, для чего выбрать меню Slot/Edit;

· ввести в поле Value требуемое значение.

Для преобразования слота класса (объекта) в локальный следует выделить этот слот в редакторе класса (объекта) и обратиться к меню Slot/MakeLocal.

 

Разработка иерархии классов и объектов в окне KAL Interpreter.

Необходимо дополнить средствами KAL Interpreter ранее созданную иерархию классов и объектов до следующего вида (рис. 1.11).

При построении использовать функции (команды) MakeClass, MakeInstance, MakeSlot.

Методические указания. Все функции в ЭО KAPPA разделены на группы:

· функции манипулирования элементами знаний (Knowledge),

· математические функции (Math),

· функции для работы со строками (String),

· функции для работы со списками (List),

· логические функции (Logical),

· функции манипулирования файлами (File),

· функции управления или взаимодействия с ОС (Control),

· функции для работы с окнами КАРРА и с объектами интерфейса (Windows),

· определенные пользователем функции (User Functions),

· все функции (All Functions).


Получить доступ к имеющимся функциям можно в любом окне ЭО KAPPA, где доступно использование выражений в KAL-коде. Для этого нажатием правой кнопки мыши в этом окне активизируется всплывающее меню, с помощью которого можно оперативно выбрать из имеющихся необходимую группу функций. С выбором группы функций на экране появляется окно Выбора команды (Select Command), где представлены функции выбранной группы. После щелчка левой кнопкой мыши на любой из них внизу окна появляется формат и список аргументов функции. Так, например, для функции Создать класс (MakeClass) формат имеет вид: MakeClass(@className, @<superName>).Из приведенной записи следует, что аргументами функции является имя создаваемого класса, а также имя класса (суперкласса), в который создаваемый класс должен входить. Последний аргумент является необязательным, о чем свидетельствуют угловые скобки. Символ @ является элементом описания формата и в описании функции отсутствует, например, MakeClass(System1, Hardware). Запись любой функции заканчивается «; ».

 

 

Создание методов для классов и объектов модели

Необходимо создать с использованием функции PostMessage (вывод сообщения на экран) для классов и объектов методы в соответствии с таблицей, где Contr – контроль правильности ввода значения слота Number, SrProizv – вычисление средней производительности по системе, SrStoim – вычисление средней стоимости по системе.

Таблица методов

Класс/объект Hardware System   Global
Метод Contr (контроль правильности ввода) Contr (контроль правильности ввода) SrProizv (средняя производительность)
    SrStoim (средняя стоимость)

 

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

Метод Contr «Контроль правильности ввода». Для создания метода Contr, например, в классе Hardware можно воспользоваться следующей процедурой.

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

2) обратиться к меню Methods/New;

3) присвоить методу имя Contr;

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

x Number

В результате в тексте метода длинная переменная Number может быть заменена на короткую x.

5) в теле метода, которое заключается в фигурные скобки, размещается условный оператор (группа функций управления Control):

{

If( Self:x<=10)

Then PostMessage(«Вы ввели число систем»)

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

};

Напомним, что все переменные, используемые в текстах методов, функций и правил отражают слоты некоторых классов или объектов. В результате их обозначение содержит как имя класса (объекта), так и имя слота, разделенные двоеточием, например, Hardware:Number. В приведенном тексте программы вместо имени класса Hardware использовано служебное слово Self, что позволяет использовать этот текст метода в любом другом классе. Заметим, что функция PostMessage предназначена для вывода на экран дисплея выражений, которые записываются в скобках как ее аргументы через запятую, при этом символьные выражения должны быть заключены в кавычки. Так, например, информация о средней стоимости прибора, представленная переменной Global:Stoim, может быть выведена следующим образом:

PostMessage(“Средняя стоимость прибора по системе =”, Global:Stoim).

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

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

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

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

Для рассматриваемого примера имеем:

1. выбрать Update/Close;

2. в редакторе класса Hardware щелкнуть два раза на слот Number;

3. войти в пункт меню Options;

4. ввести в поле After Change название нашего метода Contr;

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

6. нажать OK и сохранить класс Hardware.

Метод SrProizv «Средняя производительность по системе». При создании методов, вычисляющих, например, среднюю производительность по системе, оказываются полезными функция подсчета числа объектов некоторого класса CountInstance, а также функция управления ForAll, просматривающая объекты некоторого класса и вычисляющая общее для них и единственное выражение, стоящее сразу после квадратных скобок и заканчивающееся точкой с запятой. Если этих выражений несколько, они должны быть заключены в фигурные скобки. Функция ForAll является по существу оператором цикла с параметром, который последовательно пробегает имена всех объектов из просматриваемого класса и указывается в квадратных скобках после служебного слова ForAll. В квадратных скобках, кроме параметра цикла указывается имя просматриваемого класса, отделенное от переменной-параметра вертикальной чертой. Так фрагмент, вычисляющий средний балл для студентов из второй группы будет иметь вид:

{

Global:Proizv1 = 0;

ForAll [ obj|System1 ]

Global:Proizv1 = Global:Proizv1 +

obj:Proizv;

System1:Number = CountInstances( System1 );

Global:Proizv1 = Global:Proizv1 / System1:Number;

PostMessage( "Средняя производительность по системе 1=", Global:Proizv1 );

};

В этом фрагменте параметр цикла обозначен буквами obj.

 



<== предыдущая лекция | следующая лекция ==>
Окно просмотра иерархии выводов (Inference Browser) | Разработка и программирование функциональной модели предметной области


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.217 сек.