Курсовая работа: Побудова і використання класів

};


В даному випадку функції f1 та f2 із класу x1 є друзями класу x2, хоча вони описуються без специфікатора friend.

Усі компоненти класу доступні у дружньому класі. Дружній клас може бути визначеним перед тим, як описаний як дружній. [3]

Для розв’язання деяких задач дуже зручно використовувати параметризовані класи на основі шаблонів. Шаблон – це спеціальний опис родової (параметризованої) функції або класу, у яких інформація об використаних в реалізації типах даних спеціально остається незаданою. Типи використаних даних передаються через параметри шаблону. Апарат шаблонів дозволяє одну й ту саму функцію або клас використовувати з різними типами даних без необхідності програмувати заново кожну версію функції або класу.

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

1.5 Розробка класів з використанням технології візуального програмування

Розглянемо технологію розробки класів в системі програмування BorlandC++ Builder. Це – одна з сучасних систем, яка має розвинені можливості та підтримую концепцію об’єктно-орієнтованого та візуального програмування.

В системі BorlandC++ Builder бібліотекою класів є бібліотека візуальних компонентів (VCL). Особливості бібліотеки полягають у тому, що компонентами, які використовуються в програмі, можна управляти за допомогою методів, властивостей та об’єктів.

Існує три елемента керування об’єктами: властивості, методи та події. Властивості об’єкта визначають його характеристики та поведінку. Наприклад, для об’єкта форма (вікно) властивість Caption визначаю назву в виді тексту, яка буде відображатися в верхній частині вікна, Color задає колір вікна, Width – його ширину і т.д.

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

Form1 –> Hide();

Щоб вікно стало знову видимим, треба викликати інший метод:

Form1 –> Show(); і т.д.

Третій елемент керування об’єктом – події. Для кожного об’єкта із VCLіснує свій перелік подій, для яких можна замінити стандартну реакцію програми.

Позначимо деякі особливості використання VCLв BorlandC++ Builder. Сама бібліотека VCLнаписана на Об’єктному Паскалі. Це обумовлює ряд обмежень на її використання, тому що Об’єктний Паскаль уступає в потужності реалізації принципів ООП на мові С++. VCLне допускає використання перевантажений функцій; використані функції-члени класу не мають аргументів за замовченням; класи із VCLне підтримують множинне успадкування. Вказані особливості ведуть до зниження гнучкості використання VCL. Однак переваги концепції візуального програмування роблять ці недоліки бібліотеки VCL малозначними. [2]


2. Розробка класу classProgressBar

2.1 Постановка задачі та обрані методи її розв’язку

В цій курсовій роботі розроблено клас classProgressBar, на основі якого побудовано ієрархію класів, яка дозволяє створювати об’єкти типу «смужка прогресу». Можливо створити смужку прогресу чотирьох форм – горизонтальну (похідний клас horBar), вертикальну (похідний клас vertBar), смужку у формі кола (похідний клас roundBar) та смужку у формі кільця (похідний клас ringBar).

Базові класи classProgressBar та fontмістять методи та дані, загальні для усіх успадкованих класів. Як вже позначалося, пара базових класів потрібна для демонстрації множинного успадкування. Взагалі структуру базових класів з їхніми методами та даними можна представити наступним чином:

Мал. 2. Структура базових класів

Пунктирними стрілками показано, що немає різниці, якому з базових класів належить метод. В загальному випадку можна всі методи помістити в один базовий клас (classProgressBar) і вже від нього успадковувати всі інші класи. Але в цьому випадку втратиться можливість продемонструвати множинне успадкування. Теж саме можна сказати щодо даних базових класів.

Таким чином, кожен з успадкованих класів успадковує методи для зміни кольору тексту, смужки та фону (classProgressBar) та зміни шрифту тексту (font).

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

2.2 Реалізовані концепції ООП

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

На основі базових класів classProgressBar та font була побудована ієрархія класів з використанням множинного та поодинокого успадкування. Множинне успадкування продемонстроване на успадкуванні класів horBar, vertBar та roundBar. Одиночне успадкування продемонстровано на успадкуванні класу ringBar.

Динамічний поліморфізм реалізується з використанням віртуальної функції-метода my_colors, описаної в класі classProgressBar. Таким чином, можна перевантажити цю функцію в похідних від classProgressBarкласах. Статичний поліморфізм використовується в класах roundBar та ringBar стосовно методів size. Тобто, методи size успадковуються класом ringBarта можуть бути перевантажені в ньому.

Схема успадкування показана на малюнку 2.

К-во Просмотров: 403
Бесплатно скачать Курсовая работа: Побудова і використання класів