You are on page 1of 4

СТВОРЕННЯ ОБ'ЄКТІВ. ДОСТУП ДО ПОЛІВ ОБ'ЄКТІВ.

ПРИХОВУВАННЯ
ІНФОРМАЦІЇ

Клас (class ) - це структурований тип даних, який інкапсулює


(приховує,обмежує область досяжності) оголошення полів даних (атрибутів) та
функцій для їх опрацювання. Функції класу інакше називаються методами.
Дані, що мають класовий тип, називаються об'єктами, або екземплярами класу.
Клас використовується для позначення множини об'єктів, які мають
однакову структуру, поведінку та відношення з об'єктами інших класів.
Структура (зміст) класу називається його протоколом. Сукупність методів
класу, через які відбувається доступ до елементів класу, називається
інтерфейсом. Елементи класу (дані та методи) захищені оголошенням класу:
class назва_класу{
private:
// дані та методи;
protected:
// дані та методи;
public:
// дані та методи;
}
Клас С++ визначає три рівні захисту своїх елементів:
private (закриті) - діє за замовчуванням;
protected (захищені);
public (відкриті).
Закриті елементи можуть використовуватися тільки у межах класу.
Захищені елементи доступні у класі та у похідних від нього класах. Відкриті
елементи досяжні у класі та поза класом у межах дії встановленого простору
імен.
Клас надає зовнішнім функціям та класам можливість доступу до своїх
елементів за допомогою методів, розміщених у відкритій частині.
У протоколі класу дозволяється довільний порядок розміщення та
повторення секцій private, protected, public.
Розрізняють два стилі оформлення класів - Borland та Microsoft. У стилі
Borland секції класу розміщують у послідовності private - protected - public. У
стилі Microsoft секції класу розміщують у зворотному порядку: public -
protected - private.
У C++ не дозволяється здійснювати ініціалізацію даних класу при їх
оголошенні всередині класу (крім статичних констант). Для цього
використовують метод спеціального призначення, який називається
конструктором. Назва конструктора збігається з назвою класу. Конструктор не
повертає значення, може мати список параметрів, може бути перевантаженим.
У класі за замовчуванням за вжди існує конструктор без параметрів (void-
конструктор), конструктор копіювання, деструктор та операторна функція
присвоєння об'єктів.
Ініціалізація даних конструктором може здійснюватися у списку
ініціалізації після символу двокрапка, або в тілі конструктора. Константні поля
даних, дані з типом посилання, успадковані дані, дані з типом іншого класу
(якщо перекритий конструктор за замовчуванням) ініціалізуються
конструктором після символу ' : '.
Конструктори автоматично викликаються при створенні об'єктів у
сегментах коду, стека або у динамічній пам'яті.
Якщо об'єкт виходить із області досяжності коду програми, він
автоматично знищується. Наприклад, перед завершенням функції знищуються
всі її локальні об'єкти. Для цього викликається метод спеціального призначення
- деструктор. Назва деструктора складається з символу ~ (тильда) та назви
класу. Деструктор не має параметрів і не повертає значення. Деструктор не
може бути перевантажений.
Крім членів класу, оголошення класу може містити прототипи дружніх
(friend) функцій або класів. Методи класу та дружні до класу функції мають
можливість доступу до елементів усіх частин класу. Рівні захисту діють тільки
на членів класу і не діють на друзів класу.
Визначати методи та дружні функції можна як у класі, так і поза класом.
Методи класу та дружні функції, крім операторних, можуть мати
параметри за замовчуванням, які задаються в оголошеному у класі прототипі
або у заголовку при визначенні функції у класі або за межами класу. Після
оголошення у класі дозволяється довільний порядок звернення до методів
(догори або донизу програми).
Елементи класу (окрім друзів, конструкторів, деструктора та операції
присвоєння) допускають успадкування, яке полягає у використанні оголошень
даних та методів базового класу у похідному класі.
Приклад оголошення та застосування класу:
class Base

int х; // елемент даних

// (за замовчуванням private)

protected:

int у; // елемент даних

public:

int z; // елемент даних

// перевантажені конструктори

Base(){x=y=z=0;}

Base(int a){x=a; y=z=0;}

Base(int a, int b):x(a),у(b){z=0;}

Base(int a, int b, int c);

// деструктор

~BaseO {}

// метод класу
void print () {cout<<x<<' ,<<y<<" "<<z<<endl;}

// дружня функція

friend void output(Base a);

};

// визначення конструктора поза класом

Base::Base(int a, int b, int c)

{x = а; у = b; z = c;}

// визначення дружньої функції

void output(Base a)

{cout<<a. x<<" " <<a. y<< " " <<a. z<<endl;}

// головна функція

void main()

// оголошення об'єктів

Base objl; //викликається конструктор без параметрів

Base obj2(1); //викликається конструктор з одним параметром

Base obj3(1,2); //викликається конструктор з двома параметрами

Base obj4(1,2,3); //викликається конструктор з трьома параметрами

// виклик методу

obj4.print(); //123

// виклик дружньої функції

output(obj4); //123

You might also like