Розробка програмного комплексу з використанням об'єктно-орієнтованого підходу і користувальницьких класів

Цілі і завдання розробки, її предмет і актуальність. Опис предметної області, цілі і завдання програми. Вибір методу рішення, опис процесу програмування і вибір інструментальних засобів для реалізації проекту, опис вхідних та вихідних даних, інтерфейсу.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 01.09.2014
Размер файла 327,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

КУРСОВИЙ ПРОЕКТ

Розробка програмного комплексу з використанням об'єктно-орієнтованого підходу і користувальницьких класів

Введення

Актуальність роботи полягає в застосуванні сучасних технологій об'єктно-орієнтованого підходу в програмуванні. Даний курсовий проект показує на прикладі роботу ООП. Проект моделює роботу з геометричними фігурами за участю реальних об'єктів як статичну модель реалізовану в програмному коді.

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

Об'єктно-орієнтоване програмування дозволяє розкласти проблему на складові частини. Кожна складова частина стає самостійним об'єктом, який містить свої власні коди і дані, які відносяться до цього об'єкта.

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

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

1. Постановка завдання

Клас «money»

Вхідні данні:

- поле first - ціле, (номинал купюри)

- поле secon - ціле (кількість купюр)

Результати:

- конструктор без параметрів,

- конструктор з параметрами;

- метод - обчислення розрахунку суми.

2. Об'єктно-орієнтований аналіз та проектування

программа користувальницький інтерфейс

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

2.1 Об'єктно-орієнтований аналіз

Об'єктна модель є природним способом представлення реального світу.

Основними принципами її побудови є:

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

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

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

- Ієрархія - це впорядкована система абстракцій, що задає їх розташування за рівнями.

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

Абстракція клас money

Ім'я: money.

Відповідальність: підтримка інформації про характеристику номіналу купюри.

Операції:

- ініціалізація;

- обчислення суми;

- вивід даних;

2.2 Об'єктно-орієнтоване проектування

Необхідно розробити клас Money.

Примітка:

Не враховувати необхідність перерозподілу пам'яти.

Данні:

- поле first - ціле, (номинал купюри)

- поле secon - ціле (кількість купюр)

Операції:

money() - конструктор без параметрів, виконує початкову ініціалізацію об'єкта;

money (int, int) - конструктор з параметрами, виконує ініціалізацію об'єкта.

int cost() - функція розрахунку суми

Структура класів

class money

+ int first;

+ int second;

+ money();

+ money (int, int);

+ int cost();

Рисунок 1. Структура базового класу money

Модифікатори доступу:

+

public

#

protected

-

private

Рисунок 2. Модифікатори доступу

Відносини між класами

Рисунок 3. Структура відносин між класами

Структура об'єктів

Об'єкти системи:

Діаграма об'єктів - показує структуру системи в конкретний момент часу, об'єкти, їх атрибути.

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

Застосовують при моделюванні статичних видів системи з точки зору проектування і процесів. При цьому моделюється «знімок» системи в даний момент часу і зображується безліч об'єктів, їх станів і відносин між ними.

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

Рисунок 4. Структура об'єктів класів class money

3. Робоче проектування

Для реалізації класу згідно технічного завдання обрано мову програмування С++. Мова програмування С++ підтримує об'єктно-орієнтироване програмування.

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

Опис класу має наступний формат:

class <ім'я класу>

{

// Опис відкритих членів і методів класу public:

// Опис закритих членів і методів класу private:

// Опис захищених членів і методів класу protected:

}

Клас, який був розроблений у курсовій роботі:

class money { // Класс money

public: // публичные члены класса

int first; // Номинал

int second; // Кол-во купюр

money(); // конструктор (без параметров)

money (int, int); // Конструктор с параметрами

int cost(); // Функция расчета суммы

};

Відкриті та закриті члени класу:

На відміну від полів структури доступних завжди, в класах можуть бути члени і методи різного рівня доступу:

- відкриті public (публічні), виклик відкритих членів і методів класу здійснюється за допомогою оператора. («точка»);

- закриті private (приватні), доступ до яких можливий тільки з допомогою відкритих методів.

- захищені методи (protected).

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

Об'єкти зберігаються в купі (для класів і посилальних типів)

- Об'єкти необхідно ініціалізувати оператором;

- Класи можуть успадковувати властивості інших класів (одиничне спадкування коду);

- Класи можуть реалізовувати множинні інтерфейси (множинне успадкування типів).

3.1 Розробка класів

Реалізація інкапсуляції.

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

З точки зору стороннього програміста об'єкт виглядає таким собі «чорним ящиком», у якого є входи і виходи. Подаючи на входи дані і застосовуючи функціональні методи можна отримати результат на виході.

На сьогоднішній день існує три рівні інкапсуляції public, protected і private.

Дані модифікатори покликані регулювати видимість властивостей і методів всередині і зовні класу.

В класі money() поля є відкритими int first, int second. Доступ до полів класу реалізовано за допомогою відкритих функцій членів класу int cost() конструктор з параметрами, виконує ініціалізацію об'єкта money (int, int), конструктор без параметрів money(), який виконує початкову ініціалізацію об'єкта, функція int cost() обчислення суму.

Реалізація успадкування

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

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

В даній курсовій роботі при розробці класів реалізовано просте відкрите успадкування.

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

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

Реалізація поліморфізму

Поліморфізм - це властивість, яка дозволяє одне і те ж ім'я використовувати для вирішення двох або більше схожих, але технічно різних завдань. Метою поліморфізму, стосовно об'єктно-орієнтованого програмування, є використання одного імені для завдання загальних для класу дій. Виконання кожного конкретного дії буде визначатися типом даних. Наприклад, для мови С, в якому поліморфізм підтримується недостатньо, знаходження абсолютної величини числа вимагає трьох різних функцій: abs (), labs () і fabs (). Ці функції підраховують і повертають абсолютну величину цілих, довгих цілих і чисел з плаваючою точкою відповідно. В С + + кожна з цих функцій може бути названа abs (). Тип даних, який використовується при виконанні функції, визначає, яка конкретна версія функції дійсно виконується. В С + + можна використовувати одне ім'я функції для безлічі різних дій. Це називається перевантаженням функцій.

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

В курсовому проекті поліморфізм реалізовано в розділені класу на інтерфейс, реалізацію.

3.2 Тестування працездатності системи класів

Для тестування працездатності базового класу money() задамо наступне значення для об'єкту оb(), де параметри це номінал і кількість купюр.

Отримаємо результат

Рисунок 5. Результати роботи класу

Розрахунки проведені в ручну підтверджують правильність роботи класу.

3.3 Обґрунтування вибору структур даних

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

Функції виводу: void show();

Функції ініціалізації: money(), money (int, int), money:money(), money:money (int a, int b), int money:cost().

Функція обчислення: int cost().

3.4 Обґрунтування вибору алгоритмів

Рисунок 6. Блок-схема головної програми

Рисунок 7. Блок-схема до методу cost()

Висновки

В даній курсовій роботі розроблений програмний комплекс з використанням об'єктно-орієнтованого підходу і користувальницьких класів».

Поглиблені знання з об'єктно-орієнтованого проектування та аналізу. ООП дозволяє ефективно розробляти програмне забезпечення та має ряд важливих переваг перед модульно-структурним програмуванням.

Основні ідеї об'єктно-орієнтованого підходу спираються на наступні положення:

- програма являє собою модель деякого реального процесу, частини реального світу.

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

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

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

Найбільш поширеною об'єктно-орієнтованою мовою програмування безумовно є C + +. Вільно поширювані комерційні системи програмування C++ існують практично на будь-якій платформі.

Під час виконання курсового проекту вирішувалися такі основні завдання:

- закріпити сутність об'єктно-орієнтованого підходу до програмування;

- розглянути об'єктно-орієнтований аналіз;

- закріпити процес об'єктно-орієнтованого проектування.

- розробити програмний комплекс з використанням об'єктно-орієнтованого програмування.

Поставлені завдання виконані.

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

Г. Шилдт. Самоучитель С++:Пер. с англ. - 3-е изд.: - СПб.:БХВ-Петербург, 2001. - 688 с.

В.П. Румянцев. Азбука программирования в Win 32 API. - 3-е изд.: - Москва, «Горячая линия - телеком», 2011.

Мешков А., Тихомиров Ю. Visual C++ и MFC.:В трех томах. Том 1 - СПб.:BHV - Санкт - Петербург, 2007. - 451 с., ил.

Мешков А., Тихомиров Ю. Visual C++ и MFC.:В трех томах. Том 2 - СПб.:BHV - Санкт - Петербург, 1997. - 464 с., ил.

Глинский Я.М., Анохін В.Є., Ряжська В.А. С++ Bulder Навчальний посібник Львів 2010 р.-192 с.

Давыдов В.Г. Технология программирования С++ СПб: БХВ-Петербург, 2005-672 с.

Савитч, Уолтер Язык С++. Курс объектно-ориентированного программирования. 3-е изд. М.: Издательский дом «Вильямс», 2012-704 с.

Подбельский В.В., Фомин С.С. Программирование на языке Си: Учеб. пособие. - М.: Финансы и статистика, 2008. - 600 с.: ил.

Додаток

Код головної програми

#include <iostream.h> // Подключение библиотеки ввода / вывода

#include <conio.h> // Подключение библиотеки очистки экрана и задержки

#include <math.h> // Подключение библиотеки для математических вычеслений

class money { // Класс money

public: // публичные члены класса

int first; // Номинал

int second; // Кол-во купюр

money(); // конструктор (без параметров)

money (int, int); // Конструктор с параметрами

int cost(); // Функция расчета суммы

};

money:money() { // конструктор (без параметров)

first=1;

second=1;

}

money:money (int a, int b) { // Конструктор с параметрами

first=a;

second=b;

}

int money:cost() { // Функция расчета суммы

cout << «Vvedite nominal:»;

cin >> first;

cout << «Vvedite kol-vo:»;

cin >> second;

int summ=first*second;

return summ;

}

int main() { // Основная программа

clrscr(); // Очистка экрана

money ob; // Обьявление обьекта класса money

cout<<«Summa: «<<ob.cost(); // Расчет суммы

getch(); // Задержка экрана

return 0;

Размещено на Allbest.ru


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

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