- •О.Ф.Тарасов, о.В.Алтухов
- •1 Заняття № 1 Вивчення інтегрованого середовища с
- •1.1 Теоретичні відомості
- •1.2 Хід роботи
- •1.3 Вимоги до звітів
- •1.4 Питання для контролю і самостійної роботи
- •2 Заняття № 2 Функції введення/виведення даних printf( ), scanf( ). Лінійні обчислювальні процеси
- •2.1 Теоретичні відомості
- •2.2 Хід роботи
- •2.3 Індивідуальне завдання до заняття №2
- •2.4 Питання для контролю і самостійної роботи
- •3 Заняття № 3 Розробка програм зі скалярними типами даних
- •3.1 Теоретичні відомості
- •Приклад
- •3.2 Хід роботи
- •3.3 Індивідуальне завдання до заняття № 3
- •3.4 Питання для контролю і самостійної роботи
- •4 Заняття № 4 Розробка програм з циклічними обчислювальними процесами
- •4.1 Теоретичні відомості
- •Алгоритм роботи оператора циклу for ( )
- •4.2 Хід роботи
- •4.3 Індивідуальне завдання до заняття № 4
- •4.4 Питання для контролю і самостійної роботи
- •5 Заняття № 5
- •Розгалуження обчислювального процесу.
- •Оператори, які реалізують розгалуження: if... Else, switch,
- •Умовна операція ( ? : )
- •5.1 Теоретичні відомості
- •Умовна тернарна операція ( ? : )
- •Оператор варіанта switch
- •Приклад
- •5.2 Хід роботи
- •5.3 Індивідуальне завдання до заняття № 5
- •5.4 Питання для контролю і самостійної роботи
- •6 Заняття № 6 Операції с, їхні пріоритети і використання. Перетворення типів
- •Пріоритет операцій і порядок виконання (асоційованість)
- •(Новий_тип) Операнд
- •Приклад
- •6.2 Хід роботи
- •6.3 Індивідуальне завдання до заняття № 6
- •6.4 Питання для контролю і самостійної роботи
- •7 Заняття № 7
- •7.1 Теоретичні відомості
- •Оголошення функцій (створення прототипів)
- •([ Список_типів_параметрів ])
- •Синтаксис визначення функцій
- •[ Return Значення_типу_що_повертається ]
- •Використання локальних і глобальних перемінних у функціях. Виклик функції
- •Приклад
- •7.2 Хід роботи
- •7.3 Індивідуальне завдання до заняття № 7
- •7.4 Питання для контролю і самостійної роботи
- •8 Заняття № 8
- •8.1 Теоретичні відомості
- •Основні операції з покажчиками
- •Покажчики і цілі величини
- •Динамічне розміщення покажчиків у пам'яті
- •Приклад
- •Приклад
- •8.2 Хід роботи
- •8.3 Індивідуальне завдання до заняття № 8
- •8.4 Питання для контролю і самостійної роботи
- •9 Заняття № 9
- •9.1 Теоретичні відомості
- •Приклад
- •9.2 Хід роботи
- •9.3 Індивідуальне завдання до заняття №9
- •9.4 Питання для контролю і самостійної роботи
- •10 Заняття № 10
- •10.1 Теоретичні відомості
- •Приклад
- •10.2 Хід роботи
- •10.3 Індивідуальне завдання до заняття № 10
- •10.4 Питання для контролю і самостійної роботи
- •Заняття №11 Обробка символьних даних
- •Теоретичні відомості
- •Індивідуальне завдання до заняття №11
- •Питання для контролю і самостійної роботи
- •Приклад
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Теоретичні відомості
- •Приклад
- •Індивідуальне завдання до завдання №13
- •Питання для контролю і самостійної роботи
- •Заняття № 14 Розробка програм зі складеними типами даних
- •Структури
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Заняття № 15 Використання покажчиків для роботи зі складеними типами даних (2години)
- •Теоретичні відомості
- •Приклад
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Використання покажчиків для роботи з функціями
- •Покажчики як параметри функції
- •[Const ] Тип * Ім'я_покажчика
- •Приклад
- •Хід роботи
- •Індивідуальне завдання до заняття №16
- •Питання для контролю і самостійної роботи
- •Використання функцій високого і низького рівня для роботи з потоками (файлами)
- •Функції для роботи з файлами
- •Хід роботи
- •Індивідуальне завдання до заняття №17
- •Питання для контролю і самостійної роботи
- •Розробка програм із багатофайловою структурою. Заголовочні файли. Класи пам'яті перемінних і функцій
- •Керування многофайловими проектами
- •Використання адміністратора проектів
- •Приклад
- •Основний файл проекту
- •Заголовний файл
- •Хід роботи
- •Індивідуальне завдання до заняття №18
- •Питання для контролю і самостійної роботи
- •Графічні функції
- •Графічні примітиви
- •Хід роботи
- •Індивідуальне завдання до заняття №19
- •Питання для контролю і самостійної роботи
- •Заняття№20 Розробка програм з використанням класів
- •Теоретичні відомості
- •Оголошення і визначення класу
- •Тіло класу
- •Інкапсуляція. Керування доступом до членів класу
- •Використання даних-членів класу
- •Хід роботи
- •Індивідуальне завдання до заняття №20
- •Питання для контролю і самостійної роботи
- •Заняття№21 Використання конструкторів і деструкторів у класах
- •Теоретичні відомості
- •Ініціалізація об'єктів класу
- •Деструктори
- •Виклик деструкторів
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •"Друзі" класів (friend)
- •Хід роботи
- •Індивідуальне завдання до заняття №22
- •Контрольні питання для підготовки і самостійної роботи
- •Віртуальні базові класи
- •Віртуальні деструктори
- •Хід роботи
Віртуальні базові класи
При множинному спадкуванні базовий клас не може задаватися в похідному класі більш одного разу. Однак, базовий клас можна передавати похідному класу більш одного разу побічно:
class B { ... }; class D : B, B { ... }; //Неприпустимо |
class X : public B { ... }; class Y : public B { ... }; class Z : public X, public Y { ... }; // Припустимо |
У даному випадку кожен об'єкт класу Z буде мати два підоб'єкти класу В. Для усунення цієї проблеми до специфікатора базового класу додають ключове слово virtual, тобто роблять його віртуальним класом.
Приклад
class X : virtual public B { ... }; //Тепер В є віртуальним базовим класом
class Y : virtual public B { ... };
class Z : public X, public Y { ... }; //Клас Z має тільки один підоб'єкт класу В
Віртуальні деструктори
Конструктори не можуть бути віртуальними. Деструктор може бути оголошений як віртуальний (virtual). Це дозволяє покажчику на базовий клас викликати необхідний деструктор у випадку, коли покажчик посилається на об'єкт похідного класу. Деструктор похідного класу від базового класу з віртуальним деструктором є віртуальним.
Приклади:
class color {... public: virtual ~color( ); // Віртуальний // деструктор для класу color }; |
class red : public color {... public: virtual ~red( ); //Деструктор для // red також є віртуальним }; |
class brightred : public red
{...
public:
virtual ~brightred( ); //Деструктор для brightred також є віртуальним
};
Розглянемо роботу з об'єктами оголошених класів. Покажчик на базовий клас може адресувати об'єкти похідних класів
color *palette[3]; // Оголошення масиву покажчиків на базовий клас
palette[0] = new red; // Створення об'єкта класу red у купі
palette[1] = new brightred; // Створення об'єкта класу brightred у купі
palette[2] = new color; // Створення об'єкта базового класу color у купі
Застосування оператора delete
delete palette[0]; // Викликається деструктор для об'єкта класу red
delete palette[1]; // Деструктор для об'єкта класу brightred
delete palette[2]; // Запуск деструктора для об'єкта класу color
Однак, якщо жоден з деструкторів не був оголошений віртуальним, то вирази delete palette[0], delete palette[1] і delete palette[2] викликають тільки деструктор для базового класу color, на який оголошений масив покажчиків. Це приведе до неправильного знищення перших двох елементів, які фактично мали тип red і brightred. Виклики віртуальних деструкторів компонуються під час виконання програми й об'єкти самі визначають, який деструктор треба викликати.
Хід роботи
Вивчити теоретичні відомості.
Відповідно до індивідуального завдання на базі заняття №22 розробити алгоритм роботи з об'єктами базових і похідних класів з використанням покажчиків на базові і похідні класи. При необхідності довести ієрархію класів до 3-4-х рівнів.
Набрати програму на комп'ютері й усунути помилки.
Одержати результат.
Оформити звіт.
Підготуватися до захисту заняття, вивчивши контрольні питання по даній темі.
Вимоги до змісту звіту приведені в занятті №1.
Питання для контролю і самостійної роботи
Які функції-члени називаються убудованими (inline) ?
Які функції-члени називається перевантаженими ?
Які функції-члени називаються заміщуючими ?
Які функції-члени називається віртуальними ?
Чи можна адресувати об'єкти ПК за допомогою покажчиків на загальний БК, на попередній БК по ієрархії, на нижчий по ієрархії ПК ?
Назвіть правила використання покажчиків для роботи з об'єктами БК і ПК.
Коли необхідне визначення віртуальної функції в базовому класі ?
Який клас називається абстрактним ?
Чи можна створити об'єкт абстрактного класу ?
Яка функція називається чисто віртуальною ?
Чи можна установити у процесі компіляції яка функція буде викликатися для роботи з об'єктами при використанні покажчиків ?
Чи можуть конструктори і деструктори бути віртуальними ? Чим це викликано ?
Як виконується розміщення об'єктів класів у купі ?
Як виконується виділення і звільнення пам'яті для об'єктів, які створюються динамічно ?
Коли виконується вибір віртуальної функції, яку необхідно викликати для заданого об'єкта ПК, якщо для адресації об'єкта ПК використовується покажчик на БК ?
Яка невіртуальна функція буде викликана в зазначеному випадку і чому?
Для чого і як оголошуються віртуальні класи ?
Список рекомендованої літератури
Методические указания для студентов всех специальностей. Структура и правила оформления текстовых документов. / Сост. В.М. Гах. - Краматорск: ДГМА, 1999. – 33 с.
Керниган Б., Ритчи Д. Язык программирования Си. – 2-изд. –М.: Финансы и статистика, 1992 – 272 с.
Страуструп Б. Язык программирования С++. –М.: Радио и связь, 1991 – 352 с.
Прокофьев Б.П., Сухарев Н.Н. и др. Графические средства Turbo C++. - М.: ФИС, 1992 – 160 с.
Романовская Л.М., Русс Т.В., Святковский С.Г. Программирование в среде Си для ПЭВМ ЕС. - М.: ФИС, 1992 – 352 с.
Берри Р., Микин Б. Язык Си. Введение для программирования. –1998 – 198с.
Шилдт Г. Язык "Си" для профессионалов. –М.: ИВК-СОФТ, 1992 – 319 с.
Ален И. Голуб. С и Си++ . Правила программирования. / Под ред. В. Костенко. – М.: БИНОМ, 1996 – 272 с.
Бочков С.О., Субботин Д.М. Язык программирования Си для персонального компьютера. / Под ред. А.И.Садчикова. – М.: Диалог, Радио и связь, 1990 – 384 с.
Болски М.И. Язык программирования Си: Справочник. Перевод с английского. – М.: Радио и связь, 1988 – 96с.
Лукас П. С++ под рукой: Справочник. _ КР: Диасофт, 1993 – 176 с.
Проценко В.С., Чаленко И.П., Ставровский А.Б. Техника программирования языком Си. - К: Либідь, 1993 – 224 с.
Ирэ П. Объектно-ориентированное программирование с использованием С++. – К.: НИПФ "Диасофт Лтд.", 1995 – 480 с.
Буч Г. Объектно-ориентированное проектирование. – К.: Диалектика, ИВК (Москва), 1992 – 519 с.
Сван Т. Освоение Borland C++ 4.5. Практический курс. В 2-х томах. 2 – изд. - К.: Диалектика, 1996 – 544с.
Поттс С., Монк Т.С. Borland C++ в примерах. - Минск: Попури, 1996 – 752 с.
Зміст
|
Стор. |
Заняття№ 1. Вивчення інтегрованого середовища С..................…………. |
3 |
Заняття№2. Функції введення/виведення даних print( ), scanf( ). Лінійні обчислювальні процеси………............................……....… |
5 |
Заняття№ 3. Розробка програм зі скалярними типами даних…………… |
12 |
Заняття№ 4. Розробка програм з циклічними обчислювальними процесами………………………….......………....………………… |
20 |
Заняття №5. Розгалуження обчислювального процеса. Оператори, які реалізують розгалуження: if... else, switch, умовна операція ( ? : ) |
27 |
Заняття№6. Операції С, їхні пріоритети і використання. Перетворення типів…………............................……....……………………………. |
35 |
Заняття№7. Розробка програм з функціями. Оголошення, визначення і виклик функцій...………...………………………………………….. |
45 |
Заняття№ 8. Розробка. програм з покажчиками.............…..……………… |
53 |
Заняття№ 9. Масиви. Селективна обробка масивів....…………………….. |
61 |
Заняття№ 10. Формування робочих масивів за допомогою операцій селекції вихідного масиву............................................…..…………. |
67 |
Заняття№ 11. Обробка символьних даних.........………………………….. |
72 |
Заняття№ 12. Використання бібліотечних функцій для роботи із символьними даними.......................................................…..……… |
75 |
Заняття№ 13. Вкладені цикли. Багатомірні масиви. Масиви покажчиків.. |
80 |
Заняття№ 14. Розробка програм зі складеними типами даних.....…….…. |
87 |
Заняття№ 15. Використання покажчиків для роботи зі складеними типами даних……………………...........……......………………..… |
93 |
Заняття№ 16. Використання покажчиків для роботи з функціями……… |
98 |
Заняття№17 Використанням функцій високого і низького рівня для роботи з потоками...…………………………………….....………… |
105 |
Заняття№ 18. Розробка програм із багатофайловою структурою. Заголовочні файли. Класи пам'яті перемінних і функцій………… |
113 |
Заняття№ 19. Вивчення графічних функцій С......….....…………………... |
120 |
Заняття№ 20. Розробка програм з використанням класів………………… |
126 |
Заняття№ 21. Використання конструкторів і деструкторів у класах…..… |
134 |
Заняття№ 22. Використання спадкування для створення ієрархії класів.. |
139 |
Заняття№ 23. Використання віртуальних функцій і покажчиків для роботи з об'єктами класів........................………...………………… |
146 |
Список рекомендованої літератури……………………………………….. |
150 |
Вихідні дані
НАВЧАЛЬНИЙ ПОСІБНИК.
Практикум для виконання лабораторних робіт з дисципліни
«Мови об’єктно-орієнтованого програмування»
Укладачі: О.Ф.Тарасов,
О.В.Алтухов
Редактор
Підп. до др. Формат 60х84 1/16 Офсетний друк
Ум. друк. арк. Облік.-вид. арк. Тираж 25 пр.
ДДМА, 84313, Краматорськ, вул. Шкадінова, 72