Міністерство науки та освіти України
Дніпропетровський національний університет
Факультет фізики, електроніки та комп’ютерних систем
Кафедра автоматизованих систем обробки інформації
Курсова робота
з дисципліни «Об’єктно-орієнтоване програмування»
Тема: Побудова та використання класів.
Клас classProgressBar.
Виконав:
студент групи РС-05
Калиновський К.О.
Керівник:
доцент кафедри АСОІ
Вовк С.М.
Дніпропетровськ
2007
Зміст
Текст завдання
1. Об’єктно-орієнтоване програмування мовою С++
1.1 Основні принципи об’єктно-орієнтованого програмування
1.2 Методика розробки програм на основі об’єктно-орієнтованого підходу
1.3 Принципи розробки класів та об’єктів
1.4 Особливості розробки класів мовою С++
1.5 Розробка класів з використанням технології візуального програмування
2. Розробка класу classProgressBar
2.1 Постановка задачі та обрані методи її розв’язку
2.2 Реалізовані концепції
2.3 Опис класів
2.3.1 Базовий клас classProgressBar
2.3.2 Базовий клас font
2.3.3 Похідні класи horBar, vertBar, roundBar та ringBar
2.4 Методи тестування програми
2.5 Результати виконання програми
3. Висновки
4. Література
5. Додатки
Текст завдання
Варіант №8. Побудова та використання класів. Клас classProgressBar.
Розробити клас classProgressBar, на основі якого можна створювати об'єкти типу "смужка прогресу" і використовувати їх як елементи графічного інтерфейсу в відеорежимі VGA 640x480x16. "Смужка прогресу" представляє собою звичайне горизонтальне віконце зі смужкою, яка заповнюється певним кольором відповідно до обсягу виконаної роботи, та рядком тексту всередині, який вказує на відсоток (процент) виконаної роботи. При роботі об'єктів передбачити можливість встановлення та зміни їх місця розташування на екрані, параметрів рамки віконця, лінійних розмірів, кольорів тексту, фону та заповнення, шрифту тексту, форми смужки (горизонтальна смужка, вертикальна смужка, смужка у формі дуги, круга, тощо), а також наявність звукового супроводження для указівки на 25%, 50%, 75% та 100% завершення роботи. Розробку проводити для операційної системи MS DOS.
1. Об’єктно-орієнтоване програмування мовою С++
1.1. Основні принципи об’єктно-орієнтованого програмування
Об’єктно-орієнтоване програмування (далі ООП) – це технологія програмування, яка базується на класифікації та абстракції об’єктів. ООП акумулює найкращі ідеї, реалізовані в структурному програмуванні та єднає їх з новими потужними концепціями, які дозволяють оптимально організовувати програми. ООП дозволяє розкласти проблему на складові частини. Кожна складова частина становиться самостійним об’єктом, який містить свої власні коди та дані, які належать цьому об’єкту. В цьому випадку вся процедура в цілому спрощується, і програміст отримує можливість оперувати з набагато більшими за об’ємом програмами.
В даній курсовій роботі основні концепції ООП реалізуються за допомогою мови програмування високого рівня С++. Усі мови ООП, включаючи С++, базуються на трьох основних концепціях: інкапсуляція, поліморфізм та успадкування. Розглянемо ці концепції.
Інкапсуляція (encapsulation) – це механізм, який єднає дані та код, керуючий цими даними, а також захищає одне та друге від зовнішнього впливу або неправильного використання. Якщо поєднати код та дані разом, то отримаємо об’єкт (object). Іншими словами, об’єкт – це те, що підтримує інкапсуляцію.
Всередині об’єкта коди та дані можуть бути закритими (private) або відкритими (public). Закриті коди та дані доступні тільки для інших частин цього об’єкта. Закриті коди та дані недоступні для частин програми, які існують за цим об’єктом. Якщо коди та дані є відкритими, то не дивлячись на те що вони задані всередині об’єкта, їх можна використовувати в інших частинах програми.
Насправді об’єкт – це змінна визначеного користувачем типу. Таким чином, об’єкт, який єднає код та дані, є складеною змінною.
Поліморфізм (polymorphism) – це властивість, яка дозволяє одне й те ж саме ім’я використовувати для розв’язання двох та більше схожих, але технічно різних задач. Метою поліморфізму є використання одного імені для завдання загальних для класу дій. Виконання кожної конкретної дії буде визначатися типом даних. В С++ можна використати одне ім’я функції для множини різних дій. Це називається перевантаженням функцій (functionoverloading).
Перевагою поліморфізму є те, що він допомагає знижувати складність програм дозволяючи використовувати той самий інтерфейс для завдання єдиного класу дій.
Також можна примінити поліморфізм до операторів. Такий тип поліморфізму називається перевантаженням операторів (operatoroverloading).
Ключовим у розумінні поліморфізму є те, що він дозволяє маніпулювати об’єктами різного степеня складності шляхом загального для них стандартного інтерфейсу для реалізації схожих дій.
Успадкування (inheritance) –це процес, за допомогою якого один об’єкт може одержувати властивості іншого. Тобто об’єкт може успадковувати основні властивості іншого об’єкта та додавати до них риси, характерні тільки для нього. Успадкування є важливим, тому що воно дозволяє підтримувати концепцію ієрархії класів. Без використання ієрархії класів, для кожного об’єкта треба було б задати усі характеристики, які б повністю його визначали. Але при використанні успадкування можна описати об’єкт шляхом визначення того загального класу (або класів), до яких він відноситься, з тими спеціальними рисами, які роблять об’єкт унікальним. [1]
1.2. Методика розробки програм на основі об’єктно-орієнтованого підходу
Розробка програм на мові С++ ведеться з допомогою спеціальних комплексів програм, які мають назву системи програмування та дозволяють створювати програми на конкретній реалізації мови. Процес створення програм включає чотири етапа:
1. Написання та редагування начального тексту програми з запам’ятовуванням її у вигляді начального файлу або модуля.
2. Компіляція програми та отримання її на певній проміжковій мові з запам’ятовуванням її у вигляді об’єктного файлу або модуля.
3. Створення файлу, який виконується або модуля шляхом об’єднання (компоновки) отриманого об’єктного модуля програми з іншими об’єктними модулями стандартних та спеціальних бібліотек.
4. Налагодження програми, яке можна проводити з допомогою спеціального засобу (налагоджувальника) , який полегшує знаходження помилок.
Основними компонентами сучасних систем програмування є:
· інтегроване середовище програмування;
· редактор зв’язків (компоновник);
· бібліотеки заголовних файлів;
· стандартні та спеціальні бібліотеки;
· бібліотеки прикладів програм;
· програми-утиліти;
· файли документації.
Таким чином, загальну схему створення програми можна описати наступною діаграмою.
передпроцесорна
обробка компіляція компоновка
pr.cpppr.objpr.exe
*.h, *.cpp *.obj, *.lib
Мал. 1. Схема створення модуля, який виконується
Інтегроване середовище програмування – це програма, яка містить вмонтований тестовий редактор, підсистему роботи із файлами, систему довідкової допомоги (Help - систему), вмонтований налагоджувальник, підсистему керування компіляцією та редагуванням зв’язків.
Початковий модуль програми (ПМ) готується із допомогою внутрішнього або зовнішнього текстового редактору та запам’ятовується в файлі *.cpp. Далі він обробляється передпроцесором та в разі необхідності він з’єднується з підключаємі файли (ПФ). Далі модернізований початковий модуль (ПМ*) обробляється компілятором. Знайдені синтаксичні помилки виправляються та безпомилково скомпільований об’єктний модуль (ОМ) поміщуються в файл *.cpp. Далі об’єктний модуль обробляється компоновником, який приєднує до програми необхідні бібліотечними функціями з бібліотечних файлів (БФ). В результаті отримаємо модуль, який виконується.
Програми-утиліти – це допоміжні програми, які можуть бути необхідними при створенні програм. Наприклад, така програма-утиліта як бібліотекар допомагає об’єднувати об’єктні модулі в один файл, який зветься статистичною бібліотекою. [2]
1.3. Принципи розробки класів та об’єктів
Сукупність принципів проектування, реалізації та розробки програм, яка базується на абстракції даних, передбачає створення нових типів даних, які з найбільшою повнотою відображають особливості задачі, яка розв’язується. В мові С++ програміст має можливість ввести власні типи даних та визначити операції над ними за допомогою класів.
Клас – це похідний структурований тип, введений програмістом на основі вже існуючих типів. Механізм класів дозволяє створювати типи у повно мій відповідності до принципів абстракції даних, тобто клас задає деяку структуровану сукупність типізованих даних та дозволяє визначити набір операцій над цими даними.
Клас можна визначити за допомогою конструкції:
ключ_класу ім’я_класу {список компонентів};
де ключ_класу – одне з службових слів class, struct, union;
ім’я_класу – правильний ідентифікатор;
список_компонентів – визначення та описання типізованих даних та функцій, які належать класу.
В проекті стандарту мови С++ вказано, що компонентами класу можуть бути дані, функції, класи, бітові поля, дружні функції, дружні класи та імена типів.
Приклад описання класу. Клас «комплексне число».
structcomplex//варіант класу «комплексне число»
{
doublereal;//реальна частина
doubleimag;//уявна частина
//визначення значення комплексного числа
voiddefine (doublere = 0.0, doubleim = 0.0)
{
real = re;
imag = im;
}
//друк значення комплексного числа на екран
void display (void)
{
cout << “real = ” << real << “ ,imag = ” << imag;