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

Характеристика исходного кода объектно-ориентированного программирования на языке 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


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.