Міністерство
освіти і науки України
Сумський державний університет
Машинобудівний коледж
|
“Погоджено” Глава циклової комісії спеціальності 5.05010101 _______________________ “____”_________________ |
|
“Затверджую” _______________________ “____”_________________
|
КУРСОВА РОБОТА
З предмету «Об’єктно - орієнтована технологія програмування»
СПЕЦІАЛЬНІСТЬ 5.05010101
“Обслуговування програмних систем і комплексів”
ПОЯСНЮВАЛЬНА ЗАПИСКА
Тема:_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
|
Студент Група Керівник проекту |
________________ ________________ ________________
|
___________________
___________________
|
2013
Міністерство освіти і науки України
Сумський державний університет
Машинобудівний коледж
Спеціальність 5.05010101 “ Обслуговування програмних систем і комплексів ”
______________________________________________________________________
(прізвище, ім’я, по батькові)
Тема роботи: __________________________________________________________
________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
Практичне завдання: ___________________________________________________
______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
Дата видачі завдання “____”______________2013 р.
Дата закінчення роботи “____”______________2013 р.
Керівник _____________________ _______________________
(підпис) (прізвище, ім’я, по батькові)
Завдання розглянуто на засіданні циклової комісії спеціальності 5.05010101
Протокол №________ від “____”____________2013 р.
Голова циклової комісії ___________________ _______________________
(підпис) (прізвище, ім’я, по батькові)
Зміст
1 Постановка задачі………………………………………………………………….…..2
2 Алгоритм розробки проекту…………………………………………………………..3
3 Практична реалізація……………………………………….……………………...…..4
3.1Опис функцій користувача……………...……………...………………….…...…4
3.2. Опис файлів та їх призначення………………………………………….………5
4 Інструкція для роботи з програмою………….………………………………..……..6
5 Основні теоретичні відомості..………………….……………………………..……..7
Висновок…..……………………………………………..………...………………8
Література………………………………………………………………….…….....……9
Додаток А.Лістинг модуля massiv……………………………………..…………...….10
Дані два списка L1 і L2 пар дійсних чисел. Написати підпрограму, яка повертає в новий список L, який містить в собі:
а) пари списка L1, перша координата, яких зустрічається як друга координата у парі списка L2,
б) пари (х, у) списка L1, які зустрічаються у вигляді (у, х) в списку L2,
в) пари (х,у), де х < у списку L1.
Створити форму (Form1).
2 Заповнити форму (Form1) елементами вводу-виводу данних (Edit, Label).
3 Додати до форми елементи (Button) для виконання завдання чи виходу із програми.
Процедури і функції користувача Form1:
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)-виконання дії;
void __fastcall TForm1::SpeedButton2Click(TObject *Sender) - закриття форми;
void __fastcall TForm1::SpeedButton3Click(TObject *Sender) –очистити;
void __fastcall Edit1Change(TObject *Sender)-введення ромірності массиву;
void __fastcall TForm1::FormCreate(TObject *Sender)- створення форми;
void __fastcall Edit1KeyPress(TObject *Sender, char &Key)-заборона вводу літер;
void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)-можливість перенесення вікна порграми.
massiv.h–файл опису полів та методів основної програми.
Pari_chise.exe – виконуваний файл проекту. Він є автономним виконуваним файлом, для якого більше нічого не треба.
massiv.cpp – текстовий файл модуля, який відповідає формі Form1. Використовується для зберігання коду.
Для початку роботи програми необхідно запустити файл Pari_chisel.exe. Після чого з’явиться вікно програми (мал.1):
Потрібно ввести розмірність масиву.
Оберіть потрібну Вам дію.
Натисніть клавішу «Виконати дію», після чого Ви отримаєте результат, який можна побачити у віконці праворуч.
-
Рис.1 Вікно програми

В об'єктно-орієнтованому програмуванні, клас — це спеціальна конструкція об'єктно-орієнованої мови програмування, що використовується для групування пов'язаних змінних та функцій. При цьому згідно з термінологією ООП глобальні змінні класу (члени-змінні) називаються полями даних (також властивостями або атрибутами), а члени-функції називають методами класу. Створений та ініціалізований екземпляр класу називають об'єктом класу. На основі одного класу, може бути створено безліч об'єктів, які відрізнятимуться один від одного своїм станом (значеннями полів).
Клас можна порівнювати з формою для випічки печива — форма одна, а печива можна випекти безліч. Печиво — це конкретні об'єкти, екземпляри класу печиво, яке може бути з різною начинкою.Поля дозволяють вмістити дані про певний реальний об'єкт, а методи здійснювати обробку цих даних. Наприклад, можна створити загальний клас Людина з полями Ім'я та Прізвище, рік народження, професія, зарплата. При створенні ж на основі класу конкретного екземпляр дані поля заповнюються конкретними даними про певну людину. Обробкою цих даних може займатися відповідні методи. Наприклад, можна створити метод для обчислення віку людини і т.п.
На основі класів можна створювати підкласи, які успадковують властивості та поведінку батьківських класів. Можна створити цілу ієрархію класів. Різні мови дещо по
різному реалізовують механізм успадкування. Існує множинне та одинарне успадкування. Множинне — це, коли підклас створюється на основі кількох безпосередніх батьків. Одинарне успадкування — це коли клас може мати одного безпосереднього батька.
Через методи реалізується поведінка об'єктів. Практично вся робота з об'єктами відбувається через методи. Вони можуть змінювати стан об'єкта або ж просто надавати доступ до даних інкапсульованих в об'єкті. Існує кілька видів методів. До методів та полів даних можна надавати різні права доступу, від яких залежатиме доступу до них з різних частин програмного коду. Права доступу та вид методів задаються модифікаторами при описі методів. Метод, який проводить створення та початкову ініціалізацію екземпляра класу називають конструктором класу. Метод, який проводить знищення об'єкта, називають деструктором класу.
Під час виконання курсового проекту я створив програму, яка порівнює два масива и виводить елементи відповідно до завдання. При розробці цього проекту я використав знання здобуті на лекціях та практичних заняттях з дисципліни «Об’єктно - орієнтована технологія програмування» та при роботі з середовищем програмування і компілятором «Borland С++ 6».
1
«Программирование в C++
Builder 6» А. Я. Архангельский.
«Бином-Пресс» . Год: 2003.
308с
2 «C++Builder 6. Справочное пособие. Книга 2. Классы и компоненты».А. Я. Архангельский. Издательство: «Бином-Пресс». 2002. 108с.
3 http://uk.wikipedia.org/
4 http://www.google.ru
5 www.yandex.ru/
Лістинг модуля massiv
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "massiv.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
int n = 5,i,j; double *ax,*ay,*bx,*by;
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
int ind = RadioGroup1->ItemIndex, counter=0;
for(i=0;i<n;i++) {
ax[i]=StrToFloat(StringGrid1->Cells[0][i]);
ay[i]=StrToFloat(StringGrid1->Cells[1][i]);
bx[i]=StrToFloat(StringGrid2->Cells[0][i]);
by[i]=StrToFloat(StringGrid2->Cells[1][i]);
StringGrid3->Cells[0][i]="";StringGrid3->Cells[1][i]="";}
switch(ind) {
case 0: for(j=0;j<n;j++)
for (i=0;i<n;i++){
if (ax[i]==by[j]) counter++;
}
if (counter==0)ShowMessage("Вірних пар не знайдено");
else {
StringGrid3->RowCount=counter;
counter=0;
for(j=0;j<n;j++)
for (i=0;i<n;i++){
if (ax[i]==by[j]) {StringGrid3->Cells[0][counter]=FloatToStr(ax[i]);
StringGrid3->Cells[1][counter]=FloatToStr(ay[i]);
counter++;
} } }
counter=0;
break;
case 1:for(j=0;j<n;j++)
for (i=0;i<n;i++){
if (ax[i]==by[j] && ay[i]==bx[j]) counter++;
}
if (counter==0)ShowMessage("Вірних пар не знайдено");
else {
StringGrid3->RowCount=counter;
counter=0;
for(j=0;j<n;j++)
for (i=0;i<n;i++){
if (ax[i]==by[j] && ay[i]==bx[j]) {StringGrid3->Cells[0][counter]=FloatToStr(ax[i]);
StringGrid3->Cells[1][counter]=FloatToStr(ay[i]);
counter++;
} } }
counter=0; break;
case 2:
for (i=0;i<n;i++){
if (ax[i]<ay[i]) counter++;
} if (counter==0)ShowMessage("Вірних пар не знайдено");
else {
StringGrid3->RowCount=counter;
counter=0;
for
(i=0;i<n;i++){
if (ax[i]<ay[i]) {StringGrid3->Cells[0][counter]=FloatToStr(ax[i]);
StringGrid3->Cells[1][counter]=FloatToStr(ay[i]);
counter++;
} } }
counter=0; break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text=IntToStr(n);
StringGrid1->RowCount=n;
StringGrid2->RowCount=n;
ax = new double[n]; ay = new double[n];bx = new double[n];by = new double[n];
randomize;
for (i=0;i<n;i++) {
StringGrid1->Cells[0][i]=FloatToStr(random(8)-3+i*(1./4));
StringGrid1->Cells[1][i]=FloatToStr(random(8)-3+i*(1./4));
StringGrid2->Cells[0][i]=FloatToStr(random(8)-3+i*(1./4));
StringGrid2->Cells[1][i]=FloatToStr(random(8)-3+i*(1./4));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
n=StrToInt(Edit1->Text);
if (Edit1->Text.Length()==0) n=1;
FormCreate(this);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (IsCharAlpha(Key) || Key=='-' || Key==',' || Key=='.') Key=0;
if (Edit1->Text.Length()==1 && Key==VK_BACK) Edit1->Text="1";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
delete[]ax; delete[]ay;delete[]bx;delete[]by;
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
ShowMessage("Всі поля були очищені або приведені в стан мінімального значення");
for(i=0;i<n;i++) {StringGrid3->Cells[0][i]="";StringGrid3->Cells[1][i]="";}
Edit1->Text="1";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
long SC_DRAGMOVE = 0xF012;
if(Button == mbLeft)
{
ReleaseCapture();
SendMessage(Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0);
}
}
//---------------------------------------------------------------------------