Розробка програм мовою С++ з використанням технології об’єктно-орієнтованого програмування

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    178,12 Кб
  • Опубликовано:
    2016-04-01
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Розробка програм мовою С++ з використанням технології об’єктно-орієнтованого програмування

Міністерство освіти і науки України

Вінницький Національний Технічний Університет

Інститут інформаційних технологій і комп’ютерної інженерії

Кафедра обчислювальної техніки









розробка програм мовою с++ з використанням технології об’єктно-орієнтованого програмування

Пояснювальна записка до курсової роботи

з дисципліни «Програмування» за спеціальністю

«Комп’ютерна інженерія»

-23.П.012.01.00.000.П3

Керівник: курсової роботи

к.т.н. доцент каф. ОТ

Ткаченко О.М.

Розробив

студент гр. 1КІ-14б

__________________Куш Я.Ю.

Вінниця ВНТУ 2014 р.

АНОТАЦІЯ

Під час виконання курсової роботи буде виконана розробка програми на мові програмування С++ з використанням об’єктно-орієнтованого програмування. Програма включає в собі роботу з файлами, класами, обробкою числової інформації та роботу з графікою.

В ході роботи було створено програмну оболонку вирішуваної задачі і реалізовано алгоритм для пошуку площ трикутників та виведення їх на дисплей.

 

ВСТУП


Курсова робота - це перша самостійна наукова праця майбутнього програмного інженера. При її виконанні студент поглиблює знання з фундаментальних та професійно-орієнтованих дисциплін, засвоює методику експериментальних досліджень, оволодіває навичками співставлення результатів своїх досліджень із літературними даними, аналізу, узагальнення і літературного оформлення одержаних результатів з теми дослідження, набуває вміння вести науковий пошук, що розвиває в молодого інженера творчий підхід до роботи.

Курсова робота з об'єктно-орієнтованого програмування передбачає знання студентами об’єктно-орієнтованого проектування та програмування і є завершальним етапом вивчення у рамках курсу об'єктно -орієнтованє програмування підготовки студентів.

Метою курсової роботи є закріплення, поглиблення та узагальнення знань, якими студент оволодів під час вивчення курсу, в набутті навичок використання основ алгоритмізації та програмування на алгоритмічних мовах високого рівня з використанням принципів об’єктно-орієнтованого проектування та програмування, методики розробки програмних модулів та програмного забезпечення комп’ютерних систем управління, набуття студентами теоретичних знань та практичних навичок в області використання сучасних систем візуального проектування програмних засобів комп’ютерних систем управління та освоєння принципів та методів сучасних технологій програмування, набуття навичок професійних та практики наукових досліджень з оформленням відповідного текстового, програмного та ілюстративного матеріалу у формі наукового звіту.

Виконання курсової роботи (КР) направлено на закріплення знань, отриманих при вивченні теоретичної частини курсу, і набуття практичних навичок розробки об'єктно-орієнтованих програм. В результаті виконання курсової роботи студент повинен освоїти:

концепції об'єктно-орієнтованого програмування;

спеціалізовані засоби розробки програмного забезпечення мовою Java;

спеціалізовані засоби розробки програмного забезпечення мовою С ++;

знати: загальні питання побудови та використання сучасних систем об’єктно-орієнтованного та візуального проектування програмних засобів комп’ютерних систем управління; основні поняття та методи об’єктно-орієнтованного проектування та програмування, основні засоби розробки програм з використанням багато ієрархічних структур об’єктів та класів об’єктів;

вміти: самостійно вибирати середовище проектування програмних засобів, проектувати, розробляти, налагоджувати та супроводжувати сучасне програмне забезпечення комп’ютерних систем управління.

Під час виконання курсової роботи студент повинен продемонструвати:

-        вміння збирати і аналізувати відповідні матеріали про об’єкт дослідження, використовуючи сучасні джерела інформації, включаючи Інтернет -ресурси;

-        спроможність проводити необхідні обґрунтування для розробки програмних засобів систем управління різного призначення тощо;

-        здатність доводити розв'язання поставленої задачі до логічного кінця;

         вміння аналізувати отримані результати і робити з них висновки.

КР складається з двох взаємопов'язаних частин. Для виконання першої частини КР потрібно побудувати детальну об'єктну модель запропонованої предметної області. Друга частина КР передбачає безпосередню розробку об'єктно-орієнтованого програмного забезпечення, реалізує розроблену об'єктну модель.

1.      АНАЛІЗ СУЧАСНОГО СТАНУ ТЕХНОЛОГІЙ ПРОГРАМУВАННЯ ТА ОБГРУНТУВАННЯ ТЕМИ

 

.1 Основи ООП


Суть об’єктно-орієнтованого програмування виражається формулою “об’єкт це дані плюс процедури“. Об’єкт інтегрує деякий стан (або структуру даних) і доступні тільки йому механізми керування ним. Багато об’єктно-орієнтованих мов мають засоби для об’єднання об’єктів у класи. Це дозволяє зберігати процедури (у термінах об’єктно-орієнтованого програмування - методи), застосовувані до всіх об’єктів цього класу, в єдиному примірнику, лише у відповідному класі. Засоби візуального програмування розширили поняття “об’єкт“. Об’єкт - це деяка річ, із якою можна щось робити, і яка може бути видимою або ж ні. Видимим об’єктом може бути рамка, кнопка, автономний модуль та інше. Завдяки засобам візуальної розробки можна працювати з видимим об’єктом, тримаючи його перед очима й одержуючи результати практично відразу.

Об’єкти можуть реагувати на події і мати властивості - атрибути, що детально описують його структуру. Наприклад, об’єкт типу “людина“ має властивості “вік“, “адреса“ та інші. Всі об’єкти, як правило, можуть реагувати на події, ініційовані користувачами або системою. Кожен об’єкт є екземпляром (представником) певного класу. Відповідно, клас - це відповідна абстракція об’єктів. ООП характеризується наступними принципами (по Алану Кею) :

)        усе являється об'єктом;

)        обчислення здійснюються шляхом взаємодії (обміну даними) між об'єктами, при якому один об'єкт вимагає, щоб інший об'єкт виконав деяку дію; об'єкти взаємодіють, посилаючи і отримуючи повідомлення; повідомлення - це запит на виконання дії, доповнений набором аргументів, які можуть знадобитися при виконанні дії;

)        кожен об'єкт має незалежну пам'ять яка складається з інших об'єктів

)        кожен об'єкт є представником класу, який виражає загальні властивості об'єктів даного типу

)        у класі задається функціональність (поведінка об'єкту); тим самим усе об'єкти, які являються екземплярами одного класу, можуть виконувати одні і ті ж дії;

)        класи організовані в єдину деревовидну структуру із загальним коренем, звану ієрархією спадкоємства; пам'ять і поведінка, пов'язана з екземплярами певного класу, автоматично доступні будь-якому класу, розташованому нижче в ієрархічному дереві. моделювання предметів та явищ реального світу;

Абстрагування (abstraction) - метод рішення задачі, при якому об'єкти різного роду об'єднуються загальним поняттям (концепцією), а потім згруповані суті розглядаються як елементи єдиної категорії. Абстрагування дозволяє відокремити логічний сенс фрагмента програми від проблеми його реалізації, розділивши зовнішній опис (інтерфейс) об'єкту і його внутрішню організацію (реалізацію).

Інкапсуляція (encapsulation) - техніка, при якій несуттєва з точки зору інтерфейсу об'єкту інформація ховається усередині нього.

Спадкоємство (inheritance)- властивість об'єктів, за допомогою якої екземпляри класу дістають доступ до даних і методів класів-предків без їх повторного визначення. Спадкоємство дозволяє різним типам даних спільно використовувати один і той же код, призводячи до зменшення його розміру і підвищення функціональності.

Поліморфізм (polymorphism) - властивість, що дозволяє використовувати один і той же інтерфейс для різних дій; поліморфній змінній, наприклад, може відповідати декілька різних методів. Модифікатори доступу. Модифікатор private - забороняє доступ до полів і методів класу ззовні самого класу. Поля і методи, оголошені з модифікатором private, будуть доступні тільки в межах самого класу. Якщо поле і метод класу визначені з модифікатором public, вони доступні ззовні оголошення базового класу чи похідних класів. Це в деякій мірі означає, що метод оголошений із зовнішнього класу може вільно звертатись до таких полів і методів. З допомогою модифікатора protected можна доступитись до полів і методів базового класу тільки для похідних класів, але не для зовнішніх по відношенню до класу методів. Модифікатор internal представляє комбінацію модифікаторів public і protected. Він обмежує доступ відмічених ним полів і методів межами одної збірки .

Наслідування у класів - один з принципів ООП. Воно може бути використано для вираження генералізації або спеціалізації. Основна ідея в тому, що ви визначаєте новий тип, розширюючи або модифікуючи існуючий, іншими словами, похідний клас володіє всіма даними і методами базового класу, новими даними і методами і, можливо, модифікує деякі з існуючих методів. Різні мови використовують різні ОО жаргони для опису цього механізму (derivation, inheritance, sub-classing), для класу, від якого ви наслідуєте (базовий клас, батьківський клас, суперклас) і для класу (похідний клас, дочірній клас, підклас).++ (аналогічно для PHP): C++ використовує слова public, protected, і private для визначення типу наслідування і щоб заховати наслідувані методи або дані, роблячи їх приватними або захищеними. Хоча публічне наслідування найбільш часто використовується, за замовчуванням береться приватне. Як ми побачимо далі, C++ - підтримує множинне наслідування. Ось приклад синтаксису спадкування: Можливість присвоювати різну функціональність одному методу називається перевантаженням методу.

об'єктний орієнтований програмування мова

1.2    Створення класів. Методи, властивості, поля

 

.2.1 Предок всіх класів

У деяких ОО мовах кожен клас відбувається принаймні від деякого базового класу за замовчуванням. Цей клас, який часто називають Object, або подібно до цього, володіє деякими основними здібностями, доступними всіх класах. Фактично, всі інші класи в обов'язковому порядку його наслідують. Цей підхід є загальним ще й тому, що так спочатку робилося в Smalltalk.++: Хоча мова C++ і не підтримує таку властивість, багато структур додатків базуються на ньому, вводячи ідею спільного базового класу. Приклад тому - MFC з його класом COobject. Фактично це мало великий сенс спочатку, коли мови не вистачало шаблонів.: Кожен клас автоматично успадковує клас TObject. Так як мова не підтримує множинне спадкування, всі класи формують гігантське ієрархічне дерево. Клас TObject підтримує RTTI і володіє деякими іншими можливостями. Загальною практикою є використання цього класу, коли вам потрібно передати об'єкт невідомого типу. Java: Як і в OP, всі класи беззастережно успадковують клас Object. І в цій мові у спільного класу теж є деякі обмежені властивості і невелика підтримка RTTI.

 

.2.2 Доступ до методів базового класу

Коли ви пишете метод класу або перекривають метод базового класу, вам нерідко треба послатися на методи базового класу. Якщо цей метод перевизначений у похідному класі, то, використовуючи його ім'я, ви отримаєте нову версію.

У C + + для вказівки потрібного класу можна використовувати оператор (::). Ви можете отримати доступ не тільки до методів базового класу, але до класів вище за ієрархією. Це дуже потужна техніка, але вона створює проблеми, коли ви додаєте в ієрархію проміжний клас.

У Object Pascal для цієї мети є спеціальне слово inherited. Після цього слова ви можете написати ім'я методу базового класу або (в деяких випадках) просто використовувати це ключове слово для доступу до відповідного методу базового класу.для цього використовує ключове слово super. У цій мові, так само, як і в OP, немає можливості посилатися на другий попередній клас. На перший погляд, це може здатися обмеженням, але воно дозволяє розширювати ієрархію, вводячи проміжні класи. До того ж, якщо ви не маєте потреби у функціях базового класу, вам, мабуть, не слід було йому наслідувати.

2.      РОЗРОБКА ПРОГРАМИ ВИКОНАННЯ ОСНОВНОГО ЗАВДАННЯ

 

2.1 Розробка основного алгоритму виконання основного завдання


Для виконання поставленого завдання, потрібно написати функцію для знаходження площі трикутника , а також функцію для визначення найближчої площі до середньої площі всіх трикутників.

Щоб визначити площу трикутника, скористаємося Формулою Герона.

=

P=

де а. b, c сторони трикутника. Але в нашому випадку сторона b невідома проте відомі координати вершин А, B та C, звідси за формулою можна знайти довжину сторони b. Для початку знаходимо координати сторони b, за формулою:

 

Далі знаходимо довжину:

 

Для визначення найближчої площі до середньої площі всіх трикутників, необхідно відсортувати площі трикутників і середню площу, знайти середню площу у відсортованому масиві. Елемент, який знаходиться зліва від неї і буде найближчою площею

2.2 Структура даних та функції


В програмі описані клас Triangle. В цьому класі зберігаються відомості про об’єкти лінії трикутника. В класі Triangle описані наступні члени: int x - координати точки x, int y - координати точки y. В даному класі описані такі методи:

-        void set();

         void searchS ();-пошук площ;

         void draw();         -функція малювання лінії.

Лістинг опису класа наведений в додатку Б.

2.3    Розробка додатку на основі діалогових вікон


Для створення додатку потрібно відкрити Microsoft Visual Studio 2010.

Після відкриття програми виконуємо команду Файл - Створити - Проект, як показано на рисунку 1.

Рисунок 1 - Створення нового проекту

З’явиться вікно у якому обираємо тип нашого проекту, як показано на рисунку 2. В даному вікні ми обирає тип проекту, вводимо ім’я та натискаємо кнопку ОК.

Рисунок 2 - Обрання типу проекту

3.      РОЗРОБКА ПРОГРАМИ МЕНЮ


Для створення меню програми переходимо у вікно панелі інструментів і вибираємо об’єкт «menuStrip».

Тепер додаємо назви команд до нашого меню, як показано на рисунку 3.

Рисунок 3 - Меню програми

Додаємо команди до нашого меню керування програмою, як показано на рисунку 9.

Команди програми меню наведені в додатку А.

4. РОЗРОБКА ТА ВИКОНАННЯ ТЕСТОВОГО ПРИКЛАДУ


У файлі задані координати вершин А і В трикутника та довжини сторін АВ-«с» та ВС-«a». Вивести на екран ці трикутники. Блакитним кольором виділяємо трикутник площа, якого найближча до середньої площі всіх трикутників.

Формат вхідних даних в текстовому редакторі зображено на рисунку 4:

Рисунок 4 - Формат вхідних даних

Після запуску програми на дисплеї з’явиться вікно програми, як показано на рисунку 5.

Рисунок 5 - Вікно програми після запуску

Для початку роботи програми потрібно виконати команду: «Запустити програму».

На дисплеї з’являться трикутники, як показано на рисунку 6.

Рисунок 6 - Виведення об’єктів на дисплей

В даній програмі блакитним кольором вивело трикутник, площа якого найближча до середньої площі всіх трикутників.

5. ІНСТРУКЦІЯ КОРИСТУВАЧА


Системні вимоги для роботи програми:

1.     Процесор: Intel Core i3 2.2 GHz;

2.      Мінімальний об’єм оперативної пам'яті: 128 МБ;

.        Мінімальний об’єм відео пам’яті: 64 МБ

.        Пристрій введення (мишка, клавіатура);

.        Пристрій виведення (монітор);

.        Операційна система WINDOWSXP\7\VISTA\8\8.1 .

.        Необхідне програмне забезпечення Microsoft Visual Studio.

Робота програми розпочинається з відкриття файлу Курсова.exe.

Відкривається пусте вікно, (рисунок 5).

Для початку роботи програми виконайте команду: «Запустити програму»

Після виконання даної команди на дисплей виведуться наші графічні об’єкти, а саме трикутники.

Для зміни координат фігур, треба скористатися командою: «Відкрити файл з даними». У файлі можна змінювати координати вершин трикутників, за бажанням можна додати трикутники .

Для виходу із програми виконати команду : “Вихід”.

ВИСНОВКИ


Під час виконання курсової роботи я навчився застосовувати ООП для написання програм. Дослідив основна методи об’єктно-орієнтованого програмування. Навчився створювати алгоритми по математичних формулах. Застосовувати ієрархію класів. Здобув знання по роботі з середовищем програмування Microsoft Visual Studio 2010 . Здобув неоціненний досвід роботи і використав на практиці знання здобуті на даній дисципліні.

ПЕРЕЛІК ПОСИЛАНЬ


1.      Гради Буч, Роберт А. Максимчук, Майкл У. Энгл, Бобби Дж. Янг, Джим Коналлен, Келли А. Хьюстон. Объектно-ориентированный анализ и проектирование с примерами приложений. М.: Вильямс, 2008.- 720с. Лафоре Р. Объектно-ориентированное программирование на C++ / Р. Лафоре. - Москва: 2005. - 568с.

.        Armstrong, «The Quarks of Object-Oriented Development.» In descending order of popularity, the «quarks» are: Inheritance, Object, Class, Encapsulation, Method, Message Passing, Polymorphism, Abstraction Баддю Т. Об’єктно-орієнтоване програмування у дії / Т. Баддю. -Київ: 2006. - 384с.

.        Прат С. Лекції та вправи / С. Прат. -Харків: 2003. - 476с.

.        Алан Кэй The Early History of Smalltalk. - Apple Computer, ACM SIGPLAN Notices, vol.28, №3, March 1993..

.        C++ - Wikipedia, thefreeencyclopedia [Електронний ресурс]. // - C++:http://uk.wikipedia.org/wiki/C%2B%2B,вільний, - Загол. з екрану.

ДОДАТКИ

Додаток А


#pragma once

#include "Triangle.h"kursova {namespace System;namespace System::ComponentModel;namespace System::Collections;namespace System::Windows::Forms;namespace System::Data;namespace System::Drawing;

/// <summary>

/// Сводка для Form1

/// </summary>ref class Form1 : public System::Windows::Forms::Form

{:(void)

{();

//

//TODO: добавьте код конструктора

//

}:

/// <summary>

/// Освободить все используемые ресурсы.

/// </summary>

~Form1()

{(components)

{components;

}

}: System::Windows::Forms::MenuStrip^ menuStrip1;:: System::Windows::Forms::ToolStripMenuItem^ файлToolStripMenuItem;: System::Windows::Forms::ToolStripMenuItem^ відкритиФайлЗДанимиToolStripMenuItem;: System::Windows::Forms::ToolStripMenuItem^ запуститиПрограмуToolStripMenuItem;: System::Windows::Forms::ToolStripMenuItem^ вийтиToolStripMenuItem;: System::Windows::Forms::ToolStripMenuItem^ проПрограмуToolStripMenuItem;

#pragma region Windows Form Designer generated codeInitializeComponent(void)

{

// налаштування компонентів програми

}

#pragma endregion: System::Void запуститиПрограмуToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)

{trngl; //Створення об'єкта класа Triangle.set(); //виклик функції отримання даних.searchS(); //виклик функції пошуку площ.Draw(); //виклик функції малювання трикутників.Free(); //вивільнення пам'яті

}: System::Void вийтиToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)

{>Close();

}: System::Void відкритиФайлЗДанимиToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)

{("notepad Координати.txt");

}

}

Додаток Б


#pragma once

#include "Form1.h"

#include <math.h>namespace kursova;class Triangle

{:(void);*x1,*x2,*x3,*y1,*y2,*y3*S,*P,Sc;*a,*c,*b,color;i;j,x,y,k,l;* Dani;set()

{=0;= fopen ("Координати.txt", "r"); //зчитуємо дані з файлу(EOF(Dani)!=true)

{= (int*)realloc (x1,i+1); //динамічно створюємо масив= (int*)realloc (x2,i+1);= (int*)realloc (x3,i+1);= (int*)realloc (y1,i+1);= (int*)realloc (y2,i+1);= (int*)realloc (y3,i+1);= (int*)realloc (c,i+1);= (int*)realloc (a,i+1);(Dani, "%12d %16d %21d %25d %30d %34d %40d %44d %c", &x1[i], &x2[i], &x3[i], &y1[i], &y2[i],&y3[i],&c[i],&a[i],); //записуємо дані в масив++;

}

};searchS()

{(j=0;j<i,j++)

{=x3[j]-x1[j]; //шукаємо координати сторони b=y3[j]-y1[j];[j]=Sqrt(x*x+y*y); //шукаэмо довжину сторони b[j]=((a[j]+b[j]+c[j])/2); // шукаєм периметр[j]=Sqrt(P[j]*(P[j]-a[j])*(P[j]-b[j])*(P[j]-c[j])); //шукаєм площу=Sc+S[j]; //шукаєм середню площу фігур

}=Sc/i; //шукаєм середню площу фігур= (int*)realloc (S,i+1);[i]=Sc;(k=0;k<-1-,k++)(j=0;j<i,j++) //сортуємо площі

{(S[j]>S[j+1]

{(S[j],S[j+1]);

}

}(j=0;j<i+1,j++) //шукаєм найближчу площу до середньої

{(S[j]=Sc)

{(Sc-S[j-1]>S[j+1]-Sc)

{=j+1; //запамятовуємо номер найближчої площі

}

{=j-1; //запамятовуємо номер найближчої площі

}

}

};draw()

{F1=gcnew Form1();(j=0;j<i,j++)

{(j=color)

{(k=0;k<3;k++)

{->lineShape[k]->BorderColor="MenuHighlight"; //міняєм колір найближчого трикутника на блакитний і малюєм його лінії->lineShape[k]->X1 = x1[j];->lineShape[k]->X2 = x2[j];->lineShape[k]->Y1 = y1[j];->lineShape[k]->Y2 = y2[j];=k;

}

}

{(k=l;k<l+3;k++)

{->lineShape[k]->BorderColor="ControlText"; //міняєм колір звичайних трикутників на чорний і малюєм їх лінії->lineShape[k]->X1 = x1[j];->lineShape[k]->X2 = x2[j];->lineShape[k]->Y1 = y1[j];->lineShape[k]->Y2 = y2[j];=k;

}

}

}

};

};

Похожие работы на - Розробка програм мовою С++ з використанням технології об’єктно-орієнтованого програмування

 

Не нашел материал для своей работы?
Поможем написать качественную работу
Без плагиата!