Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5.doc
Скачиваний:
5
Добавлен:
21.02.2016
Размер:
165.89 Кб
Скачать

Лабораторна робота №5

Тема: Розробка класів на мові С++

Мета:

  • Отримати практичнінавички створення класів та об’єктів

  • Навчитись використовувати технологію об’єктно-орієнтованого програмування

  • Отримати практичні навички створення багатомодульних програм

Порядок роботи:

  1. Ознайомитись з теоретичними відомостями щодо теми роботи

  2. Ознайомитись з прикладом програми

  3. Виконати розробку програми згідно індивідуального завдання.

  4. Написати та відлагодити програму

  5. Скласти звіт по роботі

Теоретичні відомості

Призначення поняття класу полягає в тому, щоб надати програмістові інструмент для створення нових типів, таких же зручних в обігу наскільки і вбудовані типи. У ідеалі тип оп-ределяемый користувачем, способом використання повинен відрізнятися від вбудованих типів, тільки способом створення.

Клас є абстрактним типом даних, визначуваним користувачем, і є моделлю реально об'єкту у вигляді даних і функцій для роботи з ними.

Дані класу називаються полями класу, а функції класу – методами. Поля і методи називаються елементами класу. Опис класу виглядає так:

class < ім'я > {

[ private: ]

<опис прихованих елементів >

public:

< опис доступних елементів>

}; //опис закінчується крапкою з комою.

Клас може включати специфікатор видимості:

  • privateвизначає, що поля і повідомлення до появи іншого специфікатора видимості або до кінця класу не доступні поза класом. Встановлюється автоматично за умовчанням, якщо не вказаний інший специфікатор видимості.

  • publicвсі поля і методи доступні всім, кому доступний цей клас. Все, що описане після даного специфікатора видимості є інтерфейсом класу.

  • protectedвизначає, що всі поля і повідомлення не доступні нікому, окрім спадкоємців цього класу.

Правила роботи з класами:

  • ініціалізація полів класу при їх описі не допускається.

  • Поля класу ініціалізувалися за допомогою конструктора при створенні екземпляра класу.

  • Поля класу можуть бути будь-якого типу, окрім типу цього ж класу, але поле може бути типу покажчик на цей клас.

  • Поля можуть бути описані з модифікатором const. При цьому такі поля можуть ініціалізувати тільки один раз.

  • Поля можуть бути описані з модифікатором static.

  • При проектуванні об'єктний – орієнтованих програм слід звертатися до полів через повідомлення (методи), а не безпосередньо до полів, тобто функцій-членів повинно бути стільки, скільки допустимих операцій над полями хоче визначити програміст.

  • Класи можуть визначатися як поза блоками і бути глобальними, так і усередині блоків і бути локальними. Клас може визначатися усередині класу.

  • Якщо клас оголошений як глобальний і екземпляр цього класу оголошений як глобальний, він ініціалізувався раніше, ніж починає працювати main.

  • Кожен клас повинен мати зумовлений метод, ім'я якого співпадає з ім'ям класу. Цей метод називається конструктором.

Конструктори

Конструктор призначений для ініціалізації об'єкту і викликається автоматично при його створенні.

Основні властивості конструкторів:

  • Конструктор не повертає значення, навіть типу void. Не можна отримати покажчик на конструктор.

  • Клас може мати декілька конструкторів з різними параметрами для різних видів ініціалізації (при цьому використовується механізм перевантаження).

  • Конструктор, що викликається без параметрів, називається конструктор за умовчанням.

  • Параметри конструктора можуть мати будь-який тип, окрім цього ж класу. Можна задавати значення параметрів за умовчанням. Їх може містити тільки один з конструкторів.

  • Якщо програміст не вказав жодного конструктора, компілятор створює його автоматично. Такий конструктор викликає конструктори за умовчанням для полів класу і конструктори за умовчанням базових класів. У разі, коли клас містить константи або посилання, при спробі створення об'єкту класу буде видана помилка, оскільки їх необхідно ініціалізувати конкретними значеннями, а конструктор за умовчанням цього робити не уміє.

  • Конструктори не успадковуються.

  • Конструктори не можна описувати з модифікаторами const, virtual і static.

  • Конструктори глобальних об'єктів викликаються до виклику функції main. Локальні об'єкти створюються, як тільки стає активною область їх дії. Конструктор запускається і при створенні тимчасового об'єкту (наприклад, при передачі об'єкту з функції).

  • Конструктор викликається, якщо в програмі зустрілася яка-небудь з синтаксичних конструкцій:

имя_класса имя_объекта [ (список параметрів) ];

имя_класса (список параметрів);

имя_класса имя_объекта = вираз;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]