- •1. Історія розвитку мов програмування.
- •2. Структурне та об'єктно - орієнтоване програмування.
- •Процедурне програмування
- •Тема: Об'єктно — орієнтований підхід у програмуванні.
- •Суть об'єктно - орієнтовного підходу до програмування.
- •Особливості та переваги об'єктно - орієнтованого програмування.
- •Базові поняття та терміни
- •Наслідування, інкапсуляція та поліморфізм.
- •Заняття №3.
- •Написання програми.
- •2. Базові типи та описи даних.
- •Цілі числа
- •1. Основні поняття припроцесорної обробки. Компонування декількох файлів в одну програму
- •2. Припроцесорні змінні
- •3. Макровизначення (макроси).
- •4. Умовна компіляція
- •Заняття №5 Тема: Специфікація, об'єктів на основі абстрагування
- •1. Поняття класу об'єктів.
- •Формат класу.
- •Звернення до членів класу
- •Заняття №6 Тема: Ідентифікація об'єктів.
- •1. Ідентифікація назвою.
- •2. Область доступу ідентифікаторів
- •3. Опис об'єкту: інтерфейс і реалізація.
- •Тип адрес.
- •5. Ідентифікація вказівником.
- •6. Посилання
- •Віртуальні функції.
- •„Дружні" функції.
- •Тема: Інтерпретація об'єктів.
- •1. Поліморфізм
- •Тема: Інтерпретація об'єктів (заняття 2)
- •Наслідування властивостей.
- •Множинне наслідування.
- •1. Поняття „час життя" об'єкта та „область видимості".
- •Область видимості імен.
- •Тема: Динамічні структури об'єктів
- •1. Зв'язана організація пам'яті.
- •2. Асоціативні структури.
- •3. Списки. Черги. Рекурсивні структури. Набори. Дерева.
- •Тема: Процеси в об'єктах. Інкапсуляція
- •Логічний паралелізм. Схема сопрограм
- •Список використаної літератури
„Дружні" функції.
Функції — друзі класу являються звичайними функціями; єдина відмінність – наявність прав доступу до закритих членів об'єктів даного класу. Щоб функція стала другом класу її прототип необхідно включити в
визначення класу, використовуючи при цьому ключове слово ітіепд. Прототип може знаходитися як в розділі закритих членів, так і в розділі відкритих членів (але, так як у будь - якому випадку відповідна йому функція буде відкритою, то краще поміщати її в розділ відкритих членів). Синтаксис класу з використанням функцій - друзів
class Ім'я класу
{
public:
friend Прототип функції - друга 1.
friend Прототип функції - друга 2.
\\ Функції - члени не обов 'язково повинні іти першими. Вони можуть чергуватися з прототипами функцій - членів.
Прототипи функцій - членів.
private:
Оголошення та прототипи закритих членів
};
Приклад
class FuelTank
{
public:
friend double need_to_fill (FuelTank the_tank);
\\ змінним - членам об 'єкту іНе іапк присвоєні значення. Повертає
кількість літрів, які необхідно для заповнення баку.
FuelTank (double the_capacity, double the_level );
FuelTank ( );
void input ( );
void output ( );
private:
double capacity;
double level;
};
Функції - друзі не являються функціями - членами. Вони визначаються і викликаються так само як звичайні функції.
Заняття №8
Тема: Інтерпретація об'єктів.
Мета: Освоїти принципи поліморфізму. Узгодження типів. План заняття:
Поліморфізм.
Узгодження типів.
Функції перетворення \ приведення типів. Запис з варіантами.
Перевантаження функцій.
У мові С++ допускається використовувати одне і те саме ім'я функції для різних наборів аргументів. Це називається перевантаженням, функцій, або поліморфізмом. Перевантаження використовують, коли необхідно викликати функцію з аргументами різних типів, або коли функція залежить від різної кількості аргументів. У таких випадках необхідно кожну функцію оголосити й описати окремо. Під час її виклику компілятор автоматично проаналізує сигнатури та виконає код відповідної функції.
Зауваження 1. Для функцій, які відрізняються типом значення, яке вони повертають, і мають однаковий набір аргументів, перевантаження у мові С++ не визначено, тобто їм надавати однакові імена не можна.
Приклад 1. Використовуючи шаблони функції, скласти програму для упорядкування трьох уведених даних або дробового, або цілого типу.
<<include < iostream.h >
<<include < conio.h >
// Оголошення шаблона функції
template <class Mytype >
void Sort(Mytype n1, Mytype n2, Mytype n3);
void main( )
{
clrscr ( );
int і1, і2, iЗ, k; char с1, с2, c3;
cout << Введіть 1 для впорядкування символів, 2 - чисел\п";
cin >> k;
if (k == 1) {
cout << "Уведіть три символи";
cin >> c1 >> с2 >> с3;
Sort (с1, с2, с3);
}
if ( k == 2 )
{
cout << "Уведіть три числа":
cin >> I1 >> I2 >> I3;
Sort (I1,I2, І3);
} getch ( );
}
template < class Mytype > // Опис шаблона функції
void Sort(Mytype n1, Mytype n2, Mytype n3)
{
Mytype c;
if (n1 > n2) {с = n1; n1 = n2; n2 = с;} if (n2 > nЗ) {с = n2; n2 = n3; n3 = с;)
if (n1 > n2) {с = n1; n1 = n2; n2 = с;}
cout << n1 << “\t” << n2 << “\t” << n3;
}
