- •1Основні теоретичні відомості
- •1.1Шаблоні функції
- •1.2Шаблоні класи
- •1.3Стандартна бібліотека шаблонів
- •2Порядок виконання та індівідуальні завдання
- •2.1Порядок виконання роботи
- •2.2Індивідуальні завдання для розробки шаблонних функцій
- •2.3Індивідуальні завдання для розробці шаблонних класів
- •2.4Індивідуальні завдання підвищеної складності
- •Перелік рекомендованої літератури
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Запорізький національний технічний університет
МЕТОДИЧНІ ВКАЗІВКИ
до виконання розрахунково-графічного завдання на тему «Основні концепції узагальненого програмування» з дисципліни “Об’єктно-орієнтоване програмування”
для студентів професійного напрямку 6.050103 «Програмна інженерія» всіх форм навчання
2007
Методичні вказівки до виконання
розрахунково- графічного завдання на
тему «Основні концепції узагальненого
програмування»
з дисципліни
“Об’єктно-орієнтоване програмування”
для студентів професійного напрямку
6.050103
«Програмна інженерія» усіх
форм навчання /Укл.: Г.В. Табунщик .–
Запоріжжя: ЗНТУ, 2007.
–
Укладачі:
Галина Володимирівна Табунщик, канд.техн.наук, доцент
Рецензент: Субботін С.О., канд. техн. наук, доцент
Відповідальний за випуск: Притула А. В., канд. техн. наук, доцент
Затверджено
на засіданні кафедри ПЗ
Протокол № 8
від 15.05.2007р.
ЗМІСТ
Вступ 4
1 Основні теоретичні відомості 5
1.1 Шаблоні функції 5
1.2 Шаблоні класи 6
1.3 Стандартна бібліотека шаблонів 7
2 Порядок виконання та індівідуальні завдання 11
2.1 Порядок виконання роботи 11
2.2 Індивідуальні завдання для розробки шаблонних функцій 11
2.3 Індивідуальні завдання для розробці шаблонних класів 12
2.4 Індивідуальні завдання підвищеної складності 16
Перелік рекомендованої літератури 18
Вступ
Метою даної роботи є затвердження теоретичних основ та практичних аспектів об'єктно-орієнтованого програмування.
При виконанні розрахунково-графічного завдання студент повинен придбати знання з узагальненого програмування, оскільки головна увага приділяється розробці шаблонних функцій та класів.
Шаблони отримали широке застосування в сучасному програмуванні. шаблони дозволяють параметризувати способи обробки даних, оптимізувати код і параметризувати інформацію.
В якості інструментальної мови програмування для виконання курсової роботи рекомендовано використовувати мову програмування С++. Головною вимогою для використання компілятора є підтримка стандарту ISO/IEC 14882 “Standard for the C++ Programming Language”.
1Основні теоретичні відомості
Одна з найбільш потужних можливостей С++ - підтримка узагальненого програмування.
Узагальнене програмування – це парадигма в центрі якої лежать абстрактні типи, вузький набір функціональних вимог і алгоритми реалізації, що подані в термінах цих вимог.
Шаблон це функція або клас, що реалізовані для одного або декілька типів даних, що не відомі в момент написання коду. При використанні шаблонів в якості аргументів йому явно або неявно передаються конкретні типи даних. Оскільки шаблони є засобами мови програмування, то для них забезпечується повна підтримка перевірки типів та областей видимості.
Шаблони отримали широке застосування в сучасному програмуванні. Наприклад, практично весь код в стандартній бібліотеці С++ складається з шаблонів. Крім того шаблони дозволяють також параметризувати засоби обробки даних, оптимізувати код та параметризувати інформацію [1, 6-12].
1.1Шаблоні функції
Шаблона функція – це узагальнений опис поведінки функції, що може визватися для об’єктів різних типів, іншими словами шаблон це сім`я функцій.
Об’ява шаблонних функцій має наступний вигляд:
template <список_параметрів_шаблону>
тип ім’я функції(параметри_функції)
Існує два виду параметрів шаблонних функцій:
параметри шаблону, що об’являють в дужках “<>” перед ім’ям шаблонної функції:
template <typename T> або template <class T>,
де T – параметр шаблону, що задає ім`я заповнювача типа;
параметри виклику функції, що об’являють у круглих дужках:
max (T const& a, T const &b).
Параметрів шаблону може бути декілька, тоді вони перераховуються через кому. Наприклад
template <class T1, class T2> T1 max (T1 a, T b);
де T1 та T2 – заповнювачі типів.
Звичайно шаблони не компілюються у деякий один об’єкт, що має здатність обробляти деякий тип даних. Замість цього з шаблону генеруються різні об’єкти для кожного типу для якого використовується шаблон.
Процес підстановки конкретних типів замість параметрів шаблону називається інстанцируванням або конкретизацією шаблону (instantiation). Результат інстанцирування – екземпляр шаблону (instance).
Отже шаблони компілюються два рази:
до конкретизації: код самого шаблону перевіряється на коректність синтаксису. Виконується пошук синтаксичних помилок;
під час інстанцирування: перевіряється коректність усіх викликів.
Шаблони можуть бути перевантажені аналогічно звичайним функціям.
1.2Шаблоні класи
Відповідно до функцій класи можуть бути параметризовані одним чи декількома типами.
Об’ява шаблону класу виконується аналогічно об’яві шаблону функції:
template <typename T> class Stack{
……….
};
або
template <class T> class Stack{
……….
};
Для того щоб визначити функцію-член шаблону класу, необхідно вказати що це шаблон функції, при цьому необхідно використати повне ім’я типу шаблону класу:
template <typename T> void Stack<T>::push(T const& elem){
……}.
При об’яві об’єкту шаблонного класу в програмі необхідно явно вказати, який контейнер повинен використовуватись для зберігання елементів.
stack <int > intStack;
stack <float > flStack;
В якості параметрів шаблонів класів або функцій можуть виступати не тільки типи, але й звичайні величини.
template <class T, int col> class Stack{
……….
}
;
Тоді обва зміної буде мати наступний вигляд
Stack <int,100> MyObj;
Але при використанні аргументів для параметрів шаблонів, що не є типами не можливо використовувати дійсні числа , об’єкти типа клас і об’єкти з внутрішнім зв’язуванням.
