Лабораторна робота №5
Тема: Розробка класів на мові С++
Мета:
Отримати практичнінавички створення класів та об’єктів
Навчитись використовувати технологію об’єктно-орієнтованого програмування
Отримати практичні навички створення багатомодульних програм
Порядок роботи:
Ознайомитись з теоретичними відомостями щодо теми роботи
Ознайомитись з прикладом програми
Виконати розробку програми згідно індивідуального завдання.
Написати та відлагодити програму
Скласти звіт по роботі
Теоретичні відомості
Призначення поняття класу полягає в тому, щоб надати програмістові інструмент для створення нових типів, таких же зручних в обігу наскільки і вбудовані типи. У ідеалі тип оп-ределяемый користувачем, способом використання повинен відрізнятися від вбудованих типів, тільки способом створення.
Клас є абстрактним типом даних, визначуваним користувачем, і є моделлю реально об'єкту у вигляді даних і функцій для роботи з ними.
Дані класу називаються полями класу, а функції класу – методами. Поля і методи називаються елементами класу. Опис класу виглядає так:
class < ім'я > {
[ private: ]
<опис прихованих елементів >
public:
< опис доступних елементів>
}; //опис закінчується крапкою з комою.
Клас може включати специфікатор видимості:
private – визначає, що поля і повідомлення до появи іншого специфікатора видимості або до кінця класу не доступні поза класом. Встановлюється автоматично за умовчанням, якщо не вказаний інший специфікатор видимості.
public – всі поля і методи доступні всім, кому доступний цей клас. Все, що описане після даного специфікатора видимості є інтерфейсом класу.
protected – визначає, що всі поля і повідомлення не доступні нікому, окрім спадкоємців цього класу.
Правила роботи з класами:
ініціалізація полів класу при їх описі не допускається.
Поля класу ініціалізувалися за допомогою конструктора при створенні екземпляра класу.
Поля класу можуть бути будь-якого типу, окрім типу цього ж класу, але поле може бути типу покажчик на цей клас.
Поля можуть бути описані з модифікатором const. При цьому такі поля можуть ініціалізувати тільки один раз.
Поля можуть бути описані з модифікатором static.
При проектуванні об'єктний – орієнтованих програм слід звертатися до полів через повідомлення (методи), а не безпосередньо до полів, тобто функцій-членів повинно бути стільки, скільки допустимих операцій над полями хоче визначити програміст.
Класи можуть визначатися як поза блоками і бути глобальними, так і усередині блоків і бути локальними. Клас може визначатися усередині класу.
Якщо клас оголошений як глобальний і екземпляр цього класу оголошений як глобальний, він ініціалізувався раніше, ніж починає працювати main.
Кожен клас повинен мати зумовлений метод, ім'я якого співпадає з ім'ям класу. Цей метод називається конструктором.
Конструктори
Конструктор призначений для ініціалізації об'єкту і викликається автоматично при його створенні.
Основні властивості конструкторів:
Конструктор не повертає значення, навіть типу void. Не можна отримати покажчик на конструктор.
Клас може мати декілька конструкторів з різними параметрами для різних видів ініціалізації (при цьому використовується механізм перевантаження).
Конструктор, що викликається без параметрів, називається конструктор за умовчанням.
Параметри конструктора можуть мати будь-який тип, окрім цього ж класу. Можна задавати значення параметрів за умовчанням. Їх може містити тільки один з конструкторів.
Якщо програміст не вказав жодного конструктора, компілятор створює його автоматично. Такий конструктор викликає конструктори за умовчанням для полів класу і конструктори за умовчанням базових класів. У разі, коли клас містить константи або посилання, при спробі створення об'єкту класу буде видана помилка, оскільки їх необхідно ініціалізувати конкретними значеннями, а конструктор за умовчанням цього робити не уміє.
Конструктори не успадковуються.
Конструктори не можна описувати з модифікаторами const, virtual і static.
Конструктори глобальних об'єктів викликаються до виклику функції main. Локальні об'єкти створюються, як тільки стає активною область їх дії. Конструктор запускається і при створенні тимчасового об'єкту (наприклад, при передачі об'єкту з функції).
Конструктор викликається, якщо в програмі зустрілася яка-небудь з синтаксичних конструкцій:
имя_класса имя_объекта [ (список параметрів) ];
имя_класса (список параметрів);
имя_класса имя_объекта = вираз;