Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Колодей В.А..docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
121.16 Кб
Скачать

Министерство образования республики беларусь

учреждение образования

«Белорусский Государственный Университет Транспорта»

Кафедра «Микропроцессорная техника и информационно-управляющие системы»

Контрольная работа

по дисциплине

«Программно-математическое обеспечение информационно-управляющих систем»

на тему

«Разработка объектно-ориентированного программного обеспечения для работы с графическими объектами»

Выполнил: Проверил:

студент группы АТ-42 ассистент

Колодей В.А. Жидкова Е.А

Гомель 2013

Задание

Содержание

Введение 3

Описание разработанной программы 4

Результаты работы программы 9

Листинг программы 11

Заключение 15

Список литературы 16

Введение

В данной контрольной работе разрабатывается объектно-ориентированная программа для работы с графическими объектами. Программа использует свойство полиморфизма.

Слово «полиморфизм» (образованное из слов «поли» - много, «морф» - преобразование и «изм» - процесс) описывает возможность языка программирования обращаться со множеством производных классов так, как если бы они были все одного класса – полиморфизм позволяет единообразно обрабатывать данные разных типов. Полиморфизм предполагает использование единого имени (идентификатора) при обращении к объектам нескольких разных классов, при условии, что все они являются подклассами (наследниками) одного общего надкласса (базового класса). В языке программирования С++ полиморфизм реализуется с помощью виртуальных функций. Виртуальная функция определяется в базовом классе словом virtual. Такая виртуальная функция затем замещается в каждом производном классе. В отличие от обычного замещения функции в классе потомка, при обращении к виртуальной функции не нужно хранить указатель на производный объект, достаточно иметь указатель на объект базового класса.

Описание разработанной программы

Создание программы включает в себя следующие этапы:

Рис.1

В итоге мы имеем следующие файлы:

Таблица 1

Файл

Описание файла

Project1.bpr

Файл проекта

Project1.cpp

Исходный код

Unit1.cpp

Unit1.h

Заголовочный файл

Unit1.dfm

Файл установок формы, окна проекта

Project1.res

Файл ресурсов, автоматически генерируемый средой программирования, содержит иконку программы.

Project1.obj

Объектный код

Unit1.obj

Project1.tds

Файл, предназначенный для отладки программы.

Project1.exe

Исполняемый код

strelka.bmp

Графический файл, рисунок стрелки

luna.bmp

Графический файл, рисунок месяца

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

Таблица 2

Р ис.2

Объект

Принадлежность классу

Описание

Form1

TForm

Форма

Panel1

TPanel

Панель с кнопками

Button1

TButton

Кнопка 1 – Смайл

Button2

TButton

Кнопка 2 – Стрелка

Button3

TButton

Кнопка 3 - Месяц

Panel2

TPanel

Панель с объектами Image

Image1

TImage

Поле для рисования и передвижения картинок

Image2

TImage

Поле для вставки картинки из файла

На рисунке 2 показано дерево объектов программы. Panel1 и Panel2 являются компонентами Form. Button1, Button2, Button3 являются компонентами Panel1. Image1, Image2 являются компонентами Panel2.

В разрабатываемой программе используются свойства и методы, перечисленные в таблицах 3 и 4.

Таблица 3

Объект

Свойства

Описание

Присвоенные значения

Form

BorderIcons

Определяет, какие из кнопок системного меню окна нужно отображать.

[biSystemMenu,biMinimize] – свернуть и закрыть

Caption

Заголовок окна формы

Работа с графическими объектами

Panel1

Align

Определяет способ выравнивания панели на форме

alRight - справа

Caption

Заголовок панели

Без заголовка

Panel2

Align

Определяет способ выравнивания панели на форме

alClient- занять всё оставшееся от Panel1 место

Caption

Заголовок панели

Без заголовка

Button1

Caption

Надпись на кнопке

Смайл

Button2

Caption

Надпись на кнопке

Стрелка

Button3

Caption

Надпись на кнопке

Месяц

Image1

Align

Определяет способ выравнивания поля для рисования на панели 1

alClient- поле для рисования занимает всю Panel1

Image2

Left

Позиция слева от края окна – координата Х

При движении мышью рисунков Стрелка и Месяц изменяются координаты

Top

Позиция справа от края окна – координата Y

При движении мышью рисунков Стрелка и Месяц изменяются координаты

Visible

Визуальность, видимость

Если рисуют Смайл, то Image2 невидим: Visible=false

Picture

Рисунок

С помощью этого свойства объекту Image можно назначить графический файл

Таблица 4

Объект

Методы, отрабатывающие по событиям

Описание

Выполняемая функция

Button1

Button1Click

Отрабатывает при нажатии на кнопку 1

Запускает функцию очистки поля для рисования от предыдущего рисунка, а затем – функцию рисования картинки Смайла

Button2

Button2Click

Отрабатывает при нажатии на кнопку 2

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

Button3

Button3Click

Отрабатывает при нажатии на кнопку 3

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

Image1

Image1Click

Отрабатывает при нажатии мышью на Image1

Если рисунок двигался, то данный метод его останавливает. Если рисунок стоял, то данный метод запустит движение рисунка. Графический объект перерисуется в том месте, куда указали мышью.

Image1MouseMove

Отрабатывает при движении мышью по полю для рисования Image1

Если предварительно была нажата кнопка мыши (запущено движение), то метод перерисует графический объект с новыми координатами

Кроме стандартных классов используются пользовательские классы TRis, TStrela и TLuna. Класс TRis является базовым по отношению к классам TStrela и TLuna. Производные классы TStrela и TLuna наследуют общую процедуру Clear базоваго класса TRis, которая выполняет очистку поля для рисования от предыдущего рисунка. Кроме того, базовый класс содержит функцию Risuet, которая переопределяется, замещается в наследуемых классах TStrela и TLuna. Так в каждом из классов функция Risuet рисует необходимый каждому классу свой рисунок: в классе TRis функция Risuet рисует смайл, в классе TStrela функция Risuet вставляет из графического файла изображение стрелки в Image2, в классе TLuna функция Risuet вставляет из графического файла изображение месяца в Image2.

Далее воспользуемся полиморфизмом. Функция Risuet базового класса TRis является виртуальной. Она замещена виртуальными функциями Risuet в классах TStrela и TLuna. Для работы с классами создаётся один указатель – ris – указатель на базовый класс. Функции Risuet вызываются через указатель на базовый класс, но проявляют свойство полиморфизма и отрабатывают, рисуют каждый раз необходимую картинку.

Для отображения на экране смайла использовались следующие функции рисования:

Таблица 5

Функция

Описание

Rectangle(x1,y1,x2,y2);

Рисует прямоугольник с острыми углами и заданной диагональю

Ellipse(x1,y1,x2,y2);

Рисует эллипс, вписанный в прямоугольник с заданной диагональю (x1,y1,x2,y2)

Arc(x1,y1,x2,y2,X3,Y3,X4,Y4);

Рисует дугу эллипса, вписанного в прямоугольник с заданной диагональю (x1,y1,x2,y2) и ограниченную радиусами (центр, Х3,Y3), (центр, Х4,Y4)

При рисовании каждая линия проводится заданным цветом карандаша – Pen. При этом карандашу можно задать толщину линии – Width. Каждая замкнутая область заливается заданным цветом кисти – Brush.