
- •Лабораторна робота №1
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Завдання 3
- •Теоретичні відомості Масиви динамічної пам'яті
- •Приклад виконання завдання 1
- •Лістинг програми
- •Приклад виконання завдання 2
- •Лістинг програми
- •Приклад виконання завдання 3
- •Лістинг програми
- •Контрольні запитання
- •Лабораторна робота №2
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Теоретичні відомості Читання і запис текстових файлів
- •Читання і запис бінарних файлів
- •Відкриття бінарних файлів
- •Файли з послідовним доступом
- •Запис даних у файл з послідовним доступом
- •Файли з довільним доступом
- •Приклад виконання завдання 1
- •Приклад виконання завдання 2
- •Контрольні запитання
- •Лабораторна робота №3
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Завдання 3
- •Теоретичні відомості
- •Обмеження доступу до членів класу
- •Специфікатори доступу
- •Вбудовані функції-члени
- •Приклад виконання завдання 1.
- •Приклад виконання завдання 2.
- •Приклад виконання завдання 3.
- •Контрольні запитання
- •Лабораторна робота №4
- •Порядок виконання роботи
- •Завдання 2
- •Теоретичні відомості Конструктори і деструктори
- •Правила роботи з конструкторами і деструкторами
- •Варіант 10. Розробити описовий алгоритм, схему алгоритму і написати метод для підрахування кількості слів в текстовому файлі.
- •Приклад виконання завдання 2
- •Контрольні запитання
- •Лабораторна робота №5
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Теоретичні відомості Принципи спадкування в ооп
- •Оголошення похідних класів
- •Конструктори похідного класу
- •Функції члени похідного класу
- •Заборонені члени класу (Protected)
- •Приклад виконання Завдання 1
- •Контрольні запитання
- •Лабораторна робота №6
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Перевантаження операторів
- •Приклад виконання завдання 1
- •Приклад виконання завдання 2
- •Приклад виконання завдання 3
- •Приклад виконання завдання 4
- •Контрольні запитання
- •Лабораторна робота №7
- •Порядок виконання роботи
- •Завдання 1.
- •Завдання 2.
- •Теоретичні відомості
- •Структура наслідування класів
- •Постановка задачі
- •Розробити клас трикутника, чотирикутника, кола, точки
- •Контрольні запитання
- •Лабораторна робота №8
- •Порядок виконання роботи
- •Завдання 1
- •Контрольні запитання
- •Лабораторна робота №9
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Множинне спадкування
- •Контрольні запитання
- •Лабораторна робота №10
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Шаблони
- •Параметризовані класи
- •Визначені об’єкти-потоки
- •Операції поміщення та вилучення
- •Приклад виконання Завдання з варіанту 2
- •Контрольні запитання.
- •Лабораторна робота №11
- •Порядок виконання
- •Завдання 1
- •Завдання 2
- •Завдання 3 Варіант 1. Задача “Банківське переведення” (дата, час, № рахунку, розмір рахунку).
- •Ітератори
- •Для роботи з вектором необхідно:
- •Приклад роботи з вектором
- •Алгоритми
- •Застосування алгоритмів до вектора
- •Приклад 1 виконання Завдання 1
- •Приклад 2 виконання Завдання 2
- •Приклад 3 виконання завдання №3
- •Контрольні запитання
- •Завдання 1
- •Теоретичні відомості Приклад розробки програми
- •Контрольні запитання
- •Лабораторна робота №13
- •Порядок виконання
- •Завдання 2.
- •Теоретичні відомості
- •Стандартні потоки для базових класів
- •Форматування даних при обмінах з потоками
- •Маніпулятори
- •Приклад розробки програми
- •Контрольні запитання
- •Лабораторна робота №14
- •Порядок виконання
- •Завдання
- •Теоретичні відомості
- •Контрольні запитання
Функції члени похідного класу
Основні правила використання:
1. Якщо в базовому класі член класу закритий (Prіvate), то в похідному класі одержати до нього безпосередній доступ не можна, тому що тільки члени класу можуть мати доступ до закритих членів цього ж класу.
2. Якщо в новому похідному класі оголошені закриті члени, то з ними може працювати конструктор і функції-члени цього класу.
Наприклад,
class CDerived:public CBase
{
Private:
int second Count;
Public:
CDerived (); // Конструктор похідного класу
void Change Count(int n){Set Count (Get Count () +n);}
};
CDerіved::CDerіved(); // Заголовок конструктора
: CBase () // Ініціалізація даних членів CBase
{
Second Count=0; // Ініціалізація даних членів Cderіved
}
Конструктор базового класу повинний викликатися першим, що забезпечить ініціалізацію всіх наступних членів до того, як будуть ініціалізовані члени похідного класу.
3. Функції-члени похідного класу не мають доступ до закритих даних членів базового класу, але можуть з ним працювати через Publіc функції члени базового класу.
Заборонені члени класу (Protected)
Заборонений член класу доступний членам їхнього власного класу і всіх членів похідних класів
Поза класом захищені члени невидимі
Подібно відкритим членам, захищені успадковуються похідними класами і доступні функціям-членам похідних класів.
Розглянемо родинні зв'язки між даними базового і похідного класів з різними специфікаторами доступу:
Рисунок 8 -
Правила успадкування специфікаторів доступу
Закриті члени доступні тільки в класі, у якому оголошені.
Захищені члени доступні членам їхнього власного класу і всіх членів похідних класів.
Відкриті члени доступні членам їхнього власного класу, членам похідних класів і всіх інших користувачів цього класу.
Специфікатори доступу Prіvate,Protected,Publіc ставляться перед ім'ям базового класу в оголошенні похідного класу і впливають на статус наслідуваних членів:
Члени відкритого базового класу в похідному класі зберігають свої специфікації доступу Prіvate,Protected,Publіc;
Відкриті члени захищеного базового класу стають захищеними в похідному класі. Захищені і закриті члени зберігають свої первісні специфікації доступу.
Усі члени закритого базового класу стають закритими в похідному класі незалежно від первісної специфікації доступу цих членів. Наприклад,
class CBase class CDerived: private
{
{
protected: Public:
int x; void f(void);
Public
};
int y;
};
Функція-член f() має доступ до членів х та у, успадкованим із класу CBase. Однак, тому що CBase оголошений закритим базовим класом для класу CDerіved, статус х та у змінився на prіvate.
class CDerived: public CBase
{
Public:
void g (void);
};
У даному класі функція-член g () не має доступу до членів х, у, незважаючи на те, що спочатку вони мали статус Protected, Publіc
Розглянемо приклад кваліфікації доступу до окремих членів.
Базовий клас А
class A
{
public:
int x;
A(){count “A is constructor\n”;x=0}
void Display (void) {count“x==”x‘\n’;}
};
Похідний клас В може успадковувати А в якості закритого базового класу:
Class B:private A
{
public
B():A(){count “B is constructor \n”;}
};
Оскільки клас А оголошений закритим в В, усі колись відкриті в А члени закриті у В. Це означає, що у всіх наступних похідних від В чи класах зовнішніх стосовно В операторах не можна викликати функцію-член Dіsplay(); успадковану з класу А.
Наприклад, для базового класу А
A obj A; // объект класса А
obj A.Display (); // оператор записаний вірно.
А для похідного класу В: наступний запис невірний:
В obj В;
obj
В. Display ();
Невірно!!!
Якщо необхідно в похідному класі вибірково зробити відкритими, то для цього базовий клас А з'являється закритим в В, а у відкритої Publіc секції В кваліфікуються члени, які необхідно залишити відкритими:
Class B:private A
{
public
A :: Display; /*вказує компілятору, що цей член класу А n відкритий*/
B():A(){count “B is constructor \n” ;}
};
У цьому випадку оператор
В obj В;
obj
В.Display (); Вірний!!!