Здавалка
Главная | Обратная связь

Методичні вказівки.



1.Клас АТД реалізувати як динамічний масив. Для цього визначення класу повинне мати наступні поля:

- покажчик на початок масиву;

- максимальний розмір масиву;

- поточний розмір масиву.

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

3.Щоб у вас не виникало проблем, акуратно працюйте з константами об'єктами. Наприклад:

* конструктор копіювання варто визначити так:

MyClass(constMyClass& ob);

* операцію присвоювання перевантажити так:

MyClass& operator = (const MyClass& ob);

4.Для зручності реалізації операцій-функцій реалізувати в класі private (protected) функції, що працюють безпосередньо з реалізацією класу. Наприклад, для класу множину - це можуть бути наступні функції:

- включити елемент у множину;

- знайти елемент і повернути його індекс;

- видалити елемент;

- визначити, чи належить елемент множини.

Зазначені функції використовуються в реалізації загальнодоступних функцій-операцій (operator).

Зміст звіту.

1.Титульний лист.

2.Конкретне завдання з вказуванням номера варіанта, реалізованого класу й операцій.

3.Визначення класу.

4.Обґрунтування включення в клас декількох конструкторів, деструктора й операції присвоювання.

5.Пояснити обране представлення пам'яті для об'єктів реалізованого класу.

6.Реалізація перевантажених операцій з обґрунтуванням обраного способу (функція-член класу, зовнішня функція, зовнішня дружня функція).

7.Тестові дані і результати тестування.

Питання для самоконтролю.

1.Що таке абстрактний тип даних?

2.Приведіть приклади абстрактних типів даних.

3.Які синтаксис/семантика “функції-операції-функції”?

4.Як можна викликати операцію-функцію?

5.Чи потрібно перевантажувати операцію присвоювання щодо визначеного користувачем типу даних, наприклад класу? Чому?

6.Чи можна змінити пріоритет перевантаженої операції?

7.Чи можна змінити кількість операндів перевантаженої операції?

8.Чи можна змінити ассоціативність перевантаженої операції?

9.Чи можна, використовуючи дружню функцію, перевантажити оператор присвоювання?

10.Чи всі оператори мови С++ можуть бути перевантажені?

11.Якими двома різними способами визначаються перевантажені операції?

12.Чи всі операції можна перевантажити за допомогою глобальної дружньої функції?

13.У яких випадках операцію можна перевантажити тільки глобальною функцією?

14.У яких випадках глобальна операція-функція повинна бути дружньою?

15.Чи обов'язковий у функції operator параметр типу “клас” чи “посилання на клас”?

16.Чи успадковуються перевантажені операції?

17.Чи можна повторно перевантажити в похідному класі операцію, перевантажену в базовому класі?

18.У чому відмінність синтаксису функції-операції-функції унарної і бінарної операції?

19.Приведіть приклади перевантаження операцій для стандартних типів.

20.Перевантажте операцію “+” для класу “комплексне число”.

21.Перевантажте операції “<”,”>”,”==” для класу “рядок символів”.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.