Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP_LAB_Part_2_Obyektno-orientov_progr.DOC
Скачиваний:
11
Добавлен:
03.05.2019
Размер:
418.3 Кб
Скачать

4.Що таке EasyWin програма?

Інтегроване середовище розробки(IDE) BC++5.02 дає можливість створювати спеціальний вид програм, називаних EasyWin програмами, що виконуються в простому вікні, що нагадує вікно Windows. Це вікно містить стандартні кнопки і смуги скролера. Текст у вікні виводиться в кодуванні Windows, що не створює проблем з кирилицею.

  • Порядок створення EasyWin програми.

1.Завантажите IDE BC++5.02.

2.Виберіть меню File.

3.Виберіть команду New/Project , що викликає вікно New Target.

4.Введіть маршрут і ім'я файлу проекту .ide у поле введення у верхній частині вікна(поле Project Path and Name) . Введене ім'я буде повторено в поле введення імені мети (поле Target Name), тим самим ім'я програми буде відповідати імені проекту. Кнопка Brows служить для вибору каталогу, що містить файли проекту.

5.Виберіть EasyWin[.exe] у списку Target Type.

6.Клацніть на кнопці Advanced, щоб викликати діалогове вікно Advanced Options . Виберіть у ньому перемикач, позначений як.cpp Node. Цей вибір змусить IDE вставляти .cpp вузли. Це діалогове вікно дає також можливість додавати чи видаляти модулі .rc і .def. Тому що реально вони потрібні тільки при створенні Windows-додатків, а не EasyWin, упевніться, що ці дві кнопки не вибрані. Закрийте вікно (Оk).

7.Натисніть Оk, щоб створити новий файл проекту.

8.IDE виведе вікно проекту Project, у якому перераховані вузли різних програм. Коли Ви створюєте новий файл проекту, вікно Project буде містити тільки один вузол.

9.Вузли програми EasyWin містять тільки один файл - .срр із текстом програми. Двічі клацніть на файлі .срр, для того щоб почати редагування цього файлу.

10.Введіть вихідний текст програми.

11.Відкомпілюйте програму (F9).

12.Виправте помилки і повторіть компіляцію

13.Повторюйте пункт 12, поки компіляція не буде виконуватися без помилок .

14.Виконайте програму (Ctrl+F9).

Порядок виконання роботи.

1.Вибрати клас АТД відповідно до варіанта.

2.Визначити і реалізувати в класі конструктори, деструктор, функції Input(введення з клавіатури) і Print(висновок на екран), перевантажити операцію присвоювання.

3.Написати програму тестування класу і виконати тестування.

4.Доповнити визначення класу заданими перевантаженими операціями (відповідно до варіанта).

5.Реалізувати ці операції. Виконати тестування.

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

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

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

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

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

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

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

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

MyClass(const MyClass& 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.Перевантажте операції “<”,”>”,”==” для класу “рядок символів”.

Додаток. Варіанти завдань.

1.АТД-множина з елементами типу char. Додатково перевантажити наступні операції:

“+” - додати елемент у множину (типу char + set);

“+” - об'єднання множин;

“==” - перевірка множин на рівність.

2.АТД-множина з елементами типу char. Додатково перевантажити наступні операції:

“-” - видалити елемент із множини (типу set-char);

“*” - перетинання множин;

“<” - порівняння множин .

3.АТД-множина з елементами типу char. Додатково перевантажити наступні операції:

“-” - видалити елемент із множини (типу set-char);

“>” - перевірка на підмножину;

“!=” - перевірка множин на нерівність.

4.АТД-множина з елементами типу char. Додатково перевантажити наступні операції:

“+” - додати елемент у множину (типу set+char);

“*” - перетинання множин;

“int()” - потужність множини.

5.АТД-множина з елементами типу char. Додатково перевантажити наступні операції:

“()” - конструктор множини (у стилі конструктора Паскаля);

“+” - об'єднання множин;

“<=” - порівняння множин .

6.АТД-множина з елементами типу char. Додатково перевантажити наступні операції:

“>” - перевірка на приналежність (char in set Паскаля);

“*” - перетинання множин;

“<” - перевірка на підмножину.

7.АДТ-однонаправлений список з елементами типу char. Додатково перевантажити наступні операції:

“+” – об’єднати списки (list+list);

“--” - видалити елемент із початку (типу –list);

“==” перевірка на рівність.

8.АДТ-однонаправлений список з елементами типу char. Додатково перевантажити наступні операції:

“+” - додати елемент у початок (char+list);

“--” - видалити елемент із початку (типу –list);

“==” - перевірка на рівність.

9.АДТ-однонаправлений список з елементами типу char. Додатково перевантажити наступні операції:

“+” - додати елемент у кінець (list+char);

“-і” - видалити елемент із кінця (типу list-і);

“!=” - перевірка на нерівність.

10.АДТ-однонаправлений список з елементами типу char. Додатково перевантажити наступні операції:

“[]” - доступ до елемента в заданій позиції, наприклад:

int i; char c;

list L;

c=L[i];

“+” - об'єднати два списки;

“==” - перевірка на рівність.

11.АДТ-однонаправлений список з елементами типу char. Додатково перевантажити наступні операції:

“[]” - доступ до елемента в заданій позиції, наприклад:

int i; char c;

list L;

c=L[i];

“+” - об'єднати два списки;

“!=” - перевірка на нерівність.

12.АДТ-однонаправлений список з елементами типу char. Додатково перевантажити наступні операції:

“()” - видалити елемент у заданій позиції, наприклад :

int i;

list L;

L[i];

“()” - додати елемент у задану позицію, наприклад :

int i; char c;

list L;

L[c,i];

“!=” перевірка на нерівність.

13.АТД-стек. Додатково перевантажити наступні операції:

“+” - додати елемент у стек;

“—“ - витягти елемент зі стека;

bool() - перевірка чи порожній стек?

14.АТД-черга. Додатково перевантажити наступні операції:

“+” - додати елемент ;

“—“ - витягти елемент ;

bool() - перевірка чи порожня черга?

15.АТД-одномірний масив (вектор) дійсних чисел. Додатково перевантажити наступні операції:

“+” - додавання векторів (a[i]+b[i] для всіх i);

“[]” - доступ по індексі;

“+” - додати число до вектора (double+vector).

16.АТД-одномірний масив (вектор) дійсних чисел. Додатково перевантажити наступні операції:

“-” - віднімання векторів (a[i]-b[i] для всіх i);

“[]” - доступ по індексі;

“-” - відняти з вектора число (vector-double).

17.АТД-одномірний масив (вектор) дійсних чисел. Додатково перевантажити наступні операції:

“*” - множення векторів (a[i]*b[i] для всіх i);

“[]” - доступ за індексом;

“*” - помножити вектор на число (vector*double).

18.АТД-одномірний масив (вектор) дійсних чисел. Додатково перевантажити наступні операції:

“int()” - розмір вектора;

“()” - встановити новий розмір;

“-” - відняти з вектора число (vector-double);

“[]” - доступ за індексом;

19.АТД-одномірний масив (вектор) дійсних чисел. Додатково перевантажити наступні операції:

“=” - привласнити всім елементам вектора значення (vector=double);

“[]” - доступ за індексом;

“==” - перевірка на рівність;

“!=” - перевірка на нерівність;

20.АТД-двомірний масив (матриця) дійсних чисел. Додатково перевантажити наступні операції:

“()” - доступ за індексом;

“*” - множення матриць;

“*” - множення матриці на число;

“*” - множення числа на матрицю.

21.АТД-двомірний масив (матриця) дійсних чисел. Додатково перевантажити наступні операції:

“()” - доступ за індексом;

“-” - різниця матриць;

“-” - відняти з матриці число;

“==” - перевірка матриць на рівність.

22.АТД-двомірний масив (матриця) дійсних чисел. Додатково перевантажити наступні операції:

“()” - доступ за індексом;

“=” - привласнити всім елементам матриці значення (matr=double);

“+” - додавання матриць;

“+” - скласти матрицю з числом (matr+double).

23.АТД-двомірний масив (матриця) дійсних чисел. Додатково перевантажити наступні операції:

“()” - доступ за індексом;

“==” - перевірка матриць на рівність.

“++” - транспонувати матрицю;

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