Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
M_RIO2.DOC
Скачиваний:
7
Добавлен:
21.03.2015
Размер:
1.01 Mб
Скачать

2. Пример разработки программной системы

2.1. Формулировка задачи

Предлагаемый пример является несколько измененным вариантом задачи из [3]. Требуется выполнить моделирование передвижения шаров при игре в бильярд. Бильярдный стол состоит из поля, ограниченного четырьмя стенками, в которых расположены четыре лузы. По полю двигаются шары. Один из шаров имеет белый цвет, остальные - черный. При столкновении шаров энергия в равных долях перераспределяется между ними. При столкновении шара со стенкой отражение происходит без потери энергии. Во время движения шары теряют энергию из-за трения о стол. При попадании в лузу черный шар остается в ней, теряя всю энергию, на белый шар луза не оказывает влияния. Первоначально шары имеют традиционную расстановку: белый шар в центре, черные - треугольником. Началом моделирования является придание белому шару начальной энергии и произвольного направления движения. Шары могут быть приведены в начальное состояние в любой момент времени.

2.2. Системный анализ

Составление словаря предметной области и идентификация классов и объектов могут быть выполнены в соответствии со следующей формальной процедурой:

  1. Перечислить факты, которые характеризуют предметную область, выделяя их из постановки задачи.

  2. Перечислить все объекты (существительные) и приписать им те факты, в которых они упоминаются.

  3. Разделить факты для каждого объекта на три группы: первая - "атрибуты", вторая - "поведение", третья - “сообщения другим объектам”. Группа “атрибуты” - это перечень абстракций сущности данного объекта. В группу “поведение” добавляются действия, которые можно сформулировать как "сделать что-то" с данным объектом, при этом указывается, какие атрибуты изменяются. При формировании группы "поведение" может возникнуть необходимость пополнения группы "атрибуты". В группу “сообщения другим объектам” включаются те действия, которые описывают взаимодействие данного объекта с другими объектами.

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

  • Бильярдный стол (TTable)

  • Атрибуты: Четыре стенки Четыре лузы Черные шары Белый шар

  • Действия: Начать игру (Start) Выполнить начальную расстановку (Initiate)

  • Стенка (TWall)

  • Атрибуты: Длина (theLength) Угол (theAngle)

  • Луза (THole)

  • Атрибуты: Радиус (theRadius)

  • Шар (TBall)

  • Атрибуты: Направление движения шара (theDirection) Энергия шара (theEnergy) Радиус (theRadius)

  • Действия: Двигать шар (Move) Установить значение энергии (SetEnergy) Установить направление (SetDirection)

  • Сообщения другим объектам: Ударить шар в другой шар (HitOnBall) Ударить шар в стенку (HitOnWall) Попасть в лузу (HitOnHole)

  • Черный шар (TBlackBall)

  • Белый шар (TWhiteBall)

  • Моделируемая действительность (TReality)

  • Атрибуты: Бильярдный стол

  • Действия: Выполнить моделирование (Run)

К полученному словарю предметной области следует сделать следующие замечания. Все шары имеют одноименные характеристики поведения, поэтому классы TWhiteBall и TBlackBall являются подклассами одного класса TBall. Строго говоря, моделируемый бильярдный стол не является замкнутой системой, он входит в состав более широкого понятия - моделируемая действительность. Это проявляется в том, что по условиям задачи на моделируемый стол оказывается воздействие в форме сообщений Initiate и Start от внешнего источника. Поэтому вводится понятие "моделируемая действительность" как объект theReality класса TReality. Об этом объекте известно лишь то, что он генерирует внешние события и воздействует на моделируемый бильярдный стол в процессе моделирования (Run).

Понятие "начальная энергия шара" является некоторой физической величиной, которую следовало бы предварительной определить из натурного эксперимента, но, упрощая задачу, примем ее как константу cMaxEnergy = 200.0 условных единиц. При изучении движения шара следовало бы рассмотреть физику трения качения и привести соответствующие формулы. Учитывая учебный характер примера, примем грубое допущение, что за единичный интервал времени энергия шара уменьшается на cDeltaEnergy=0.05 условных единиц не зависимо от скорости. Если в некоторый момент времени энергия оказывается меньше порогового значения cThresholdEnergy = 0.5, то шар далее двигаться не может. В реальном мире скорость движения шара зависит от его кинетической энергии, но в рассматриваемом примере будем считать, что шар движется с постоянной скоростью cVelocity = 2.0 условных единиц в единицу времени, если его энергия превышает cThresholdEnergy.

Будем определять направление движения как угол между некоторым базовым направлением и прямой, по которой движется шар. При столкновении шара, имеющего направление Alpha, со стенкой, имеющей угол theAngle, угол отражения Beta определяется формулой Beta=2*TheAngle-Alpha. Это означает, что необходимым атрибутом класса TWall является угол стенки theAngle к базовому направлению.

Для столкновения двух шаров примем приближенную модель, в которой форма шаров, их размеры и другие особенности взаимодействия физических тел не учитываются. Будем считать, что каждый из сталкивающихся шаров изменяет направление таким образом, как будто он столкнулся со стенкой, расположенной посередине между направлениями их движения, при этом суммарная энергия шаров перераспределяется между ними поровну.

Абстракция поведения "выполнить начальную расстановку" предполагает размещение шаров на поле по следующему алгоритму. Белый шар располагается недалеко от центра поля, а остальные шары располагаются рядами, образуя треугольник. Абстракция поведения "начать моделирование" означает, что белому шару сообщаются начальная энергия и случайное направление. Из этого взаимодействия следует, что для класса TBall определены операции: "установить значение энергии" (SetEnergy) и "установить направление" (SetDirection).

Для решаемой задачи важным является отображение формы моделируемых объектов, при этом соотношение размеров следовало бы получить экспериментальным путем. Примем следующие константы в условных единицах измерения: радиус шаров cBallRadius = 5, диаметр лузы cHoleRadius = 6, длина длинных стенок cLongWallLength = 290, длина коротких стенок cShortWallLength = 190, стенки расположены под прямым углом друг к другу.

Необходимость графического отображения влечет расширение словаря предметной области. В класс TBall вводим атрибут "радиус" (theRadius), в класс THole - атрибут "радиус" (theRadius), в класс TWall - “длина” (theLength).

Результатом системного анализа является техническое задание на проектирование, составленное с использованием словаря предметной области и сопровождаемое диаграммой классов (рис. 11), диаграммой объектов (рис. 12), обобщенными алгоритмами абстракций поведения. Техническое задание содержит следующие требования.

Функции системы (здесь приводятся кратко, чтобы не повторять вышеизложенные рассуждения, но в курсовой работе они должны быть приведены полностью):

- управление моделированием осуществляется при помощи команд, подаваемых с клавиатуры: начать моделирование (клавиша “S”), выполнить начальную расстановку (клавиша “I”), завершить работу программы (клавиша “Q”);

- отображение на экране дисплея перемещения бильярдных шаров, результатов их столкновения между собой, со стенками и лузами.

Эксплуатационные требования:

- технические средства - ПЭВМ IBM PC;

- операционная система - MSDOS;

- процесс моделирования управляется одним оператором.

Ограничения на процесс разработки:

- сроки выполнения проекта определены в разделе “порядок выполнения работы” данных методических указаний;

- порядок сдачи системы определен в разделе “порядок выполнения работы” данных методических указаний.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]