- •Лабораторна робота №1
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Завдання 3
- •Теоретичні відомості Масиви динамічної пам'яті
- •Приклад виконання завдання 1
- •Лістинг програми
- •Приклад виконання завдання 2
- •Лістинг програми
- •Приклад виконання завдання 3
- •Лістинг програми
- •Контрольні запитання
- •Лабораторна робота №2
- •Порядок виконання роботи
- •Ознайомитися з теоретичними відомостями.
- •Завдання 1
- •Завдання 2
- •Теоретичні відомості Читання і запис текстових файлів
- •Читання і запис бінарних файлів
- •Відкриття бінарних файлів
- •Файли з послідовним доступом
- •Запис даних у файл з послідовним доступом
- •Файли з довільним доступом
- •Приклад виконання завдання 1
- •Приклад виконання завдання 2
- •Контрольні запитання
- •Лабораторна робота №3
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Завдання 3
- •Теоретичні відомості
- •Обмеження доступу до членів класу Клас
- •Вбудовані функції-члени
- •Приклад виконання завдання 1.
- •Приклад виконання завдання 2.
- •Приклад виконання завдання 3.
- •Контрольні запитання
- •Лабораторна робота №4
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Теоретичні відомості Конструктори і деструктори
- •Правила роботи з конструкторами і деструкторами
- •Варіант 10. Розробити описовий алгоритм, схему алгоритму і написати метод для підрахування кількості слів в текстовому файлі.
- •Приклад виконання завдання 2
- •Контрольні запитання
- •Лабораторна робота №5
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Теоретичні відомості Принципи спадкування в ооп
- •Оголошення похідних класів
- •Приклади специфікаторів доступу
- •Конструктори похідного класу
- •Функції члени похідного класу
- •Заборонені члени класу (Protected)
- •Приклад виконання Завдання 1
- •Контрольні запитання
- •Лабораторна робота №6
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Перевантаження операторів
- •Приклад виконання завдання
- •Приклад виконання завдання
- •Приклад виконання завдання
- •Приклад виконання завдання
- •Контрольні запитання
- •Лабораторна робота №7
- •Порядок виконання роботи
- •Завдання 1.
- •Завдання 2.
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота №8
- •Порядок виконання роботи
- •Завдання 1
- •Контрольні запитання
- •Лабораторна робота №9
- •Порядок виконання роботи
- •Завдання 1.
- •Теоретичні відомості Множинне спадкування
- •Контрольні запитання
- •Лабораторна робота №10
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Шаблони
- •Параметризовані класи
- •Визначені об’єкти-потоки
- •Операції поміщення та вилучення
- •Приклад виконання Завдання з варіанту 2
- •Контрольні запитання.
- •Лабораторна робота №11
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Приклад виконання Завдання 1
- •Приклад виконання Завдання 2
- •Контрольні запитання
- •Лабораторна робота №12
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Вставити Таблицю !!!!!! Приклад розробки програми
- •Контрольні запитання
Конструктори похідного класу
Основні правила для створення конструкторів:
У похідному класі є конструктор, якщо він є в базовому;
Конструктор похідного класу повинний викликати конструктор базового класу. Наприклад, CDerіved():CBase() {}
При виклику імені конструктора базового класу йде після імені конструктора похідного класу.
Конструктор похідного класу може містити операторы:
CDerіved():CBase(){count <<"Іnіutіalіzed"}
Конструктор похідного класу може бути описаний за межами класу.
Наприклад,
У класі class CDerіved: publіc CBase
{
publіc:
CDerіved ();
voіd Change Count (іnt n){Set Count (Get Count()+n); }
};
ім'я класу ім'я конструктора
CDerіved::CDerіved (); // заголовок конструктора
: CBase // виклик конструктора базового класу
{
оператори конструктора
}
У даному прикладі виконується ініціалізація всіх членів, успадкованих з базового класу. У даному випадку конструктор базового класу встановлює закритий член count рівним нулю.
Функції члени похідного класу
Основні правила використання:
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)
Заборонений член класу доступний членам їхнього власного класу і всіх членів похідних класів
Поза класом захищені члени невидимі
Подібно відкритим членам, захищені успадковуються похідними класами і доступні функціям-членам похідних класів.
Розглянемо родинні зв'язки між даними базового і похідного класів з різними специфікаторами доступу:
Правила успадкування специфікаторів доступу
Закриті члени доступні тільки в класі, у якому оголошені.
Захищені члени доступні членам їхнього власного класу і всіх членів похідних класів.
Відкриті члени доступні членам їхнього власного класу, членам похідних класів і всіх інших користувачів цього класу.
Специфікатори доступу 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 (); Вірний!!!