ТОП 10:

Використання конструктора та деструктора.



С ++ позволяє визначити в середині класу спеціальну функцію – член , яка

автоматично викликається при створенні цього класу. Ця функція - клас називається

конструктором яка ініціалізує об’єкт , приводячи його в деяке необхідне початкове

значення. Окрім конструктора в класі можна визначити деструктор , який буде

викликатися

при знищенні об’єкту.

Конструктор – це функція – член, яка викликається автоматично під час створення

об’єкту відповідного класу. Основною задачею конструктора являється ініціалізація об’єкту,

яка приводить його в деякий конкретний початковий стан. Конструктор повинен мати таке

ж ім’я , що і клас. (Таким чином компілятор зможе визначити, що саме функція - член є

конструктором ). Ще одною властивістю конструктора є те , що він не повертає ніякого

значення, оскільки викликається автоматично.

Об’єкти класу знищуються так само як і створюються. Якщо в класі може

існувати конструктор, то в ньому може існувати спеціальна функція для знищення об’єкту.

Така функція - член називається деструктором.

Клас може запросити в свого об’єкту деякі ресурси з допомогою конструктора;

Ці ресурси повинні бути звільнені при знищенні об’єкту. Наприклад , якщо конструктор

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

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

Деструктор має теж ім’я що і клас , але перед ним стоїть символ тильди ( ~ ). Як і

конструктор деструктор не повертає значень. З врахуванням скозаного деструктор класу

Student буде мати наступний вигляд :

 

class Student

{

public :

Student ( ) // конструктор

{ cout << “ Створюємо об’єкт Student / n “ ;

// . . . . . . . . і н і ц і а л і а з а ц і я . . . . .

}

~ Student ( ) // деструктор

{

// будь-які використані ресурси звільняють тут

}

// . . . . . . . і н ш і в і д к р и т і ч л е н и . . . . . . . . . . .

protected :

// . . . . . п о л я к л а с у . . . . . . . . . . .

} ;

Завдання.

1. Написати програму , в якій визначений клас комплексних чисел

Complex( з полями дійсна та уявна частина чисел ) , яка додає

два комплексних числа. Для Complex необхідно визначити функцію

член Add, що додає числа.

 

2. Написати програму , яка демонстреє використання конструктора і

деструктора:

- створює об’єкт

- присвоює значення елементам об’єкт

- виводить значення елементів об’єкт

- видаляє об’єкт.

 

3. Написати програму , яка пропонує вам ввести довжину і ширину

прямокутника ( у даному прикладі прямокутник є об’єктом ). Потім

програма виводить значення довжини , ширини і площі визначеного

вами прямокетника.

 

Контрольні запитання.

 

1. Що таке клас ?

2. Синтаксис побудови класу ?

3. Які рівні доступу мають класи в С++ ?

4. Що таке функція – член ?

5. Як звернутись до членів класу ?

6. Як оголосити масив об’єктів класу ?

7. Що таке конструктор ?

8. Для чого використрвують конструктор ?

9. Що таке деструктор ?

 

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

Тема :Робота з динамічними структурами .

Мета : Ознайомлення з динамічними структурами даних: списками , стеками ,

чергами. Їх практичне застосування.

 

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

Динамічні структури даних.

Пам’ять під дані виділяється або на етапі компіляції ( в цьому випадку необхідний

обсяг повинен бути відомий до п очатку виконання програми , тобто заданий в вигляді

константи ) , або під час виконання програми з допомогою операції new( необхідний об’єм

повинен бути відомий до розподілу пам’яті ). В обох випадках виділяється нерозривна

ділянка пам’яті.

Якщо до початку роботи з даними неможливо визначити обсяг необхідної пам’яті,

пам’ять буде виділятися по мірі необхідності окремими блоками, зв’язаними один з одним

вказівниками. Такий спосіб організації даних називається динамічними структурами даних,

оскільки їх розмір змінюється під час виконання програми. Із динамічних структур в

програмах найчастіше використовують лінійні стеки, стеки, черги та бінарні дерева. Вони

відрізняють способом зв’зку окремих елементів та допустимими операціями.

Динамічні структури широко використовують для розв’язання задач сортування,

оскільки впорядкування динамічних структур не потребує перестановки елементів , а лише

змінює вказівник на ці елементи.

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

Елементи одно направленого списку складається з двох частин : самого даного та вказівника

на наступний елемент списку.

· Формування списку;

· Додавання елементу в кінець списку;

· Зчитування елементів;

· Вставка елементів в задане місце списку;

· Видалення елементу;

· Впорядкування списку.

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

 

struct< назва типу списку >

{

< тип поля 1 > < назва поля 1 > ;

. . . . . . . . . . . . . . . . . . .;

< тип поля N > < назва поля N > ;

< тип вказівника > * < назва типу списку > ;

} ;

< назва типу списку > * < назва вказівника 1 > ,……. .* < назва

вказівника N > ;

Приклад :

Створимо структуру про річку, яка містить поля : назва, довжина річки у кілометрах

та площа басейну у квадратних кілометрах, і поставимо їй у відповідність елементи списку:

 

structrika

{

char nazva [ 20 ] ;

int dov ;

long int plo ;

rika * dali ;

// створюємо поле вказівник на тип rika

} ;

rika * element , * pershuj , * poperednij , * novuj ;

 

Тут element - вказівник на поточний елемент списку , element -> dov -динамічна змінна

цілого типу , яка містить значення довжини ріки , а element -> dali - вказівник на наступний

елемент списку. Звідси випливає , що element -> dali ->dov - це довжина наступної річки , а

element -> dali -> dali - вказівник на ще одну стрічку.

Стек- це структура даних , у якій елемент , записаний останнім , зчитують ( він

доступний для опрацювання ) першим. Принцип “ останній прийшов - першим пішов “

використовується в багатьох технічних пристроях і в побуті : посадка пасажирів у вагон ,і.т.д.

Стек використовується у програмування, зокрема, для реалізації рекурсії. Рекурсія виконується

так : спочатку всі виклики нагромаджуються ( аналогія така : пружина стикається ) , а потім

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

Стек описують і створюють у пам’яті за допомогою типу даних. Структура над

елементами стека визначені лише дві операції : занесення елемента у стек та вилучення

елементу зі стеку. У стеку завжди доступним є лише верхній елемент , який називають

вершиною стеку.

Черга- це структура даних , у якій елемент, записаний першим , зчитуємо першим.

Тут діє принцип “ перший прийшов - перший вийшов “ , наприклад черга в магазині.

Чергу , як і стек , описують з використанням структури. Над елементами черги

визначені операції : занесення елемента у чергу та забрати з черги. У черзі доступний

лише нижній елемент.

 

Завдання.

1.Написати програм , використовуючи зв’язаний список , для зберігання

списку об’єкті,що містять імена студентів та їх номера соціального

страхування.

 

2. Введіть у стек послідовність символів. Вилучіть з цієї послідовності

всі літери “ а “.

 

3. Ввести послідовність символів , де “ а “ є ознакою закінчення

введення. Вивести введені символи на екран у зворотньому порядку.

Розв’яжіть цю задачу із застосуванням черги.

 

Контрольні запитання.

1. Що таке динамічні структури даних ?

2. Що таке вказівник ?

3. Що таке лінійний список ?

4. Як описується список ?

5. Які операції можна виконувати над списком ?

6. Що таке стек ?

7. Що таке черга ?

 

 

Лабораторна робота № 9.

Тема :Наслідування та віртуальні методи.

Мета :Освоїти принцип наслідування. Практичне використаннянаслідування.

 

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

Наслідування- один з основоположних принципів об’єктно - орієнтованого

програмування. Під наслідуванням розуміють можливість оголошення похідних типів на

основі раніше оголошених типів.

Для класу , в С++ реалізується можливість наслідування. Перш за все , слід

Розрізняти наслідування і вбудовування. Вбудовування припускає можливість оголошення в

класі окремих членів класу на основі рініше оголошених класів. У разі ж наслідування

новий клас в буквальному розумінні створюється на основі раніше оголошеного класу,

УСПАДКОВУЄ , а можливо і модифікує його дані і функції. Оголошений клас може

служити основою ( базовим класом ) для нових похідних класів. Похідний клас успадковує

дані і функції своїх базових класів і додає власні компоненти.

У С++ кількість безпосередніх “ предків “ похідного класу не обмежена. Клас

може бути породжений від одного або більше класів. У останньому випадку говорять

про множинне наслідування. Наслідування в С++ реалізовано таким чином , що

успадковані компоненти не переміщаються в похідний клас , а залишаються в базовому

класі. Похідний клас може перевизначити і довизначити функції – членів базових класів.

Але при всій складності , наслідування в С++ підкоряється формальним правилам. А це

означає , що , по – перше , існує фіксований набір і похідні компоненти класів , а

по - друге , безліч варіантів наслідування обмежена.

Наприклад , є клас певними властивостями. В цілому він нас влаштовує , але

необхідно додати йому деяку функціональність. Можна створити новий клас на основі

того , що існує через наслідування.

Початковий клас називають предок/родитель/базовий клас/parent , а новий клас

наслідник /потомок /derived /child.

Похідний клас володіє всіма властивостями і методами предка ( він їх успадковує),

плюс додаються нові.

Далі , похідний клас може бути базовим для інших класів. Так будується

ієрархія класів - важливе поняття ООП.

При необхідності в похідному класі можна перекрити ( перевизначити ) властивості

і методи базового класу.

 







Последнее изменение этой страницы: 2016-04-18; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.226.244.70 (0.014 с.)