Разработка объектно-ориентированного программного обеспечения для работы с графическими объектами
Характеристика исходного кода объектно-ориентированного программирования на языке C++. Преимущества языка С++. Порядок работы с программой. Результат работы объектно-ориентированной программы для работы с графическими объектами. Листинг программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 09.01.2014 |
Размер файла | 61,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
13
Размещено на http://www.allbest.ru/
Министерство образования республики беларусь
учреждение образования
"Белорусский Государственный Университет Транспорта"
Кафедра "Микропроцессорная техника
и информационно-управляющие системы"
Контрольная работа
по дисциплине "Программно-математическое обеспечение
информационно-управляющих систем"
на тему "Разработка объектно-ориентированного программного обеспечения для работы с графическими объектами"
Выполнил:
студент группы ЗАТ-51
Селедцов И.В.
Проверил:
ассистент
Жидкова Е.А
Гомель 2013
Содержание
Введение
1 Описание разработанной программы
2 Результат работы программы
3 Листинг программы
Заключение
Список использованных источников
ВВЕДЕНИЕ
Триумфальное шествие языка С++ началось с появления его компилятора для персональных компьютеров. В противоположность другим языкам высокого уровня, таким как Pascal или Basic, которые разрабатывались в университетах как учебные языки, язык С++ возник из реальных проблем и предназначался для решения конкретных практических задач. Поскольку С++ разрабатывался как встроенное системное средство, то создаваемый им код должен был достаточно просто компилироваться и иметь высокое быстродействие. Таким образом, появился язык, который отличался:
1)небольшим количеством элементов языка;
2) высокой скоростью выполнения написанных на нем программ;
3) поддержкой модульного программирования;
4) хорошей мобильностью наряду с возможностью работы на <нижнем уровне> (с компонентами аппаратной среды).
С развитием вычислительной техники время вычислений становится все дешевле, а затраты на программирование возрастают.
Цель объектно-ориентированного программирования на C++ заключается в получении исходного кода, который характеризуется:
1) простотой и надежностью в использовании;
2) возможностью повторного использования существующего
программного кода;
3) хорошей скоростью выполнения;
4) ясностью и читабельностью.
1 ОПИСАНИЕ РАЗРАБОТАННОЙ ПРОГРАММЫ
Каждой проектируемой в визуальной среде форме соответствует свой программный модуль, состоящий из двух файлов: Unit1.h и программного Unit1.cpp. При разработке программы были использованы следующие компоненты:
1) GroupBox1, который содержит регулярно расположенные радио-кнопки;
2) RadioButton4, RadioButton5, RadioButton6 - зависимые переключатели, служащие для установки взаимоисключающих параметров;
3) Image1 для загрузки объекта из графического файла;
В программе используются следующие объекты:
1) cl_element - сознание элемента "Элемент"; (базовый объект);
2) cl_strel - сознание элемента "Стрелка";
3) cl_znak - создание элемента "Знак "Столовая";
Переменные x_z, y_z являются текущими координатами объектов.
Метод create() отвечает за визуальное отображение объектов.
Для отображения заданных объектов использовалось свойство формы Canvas (представляет собой битовую карту плоскости для рисования на форме. Канва - не самостоятельный объект, она всегда является свойством другого графического объекта), при этом были использованы следующие методы рисования:
1) Polygon(Tpoint *Points, int Point_Size) - рисует ломаную линию, соединяя точки массива Points. параметр Point_Size представляет собой максимальный индекс элемента в массиве (количество элементов минус один). Для получения элемента массива по двум координатам может использоваться оператор Point(int X, int Y).
2) Draw(int X, int Y, TGraphic* Graphic) - полное копирование графики, при этом координаты левого верхнего угла равны соответственно X,Y.
Порядок работы с программой:
На вкладке объекты пользователь выбирает объект, который хочет отобразить на форме, затем нажимает на необходимом месте формы (где необходимо создать объект, при этом происходит отображение объекта с использованием функций рисования либо загрузки из графического файла, а также в левом нижнем углу приложения происходит загрузка оригинального изображения из графического файла для сравнения результатов работы программы).
2 РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ
Рисунок 1 - Внешний вид программы
графический программирование язык C++
3 ЛИСТИНГ ПРОГРАММЫ
Файл Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Menus.hpp>
#include <ExtCtrls.hpp>
#include <Dialogs.hpp>
#include <ExtDlgs.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TGroupBox *GroupBox1;
TRadioButton *RadioButton4;
TRadioButton *RadioButton5;
TRadioButton *RadioButton6;
TOpenPictureDialog *OpenPictureDialog1;
TImage *Image1;
TGroupBox *GroupBox2;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TGroupBox *GroupBox3;
TLabel *Label4;
void __fastcall FormMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Файл Unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
// Объявление класса Элемент
class cl_element
{
public:
int x_z; //абсцисса знака
int y_z; //ордината знака
virtual void create(int x,int y) //создание объекта
{
//Элемент
TPoint ffpoints1[8];
Form1->Canvas->Brush->Color=clBlack;
Form1->Canvas->Pen->Width=1;
ffpoints1[0] = Point(x+48,y+16);
ffpoints1[1] = Point(x+16,y+16);
ffpoints1[2] = Point(x+16,y+48);
ffpoints1[3] = Point(x+48,y+48);
ffpoints1[4] = Point(x+48,y-16);
ffpoints1[5] = Point(x+80,y-16);
ffpoints1[6] = Point(x+80,y+16);
ffpoints1[7] = Point(x+48,y+16);
Form1->Canvas->Polygon(ffpoints1, 8);
Form1->Canvas->Brush->Color=clWhite;
x_z=x; // сохранение в памяти абсциссы объекта
y_z=y; // сохранение в памяти отдинаты объекта
};
};
//Наследование потомком Стрелка
class cl_strel: public cl_element
{
public:
TPicture *Picture;
virtual void create(int x,int y)
{
Form1->Canvas->CopyMode = cmSrcAnd;
Form1->Canvas->Draw(x,y,Picture->Graphic);
x_z=x; // сохранение в памяти абсциссы объекта
y_z=y; // сохранение в памяти ординаты объекта
};
};
//Наследование потомком Знак
class cl_znak: public cl_element
{
public:
TPicture *Picture;
virtual void create(int x,int y)
{
Form1->Canvas->CopyMode = cmSrcAnd;
Form1->Canvas->Draw(x,y,Picture->Graphic);
x_z=x; // сохранение в памяти абсциссы объекта
y_z=y; // сохранение в памяти ординаты объекта
};
};
cl_element Element1; //Объявление объекта Element1 класса cl_element
cl_strel Strel1; //Объявление объекта Strel1 класса cl_strel
cl_znak Znak1; //Объявление объекта Znak1 класса cl_znak
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
//Начальные координаты
Element1.x_z=1000;
Element1.y_z=1000;
Strel1.x_z=1000;
Strel1.y_z=1000;
Strel1.Picture = new TPicture;
Strel1.Picture->LoadFromFile("Strel.BMP");
Znak1.x_z=1000;
Znak1.y_z=1000;
Znak1.Picture = new TPicture;
Znak1.Picture->LoadFromFile("Znak.BMP");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
//изменение положения объекта Элемент
if(RadioButton4->Checked==true)
{
//Элемент
Form1->Canvas->Rectangle(0,0,1000,1000);
Graphics::TBitmap *BrushBmp = new Graphics::TBitmap;
try
{
BrushBmp->LoadFromFile("Element.BMP");
Form1->Image1->Canvas->Brush->Bitmap = BrushBmp;
Form1->Image1->Canvas->FillRect(Rect(0,0,Form1->Image1->Width, Form1->Image1->Height));
}
__finally
{
Form1->Image1->Canvas->Brush->Bitmap = NULL;
delete BrushBmp;
}
Element1.create(X,Y);
Strel1.create(Strel1.x_z,Strel1.y_z);
Znak1.create(Znak1.x_z,Znak1.y_z);
}
//Изменение положения Стрелка
if(RadioButton5->Checked==true)
{
//Стрелка
Form1->Canvas->Rectangle(0,0,1000,1000);
Graphics::TBitmap *BrushBmp = new Graphics::TBitmap;
try
{
BrushBmp->LoadFromFile("Strel.BMP");
Form1->Image1->Canvas->Brush->Bitmap = BrushBmp;
Form1->Image1->Canvas->FillRect(Rect(0,0,Form1->Image1->Width, Form1->Image1->Height));
}
__finally
{
Form1->Image1->Canvas->Brush->Bitmap = NULL;
delete BrushBmp;
}
Strel1.create(X,Y);
Znak1.create(Znak1.x_z,Znak1.y_z);
Element1.create(Element1.x_z,Element1.y_z);
}
//Изменение положения Знак
if(RadioButton6->Checked==true)
{
//Знак
Form1->Canvas->Rectangle(0,0,1000,1000);
Graphics::TBitmap *BrushBmp = new Graphics::TBitmap;
try
{
BrushBmp->LoadFromFile("Znak.BMP");
Form1->Image1->Canvas->Brush->Bitmap = BrushBmp;
Form1->Image1->Canvas->FillRect(Rect(0,0,Form1->Image1->Width, Form1->Image1->Height));
}
__finally
{
Form1->Image1->Canvas->Brush->Bitmap = NULL;
delete BrushBmp;
}
Znak1.create(X,Y);
Strel1.create(Strel1.x_z,Strel1.y_z);
Element1.create(Element1.x_z,Element1.y_z);
}
}
//---------------------------------------------------------------------------
ЗАКЛЮЧЕНИЕ
В результате работы была разработана объектно-ориентированная программа для работы с графическими объектами. Программа создает графические объекты согласно индивидуальному заданию, а также загружает выбранный объект из файла, позволяет производить перемещение по экрану выбранного объекта. Управление работой программы и перемещение объектов выполняется с помощью манипулятора "мышь". Объект "Элемент" является базовым, остальные объекты были получены путем наследования из базового.
Список использованных источников
1. Архангельский А.Я. Программирование в С++ Builder 6. -М.:ЗАО "Издательство БИНОМ"; 2003.
2. Архангельский А.Я. С++ Builder 6. Справочное пособие. Книга 2. Классы и компоненты. - М.: ЗАО "Издательство БИНОМ"; 2002.
3. Лафоре Р. Объектно-ориентированное программирование в С++. Классика Computer Science. 4-е изд. - СПб.: Питер, 2003.
4. Семенюта А.Н. Основы объектно-ориентированного программирования на языке С++. Лабораторный практикум. - Гомель, БелГУТ, 2002.
5. Харлап С.Н. Разработка приложение под Windows в среде С++ Builder. - Гомель, БелГУТ, 2000.
6. Харлап С.Н. Работа с графикой в среде в С++ Builder 6. - Гомель, БелГУТ, 2000.
7. Холингворт Д. Borland C++ Builder 6. Руководство разработчитка. - СПб.: Вильямс, 2004.
Размещено на Allbest.ru
Подобные документы
Изучение базовых понятий объектно-ориентированного программирования. Исследование принципов работы с классами и объектами. Построение системы классов для описания плоских геометрических фигур. Анализ методов создания объектов, перемещения на плоскости.
лабораторная работа [212,0 K], добавлен 10.03.2013Использование объектно-ориентированного программирования - хорошее решение при разработке крупных программных проектов. Объект и класс как основа объектно-ориентированного языка. Понятие объектно-ориентированных языков. Языки и программное окружение.
контрольная работа [60,1 K], добавлен 17.01.2011Понятие объектно-ориентированного программирования, характеристика используемых языков. Практическая разработка средств объектно-ориентированного программирования в задачах защиты информации: программная реализация на языке С++, а также Turbo Pascal.
курсовая работа [275,9 K], добавлен 22.12.2011Исследование принципов объектно-ориентированного программирования на базе языка программирования С++. Разработка программного комплекса для ведения учёта памятников города. Описание процессов сортировки, поиска, формирования статистики по памятникам.
курсовая работа [782,4 K], добавлен 26.05.2014Особенности разработки приложений для операционной системы с помощью императивного, структурированного, объектно-ориентированного языка программирования Delphi. Формальное начало программы. Выделение конца программного блока. Листинг и описание программы.
курсовая работа [1,2 M], добавлен 04.08.2014Использование скриптового языка программирования для разработки web-приложений (сценариев). Изучение основ объектно-ориентированного программирования в языке PHP. Ознакомление со специальными методами для работы с классами. Назначение интерфейсов.
контрольная работа [25,1 K], добавлен 14.03.2015Общая характеристика объектно-ориентированного подхода в программировании, его основные свойства и принципы. Разработка программы для автоматизация деятельности кафе на основе объектно-ориентированного подхода, проектирования и реализации схемы данных.
курсовая работа [1,2 M], добавлен 22.01.2012Особенности реализации главных элементов разрабатываемой программы (цифровые элементы) с помощью объектно-ориентированного подхода. Применение принципа инкапсуляции для защиты данных. Конструирование классов, описание и тестирование программного продукта.
курсовая работа [2,3 M], добавлен 10.05.2015Особенности исследования методик объектно-ориентированного проектирования программ с помощью языка UML по формализации, решению поставленной задачи, технологических приемов разработки объектно-ориентированных программ на языке Си++. Разработка программы.
контрольная работа [188,9 K], добавлен 22.10.2014Характеристика объектно-ориентированного, процедурного, функционального программирования. Выбор языка программирования для создания программного обеспечения для управления справочником "Спортсмены". Алгоритм работы приложения, пользовательский интерфейс.
курсовая работа [1,6 M], добавлен 23.02.2016