2.2 Функциональное назначение

Программа может применяться для создания графических изображений

Для реализации этой задачи необходимо создать список, в который будут заноситься объекты различных пользовательских типов (например, линии). Список должен обладать всеми необходимыми методами, используемыми для обработки находящихся в нем данных: добавление, удаление, поиск, изменение и выборка элементов.

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

2.3 Описание логической структуры

Курсовая работа представляет собой программу, написанную на C++ Builder 6. Для упрощения программного кода используется иерархия классов.

Абстрактный класс Spisok содержит основные свойства и методы, которые необходимы всем его наследникам, то есть, общие для всех списков данные: структура List, указатели *top и *p, чисто-виртуальные функции:

-          add(Data value, AnsiString name). Добавление элемента с именем «Name», содержащего информацию «Data». Data – это шаблонный тип данных, который может принять значение любого переданного в класс типа. Это позволяет использовать один и тот же класс списка для хранения данных разных типов. Функция не возвращает значений.

-          remove(int index). Удаляет элемент с порядковым номером «Index» из списка. Для этого создается дополнительный указатель на удаляемый элемент, а ссылка с предыдущего элемента переносится на следующий, после чего, отделенный от списка элемент удаляется из памяти стандартной процедурой delete(*list). Функция не возвращает значений.

-          change(int index, Data value). Изменяет значение элемента с порядковым номером «Index» на значение «Data».

-          int count(). Возвращает число элементов в списке. Подсчет производится с помощью цикла с предусловием до тех пор, пока не будет достигнут конец списка. На каждом шаге цикла происходит инкремент счетчика.

-          Data getvalue(int index). Возвращает информационное поле элемента с порядковым номером «Index». Происходит обход списка до тех пор, пока не будет достигнут порядковый номер (цикл с параметром). После этого возвращается информационное поле.

-          AnsiString getname(int index). Возвращает имя элемента с порядковым номером «Index». Работает аналогично предыдущей функции.

-          int search (AnsiString name). Возвращает порядковый номер первого найденного элемента с именем «Name».

Класс Spisok является абстрактным, так как он содержит выше указанные чисто-виртуальные функции.

Класс Stack – наследник класса Spisok. В нем переопределяются все чисто-виртуальные функции предка, им присваивается описанное выше назначение.

Класс Queue – очередь - наследник класса Spisok. Этот класс может использовать все функции предка применительно к своим свойствам, но очередь все же отличается от стека своим созданием и добавлением элементов, поэтому функция добавления элементов в этом классе переопределяется еще раз, уже для очереди.

Класс TLine – линия. Это основной графический примитив программы. Остальные объекты строятся из линий. Линия передается в качестве информационного поля в классы списков. Линия имеет несколько свойств:

-          p1, p2 – точки, каждая из которых имеет 2 координаты: x и y. Это конечные точки линии (отрезка). Точка описывается отдельной структурой point.

-          Color – цвет линии. Используется стандартный тип C++ Builder – TColor.

-          Secondary – логическая переменная, показывающая, является ли данная линия вспомогательной для построения объекта, либо она основная. Для более наглядного представления способа построения объектов в программе используются вспомогательные линии, которые при желании пользователь может отключать.

Методы класса TLine:

-          setline(point p1,point p2,long int col,bool sec). Устанавливает значения свойств линии в соответствии с переданными параметрами.

-          point cut(float k). Возвращает точку на линии, которая находится на расстоянии, равном k*<длина линии> от ее первого конца.

Класс BCurve – Кривая Безье. Среди свойств объекта: имя, цвет основных и вспомогательных линий, 2 опорные линии и коэффициент гладкости k (чем больше коэффициент, тем больше линия похожа на ломаную. Максимум k=0.99, минимум – 0.01. Оптимальное значение k=0.25). Класс имеет 2 функции:

-          queue <Tline> Create(float,Tline,Tline,TColor,TColor,bool,AnsiString). Возвращает список линий, принадлежащих созданной по переданным параметрам кривой Безье.

-          queue <Tline> Load().Возвращает список линий, принадлежащих созданной по заранее установленным параметрам кривой Безье.

Класс TRectangle – Прямоугольник. Создает список из 4-х линий по переданным параметрам с помощью функции: queue <Tline> Create(int x1,int y1,int x2,int y2,TColor col).



Информация о работе «Работа со списками»
Раздел: Информатика, программирование
Количество знаков с пробелами: 32611
Количество таблиц: 0
Количество изображений: 1

Похожие работы

Скачать
12536
4
3

... Такая реализация встречается не так уж редко. Просто она часто скрывается за разными названиями - индексные массивы, массивы соответствия и т.п. Несмотря на разницу в названиях, используется один и тот же алгоритм. – прим.ред. Реализация связанного списка на базе массивов Рассмотрим этот способ на примере реализации линейного односвязного списка. Элементы такого списка линейно упорядочены ...

Скачать
14587
0
1

... Save List. 6. Erase List. 7. Open File. 8. Find Element. 9. Sort List. 0. Exit. Your choice : 2 Input kol-vo of elements: Программа просит ввести количество элементов которое мы хотим добавит к нашему списку. Вводим 1 (для примера): Input digit: 2 Input digit: 3 Input digit: 4 Main Menu: 1. Make New List. 2. Add Element. 3. Print List. 4. Delete Element. 5. Save List. 6. Erase List. ...

Скачать
6031
0
1

... сортировку и более чем по трем столбцам. В этой ситуации список сортируется последовательно, начиная с наименее важного поля. 6)  Как выполнить фильтрацию (выборку) данных в электронной таблице? Какие существуют варианты фильтрации? Для фильтрации данных в MS Excel используются команды «Автофильтр» и «Расширенный фильтр». Для выполнения фильтрации необходимо: -  активизировать любую ячейку с ...

Скачать
53523
11
13

... не даст нужного результата, не стоит отчаиваться. На случай, если вам вновь понадобятся удаленные ранее файлы, система Windows XP предприняла некоторые меры. Файлы, которые вы удаляете, перемещаются в специальную папку, называемую Корзина (Recycle Bin). Внешний вид окна проводника при работе с корзиной почти не отличается от окна этой программы при работе с любой другой папкой вашего компьютера ( ...

0 комментариев


Наверх