Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP.docx
Скачиваний:
6
Добавлен:
12.11.2019
Размер:
347.23 Кб
Скачать

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

Класи і об'єкти в С++

Мета|ціль|. Одержати|отримати| практичні навички|навички| реалізації класів на С++

Короткі теоретичні відомості Клас.

Клас  фундаментальне поняття С++, він лежить в основі багатьох властивостей С++. Клас надає механізм для створення|створіння| об'єктів. У класі відбиті найважливіші концепції об'єктно-орієнтованого програмування: інкапсуляція, спадкоємство, поліморфізм.

З погляду синтаксису, клас в С++  це структурований тип, утворений на основі вже існуючих типів.

У цьому сенсі|змісті,рації| клас є|з'являється,являється| розширенням поняття структури. У простому випадку клас можна визначити за допомогою конструкції:

тип_класса ім’я_класу{ список_членів_класу};

де тип_класу одне з службових слів class, struct, union;

ім’я_класу – ідентифікатор;

список_членів_класу – визначення і описи даних, що типізуються, і функцій, що належать класу.

Функції – це методи класу, що визначають операції над об'єктом.

Дані – це поля об'єкту, що утворюють його структуру. Значення полів визначає стан об'єкту.

Приклади|зразки|.

struct date // дата

{int month,day,year; // поля: місяць, день, рік

void set(int,int,int); // метод – встановити дату

void get(int*,int*,int*); // метод – одержати|отримати| дату

void next(); // метод – встановити наступну|таку| дату

void print(); // метод – вивести дату

};

struct class complex // комплексне число

{double re,im;

double real(){return(re);}

double imag(){return(im);}

void set(double x,double у|в,біля|){re = x; im = у|в,біля|;}

void print(){cout<<“re = “<<re; cout<<“im = “<<im;}

};

Для опису об'єкту класу (екземпляра|примірника| класу) використовується конструкція

ім’я_класу ім’я_об’єкту;

date today,my_birthday;

date *point = &today; // покажчик на об'єкт типу date

date clim[30]; // масив об'єктів

date &name = my_birthday; // посилання|заслання| на об'єкт

В об'єкти, що визначаються, входять дані, відповідні членам  даним класу. Функції  члени класу дозволяють обробляти дані конкретних об'єктів класу. Звертатися|обертатися| до даних об'єкту і викликати|спричиняти| функції для об'єкту можна двома способами. Перший за допомогою “кваліфікованих” імен:

ім’я_об’єкту ім’я_даного

ім’я_объекту ім’я_ функції

Приклад:

complex x1,x2;

x1.re = 1.24;

x1.im = 2.3;

x2.set(5.1,1.7);

x1.print();

Другий спосіб доступу використовує покажчик на об'єкт

покажчик_ на об'єкт –>ім’я_компонента

complex *point = &x1; // або point = new complex;

point –>re = 1.24;

point –>im = 2.3;

point –>print();

Доступність компонентів класу.

У розглянутих|розгледіти| раніше прикладах|зразках| класів компоненти класів є|з'являються,являються| загальнодоступними. У будь-якому місці програми, де “видно|показно|” визначення класу, можна дістати доступ до компонентів об'єкту класу. Тим самим не виконується основний принцип абстракції даних – інкапсуляція (приховування|приховання|) даних усередині об'єкту. Для зміни видимості компонент у визначенні класу можна використовувати специфікатори доступу: public, private, protected.

Загальнодоступні (public) компоненти доступні в будь-якій частині|частці| програми. Вони можуть використовуватися будь-якою функцією як усередині даного класу, так і поза|зовні| ним. Доступ ззовні здійснюється через ім'я об'єкту:

ім’я_об’єкту. ім’я_члена_класу

посилання_на_об’єкт. ім’я_члена_класу

покажчик_на_об’єкт. ім’я_члена_класу

Приватні (private) компоненти локалізовані в класі і не доступні ззовні. Вони можуть використовуватися функціями – членами даного класу і функціями – “друзями” того класу, в якому вони описані.

Захищені (protected) компоненти доступні усередині класу і в похідних класах - нащадках.

Змінити|поміняти| статус доступу до компонентів класу можна і за допомогою використання у визначенні класу ключового|джерельного| слова class. В цьому випадку всі компоненти класу за умовчанням є|з'являються,являються| приватними

Приклад|зразок|.

class complex

{

double re, im; // private за умовчанням

public:

double real(){return re;}

double imag(){return im;}

void set(double x,double у|в,біля|){re = x; im = у|в,біля|;}

};

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

Недоліком|нестачею| розглянутих|розгледіти| раніше класів є|з'являється,являється| відсутність автоматичної ініціалізації створюваних об'єктів. Для кожного новостворюваного об'єкту необхідно було викликати|спричинити| функцію типу set (як для класу complex) або явно присвоювати значення даним об'єкту. Проте|однак| для ініціалізації об'єктів класу в його визначення можна явно включити спеціальну компонентну функцію, звану конструктором. Формат визначення конструктора наступний|слідуючий|:

ім'я _класу(список_форм_параметрів){ оператори_тіла_конструктора}

Ім'я цієї компонентної функції за правилами мови|язика| С++ повинне співпадати|збігатися| з|із| ім'ям класу. Така функція автоматично викликається|спричиняється| при визначенні або розміщенні в пам'яті за допомогою оператора new кожного об'єкту класу.

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