Е.И. Большакова - Задания практикума по объектно-ориентированному программированию (1162571), страница 12
Текст из файла (страница 12)
В частности, чем больше население городаи насыщеннее его транспортное сообщение, тем выше процент заболевающих внем при прочих равных условиях; а чем больше сделано профилактическихпрививок, тем меньше заболевающих.Визуализация процесса распространения вируса должна предусматриватьизображение городов страны в виде кругов (размер круга зависит отчисленности населения города), показ текущей заболеваемости (на каждом кругеопределенным цветом высвечивается часть, пропорциональная числузаболевшего населения), а также особую расцветку городов, в которых началасьэпидемия. На каждом шаге моделирования должна быть также доступна болееподробная информация о заболеваемости в каждом городе (число привитых,заболевших, здоровых людей и др.).Графические редакторыСпециализированный графический редакторГрафический экранный редактор позволяет оперировать плоскимифигурами N типов (1≤ N ≤ 5), точнее, их изображениями.
Назначение редактора– формирование нужной пользователю конфигурации фигур (изображений) наоснове допустимых операций с ними.Пользователь экранного редактора должен иметь возможность:• добавлять и удалять фигуры разных типов;• изменять местоположение фигур и поворачивать их;• группировать несколько фигур (изображений) в более крупную единицу(изображение) – с тем, чтобы затем оперировать всей группой (перемещать,поворачивать, удалять ее);• определять(вычислять)некоторыехарактеристикиполучившейсяконфигурации (зависящие от специализации редактора);• запоминать получившуюся конфигурацию (изображение) на дисковом файлеи считывать ранее сохраненные конфигурации из файла в рабочее окно;Требуется, чтобы указанные действия пользователь мог производить впроизвольном, удобном для него порядке.Визуализация формируемой пользователем конфигурации должнапредусматривать показ фигур и их групп, а при необходимости – увеличениеразмераизображенийискроллинг.Вычисленныехарактеристикисформированной конфигурации (изображения) должны выдаваться по запросупользователя.
Возможны следующие специализации графического редактора: Построение различных электрических цепей (электрических схем)постоянного или переменного тока из составных элементов – лампочек,замыкающих ключей, резисторов, конденсаторов, источников тока и др.Редактор позволяет задавать внутренние характеристики указанныхэлементов (например, емкость конденсатора, сопротивление лампочки) ивычислять конфигурационные характеристики цепи (к примеру, числоразветвлений тока).41 Расстановка на заданной схеме дома, состоящего из нескольких комнат,предметов мебели нескольких видов (стулья, столы и проч.).
Редактор позапросу пользователя вычисляет и показывает расстояния между предметамимебели и между предметами и стенками комнат. Можно предусмотретьпредварительное задание пользователем схемы дома (например, мышьюуказываются углы комнат, которые потом соединяются, отмечаются такжедвери и окна).Модельная система укладки плиткиРассматривается задача укладки плитки, имеющей разный цвет игеометрическую форму: квадрат, правильный треугольник, шестиугольник,восьмиугольника.
Основная функция создаваемой системы – помощьпользователю в создании на поле (экране компьютера) нужного разноцветногоорнамента (узора) плитки, при ее плотной укладке.Пользователь системы должен иметь возможность:• добавлять в нужное место поля плитку указанного цвета и геометрическойформы; изменять местоположение или удалять уже уложенную плитку;• группировать несколько плиток – с тем, чтобы затем оперировать целикомполученной группой (перемещать, поворачивать, удалять, изменять цвет);• выделив некоторую плитку или группу плиток, размножить ее на поле (приэтом система циклически повторяет на поле выделенную плитку/группу);• запоминать получившийся орнамент на дисковом файле и считывать ранеесохраненный орнамент из файла в рабочее окно;• открыть несколько окон с разными орнаментами и создавать новый орнаментпутем копирования фрагментов других.Требуется, чтобы указанные действия пользователь мог производить впроизвольном, удобном для него порядке.
При необходимости следуетпредусмотреть скроллинг отображаемого орнамента.3. Методические указанияМоделирование процессов и событий во времениПри моделировании и визуализации процессов (событий), изменяющихся(происходящих) во времени обычно применяется метод пошаговой фиксации(пересчета) всех характеристик рассматриваемого процесса или события. Приэтом выбирается шаг – отрезок времени, существенный для этого процесса иизмеряемый в тех или иных единицах (например, в часах или минутах), черезкоторый пересчитываются изменяемые характеристики процесса и производятсянеобходимые изменения в его изображении на экране компьютера (в ряде задачцелесообразно выполнять полную перерисовку изображения).Необходимое пошаговое изменение времени реализует программныйцикл, шаг которого соответствует выбранному отрезку времени моделируемогопроцесса.
В простейшем случае шаг цикла не связан непосредственно среальным временем. Как следствие, визуализация изменений процесса (событий)42при методе пошаговой фиксации может быть слишком быстрой или медленнойдля пользователя системы (зависит от производительности компьютера).Поэтому более гибкое решение – выполнять шаг пересчета характеристикмоделируемого процесса по системному таймеру, увязав тем самым отрезокреального времени (измеряемый в мсек) с отрезком времени этогопроцесса/события. В таком случае можно опытным путем подобрать шаг,приемлемый для визуализации процесса, или даже включить этот шаг впараметры моделируемого процесса, позволив тем самым пользователюустанавливать удобный для него темп визуализации процесса.Проектирование пользовательского интерфейсаПользовательский интерфейс обычно разрабатывается средствамивизуального программирования, предоставляемыми большинством современныхинтегрированных сред разработки (IDE).
Важно, что перед непосредственнымпрограммированием интерфейса на базе этих средств необходимо выполнитьобщее проектирование пользовательского интерфейса, в ходе которогоопределяется количество диалоговых окон, их назначение и взаимодействие. Длякаждого окна подбираются входящие в его состав элементы управления (кнопки,текстовые поля, списки и др.). По итогам проектирования составляется эскизпользовательского интерфейса.В большинстве вариантов задания достаточно двух диалоговых окон: длязадания параметров моделирования и для визуализации моделируемогопроцесса.
Если число управляющих элементов каждого окна не очень велико,эти окна можно объединить в одно, сгруппировав логически связанныеуправляющие элементы в отдельные функциональные блоки, а также сделавэлементы первого окна неактивными после задания параметров моделирования.В ряде вариантов целесообразно завести отдельное диалоговое окно для выводаитоговой статистики.Главное требование к пользовательскому интерфейсу – он должен бытьпонятен пользователю, не знакомому с деталями реализации системы иособенностями моделируемого процесса.
Поэтому важны как названияэлементов управления (кнопок, полей, списков), так и их группировка ирасположение внутри соответствующего окна. Следует предусмотреть такжевозможность выхода из системы в любой момент ее работы.Объектный анализ и проектирование системыОбъектный анализ – начальная задача объектно-ориентированногопроектирования, в ходе которой происходит выявление (идентификация)объектов и классов программной системы.Объект – сущность, имеющая четко определенное функциональноеназначение в рассматриваемой задаче, например: “небесное тело”, “орбита” (вмодели Солнечной системы). Для выявления объектов полезно составить такназываемый словарь проблемной области (задачи), в который входят всеосновные понятия (ключевые абстракции), как процедурные (глаголы), так инепроцедурные (существительные), например: “планета”, “вращаться” и т.п.Объект характеризуется состоянием и поведением.
Состояние объектаопределяется перечнем (обычно статическим) всех атрибутов (свойств) данного43объекта и текущими (динамическими) значениями каждого из этих свойств.Поведение объекта характеризуется выполняемыми над ним операциями и егосостоянием (некоторые операции имеют побочное действие – они изменяютсостояние). Например, для объекта “небесное тело” атрибутами являются егокоординаты, размер, масса, а операциями – “изобразить”, “переместить” и др.Структура (атрибуты) и операции схожих объектов определяет общий дляних класс (тип).
Объекты – экземпляры соответствующих классов. Обычнооперации объявляются как методы класса, к объектам которого они относятся.Поскольку в процессе работы одни объекты связаны с другими, эти связимоделируются как отношения между соответствующими классами. Сначалафиксируются общие семантические связи (зависимости) классов – ассоциации. Входе дальнейшего проектирования эти связи конкретизируются. Будемразличать следующие виды отношений между двумя классами:• наследование: отношение обобщения, или общего и частного: например,“небесное тело” и “планета”; в общем случае подклассом наследуетсяструктура и поведение более общего класса (суперкласса), в то же времяподкласс обладает дополнительными/уточненными атрибутами и операциями.• агрегация: отношение включения, или целого и части между экземплярамиклассов: например: “Солнечная система” и “планета”; обычно объект-частьвключается в состояние объекта-целого.• использование: связь между экземплярами классов, при которой одинпользуется услугами другого (отношение клиент-сервер): например,использование операции.Все перечисленные связи – направленные (в отличие от ассоциации).Составление диаграмм и спецификацийВыявленные связи классов необходимо зафиксировать в диаграммеклассов.
Класс обычно обозначается прямоугольником, в котором записываетсяего имя (часто записываются также его атрибуты и операции). Связи классовизображаются соединяющими их линиями. Наследование графическиизображается в виде стрелки с полым треугольником, идущей от подкласса ксуперклассу, агрегация – в виде незакрашенного ромба у класса-агрегата, аиспользование – в виде пунктирной стрелки, идущей от клиента к серверу.На диаграмме полезно указывать мощность (множественность) связей,определяющая, сколько экземпляров одного класса могут быть связаны с однимэкземпляром другого класса. На практике важно различать три случая: один кодному, один ко многим (1 : N) и многие ко многим (M : N).Нередко при проектировании классов необходимо выбирать междуотношениями наследования, агрегации и использования, как при выявлениисвязи между “планетой” и “спутником” в модели Солнечной системы.Отношения между классами А и В можно считать наследованием, еслиобъект класса А может одновременно рассматриваться и как объект В, в иномслучае лучше ввести другой вид связи.При выявлении агрегации классов важно понять, существуют ли ихэкземпляры по отдельности и независимо друг от друга.
Композиция – это44разновидность агрегации [4], при которой часть не существует без целого иобъект-агрегат несет полную ответственность за создание и уничтожение своихчастей (графически композиция изображается в виде закрашенного ромба укласса-агрегата). Распознать этот вид агрегации важно для правильногоопределения конструкторов и деструкторов классов, входящих в агрегацию.В общем случае объект-целое и объект-часть существуют независимо другот друга, и их можно создавать/уничтожать по отдельности.