Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції ООП1.doc
Скачиваний:
7
Добавлен:
17.11.2019
Размер:
554 Кб
Скачать
☆

3. Опис об'єкту: інтерфейс і реалізація.

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

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

методи, а не поля даних. Поля даних повинні бути скритими (private). Це дає можливість в подальшому змінити реалізацію класу без змін в його інтерфейсі, а також регулювати доступ до полів класу з допомогою представлених методів.

Тип адрес.

Поняття адреси.

Для розв'язування специфічних для мови С++ задач (побудова графічних зображень і динамічних ефектів) потрібно знати не тільки значення деякої змінної, але і її адресу в оперативній пам'яті комп'ютера. Для визначення адреси даного у пам'яті є операція визначення адреси.

& < назва даного >

Приклад

ini а = 25;

сout << "Адреса змінної а = " << &а;

У результаті виконання цих команд на екрані одержимо.

Адреса змінної а = 0х

Адреси зображаються шіснадцятковими числами і під час кожного виконання програми можуть бути різними.

5. Ідентифікація вказівником.

Вказівник - другий основний спосіб ідентифікації об'єкту.

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

< тип даного > *< назва вказівника >

Можна створювати вказівними на сталі, змінні, функції, інші вказівники тощо. Особливо ефективною є робота з вказівниками.

Приклад 1.

int *nomer;

float *rist, *prtA, *prtB;

Тут оголошено вказівник на цілий тип nomer і вказівники на дійсний тип rist, prtА, prtВ.

Надати значення вказівникам можна так:

< назва вказівника > = < адреса змінної >;

Приклад 2. Нехай у програмі оголошені змінні

int n = 10;

float stud1, stud2, stud3;

Тоді можна визначити вказівними на ці змінні:

nomer =&n;

rist = &stud1;

rist = &stud3;

Вказівники застосовують, зокрема, для надання значень змінним:

rist = &stud1;

*rist = 1.65;

Тут вказівник rist вказуватиме на адресу змінної stud1, а власне змінній stud1 буде присвоєно значення 1.65.

Вказівники на об'єкти працюють так само як і вказівники на прості типи даних.

class Student

{

public:

int Predm;

float serball;

};

int main ( )

{

Student s;

Student* pS; \\ Створюємо вказівник на об’єкт типу Student

pS = &s; \\ Заставляємо pS вказувати на об’єкт s

return 0;

}

Звернутись до члену serball об'єкту s з допомогою вказівника можна так:

………………………………………………….

(*pS). serball = 3.5;

..............................

Тут *рS вираховує об'єкт, на який вказує рS, а відповідно serball звертається до члену цього об'єкту.

Використання стрілок.

Для доступу до членів об'єкту С++ представляє більш зручніший оператор ->, таким чином, рS -> serball еквівалентне (*рS). serball.

6. Посилання

До даних можна звертатись за допомогою імен або посилань. Посилання слугує для надання ще одного імені (псевдоніма, синоніма) даному. Посилання утворюються так:

< тип даного > & < назва посилання > = <назва змінної>

Приклад

float &cina = suma;

В такому випадку посилання cina і змінна suma вказуватимуть на одну і ту саму адресу в пам'яті комп'ютера. Для посилань не резервується додаткова оперативна пам'ять.

У С++ можна утворювати посилання та дані а не на їхні типи. Значення посилання ініціалізується одразу під час його оголошення, тобто на етапі компіляції. У нашому випадку посилання cina проініціалізоване змінною suma. Отже, якщо suma = 11, то і значення посилання cina = 11.

Під час зміни значення посилання змінюється значення змінної, на яке це посилання вказує. Отже, якщо у програмі записати cina = 27, то зміна suma = 27.

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

Заняття №7

Тема: Обєктно – орієнтовані засоби С++.

Мета: Використання віртуальних функцій та функцій "друзів". Освоїти

використання статичних елементів классу та перегружених функцій.

План заняття:

  1. Об'єктні типи дата.

  2. Конструктори і деструктори.

  3. Похідні класи. Приклад побудови системи класів.

  4. Віртуальні функції.

  1. „Дружні" функції.

  2. Статистичні компоненти класу.

  3. Пере визначення (перегрузка) операцій.