- •О.Ф.Тарасов, о.В.Алтухов
- •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
- •Контрольні питання для підготовки і самостійної роботи
- •Віртуальні базові класи
- •Віртуальні деструктори
- •Хід роботи
Інкапсуляція. Керування доступом до членів класу
Клас включає як дані, так і функції (код). Доступом до елементів класу можна керувати. Це керування стосується не тільки даних, але і коду.
Щоб використовувати клас необхідно знати, які функції і які дані доступні. Набір доступних функцій і даних називається користувальницьким інтерфейсом класу.
Головна турбота при створенні класу - сховати якнайбільше інформації. Це накладає обмеження на використання даних чи коду усередині класу. Існує три види користувачів класу:
сам клас (функції-члени мають прямий доступ до членів класу);
звичайні користувачі (доступ з функції main( ) і інших функцій);
похідні класи (доступ із класів-спадкоємців до членів базових класів).
Кожен вид користувачів має різні привілеї доступу до членів (елементів) класу. Кожен рівень привілеїв доступу асоціюється з визначеним ключовим словом. Рівнів привілеїв доступу в С++ всього три, вони визначаються наступними ключовими словами:
private – закриті (приватні) члени класу;
protected – захищені члени класу;
public – відкриті члени класу.
Елемент класу (class), розташований в розділі private, може використовуватися тільки функціями-членами і "друзями" класу, у якому вони оголошені. Елемент, розташований в розділі protected, може використовуватися як і private, але крім того, елемент може бути використаний функціями-членами і функціями-«друзями» класів, похідних від оголошеного класу. Елемент, розташований в розділі public, може використовуватися будь-якою функцією й операторами програми.
Елементи класу за умовчанням мають атрибут private, тому специфікатори доступу public і protected повинні задаватися явно.
Елементи структури (struct) за умовчанням мають атрибут public, але можно перевизначити доступ за допомогою специфікаторів доступу private чи protected.
Елементи union за умовчанням мають атрибут publiс. Перевизначити його не можна. Задавати специфікатори доступу для елементів об'єднання неприпустимо.
Модифікатор доступу (за умовчанням чи заданий) залишається дійсним для всіх наступних оголошень елементів, поки не зустрінеться інший модифікатор доступу.
Приклади:
class X { int i; // X::i за умовчанням privаte char ch; // X::ch аналогічно Х::i public: int j; // Дані-члени j, k int k; // відкриті - public protected: int l; // X::l - protected };
|
struct Y { int i; // Y::i за умовчанням public private: int j; // Y::j – private (приватний) public: int k; // Y::k - public }; union Z { int i; // public за умовчанням, double d; // інших варіантів немає }; |
Специфікатори доступу можуть повторюватися в будь-якій зручній послідовності.
Приклад
class AccessCtrlEx {
int value1; // Приватні члени-класу за умовчанням, доступні
void fun1(long); // тільки функціям – членам класу
private:
int value2; // Теж приватні, доступні тільки
int fun2(char *); // функціям-членам класу
public:
char* value3; // Загальнодоступні члени класу
long fun3(void);
protected:
int value4; // Захищені члени, доступні тільки функціям – членам
void fun4 (long); // класу і класів-спадкоємців (похідних класів)
};
Найбільш обмежений доступ до приватних (private) членів класу. Тільки сам клас чи класи, оголошені як дружні (friend) мають доступ до приватних членів. Похідні класи не мають доступу до приватних членів батьківського класу. Концепція приховання інформації реалізована в мові тільки частково, щоб запобігти ненавмисному доступу до внутрішніх перемінних чи функцій класу, оскільки навмисний доступ можна завжди одержати до будь-якої частини класу в обхід звичайних способів.
Для того, щоб використовувати загальнодоступні члени класу усередині функції, необхідно мати доступ до об’єктів цих класів. Щоб зробити члени загальнодоступними, їх потрібно оголосити в секції public класу.
Коли клас використовується як базовий для інших класів, можна зробити його члени доступними тільки для функцій похідних класів за допомогою слова protected.
Класи пам'яті для об'єктів
Клас, у змісті розподілу пам'яті, розглядається як вид структури. Як і структури, класи можуть бути оголошені з такими класами пам'яті, як автоматичний (auto), зовнішній (extern) або статичний (static).
Перемінні (ідентифікатори), оголошені усередині класу, можна використовувати тільки в сполученні з об'єктами класу. При неоднозначному тлумаченні звертання до елементів об'єкту повинний використовуватися оператор дозволу області видимості (::).