Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи по програмуванні(14 лаб).doc
Скачиваний:
77
Добавлен:
16.05.2015
Размер:
1.43 Mб
Скачать

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

  1. Специфікатори доступу.

  2. Як описуються функції-члени класу?

  3. Що таке екземпляр класу?

  4. Що відносять до даних-членів класу?

  5. Як здійснюється ініціалізація даних-членів класу?

  6. Що таке конструктор? Наведіть приклад.

  7. Що таке деструктор? Наведіть приклад.

  8. Правила роботи з конструктором. Наведіть приклади.

  9. Правила роботи з деструктором. Наведіть приклади.

  10. Правила програмної організації конструктора в С++.

  11. Правила програмної організації деструктора в С++.

  12. Призначення конструктора.

  13. Призначення деструктора.

  14. Структура конструктора.

  15. Структура деструктора.

  16. Вимоги до вхідних даних конструктора та деструктора.

  17. Вимоги до вихідних даних конструктора та деструктора.

  18. Навести приклади використання декількох конструкторів в одному класі.

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

Тема: Розробка програм з використанням принципів простого спадкування.

Мета: Набуття навичок в проектуванні найпростіших ієрархій класів, розробка найпростіших програм з використанням ієрархії класів.

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

  1. Ознайомитися з теоретичними основами розробки ієрархії класів та правилами їх використання.

  2. Розробити ієрархію з мінімум 2 класами для роботи з текстовими даними (масивом рядків) яка складається з:

а) базового класу, який містить: два конструктора, деструктор, функцію визначення довжини тексту, функцію визначення кількості рядків в тексті, функцію визначення кількості слів в тексті, функцію визначення кількості пробілів у тексті, функцію видалення зайвих пробілів з тексту.

б) похідного класу, що містить функцію з завдання 1.

  1. Розробити тести для перевірки вірності даної програми.

  2. Оформити звіт до лабораторної роботи.

Завдання 1

    1. Розробити метод-член похідного класу копіювання заданої кількості символів з заданої позиції в заданий рядок.

    2. Розробити метод-член похідного класу визначення частоти повторення символів.

    3. Розробити метод-член похідного класу видалення заданої кількості символів з заданої позиції.

    4. Розробити метод-член похідного класу видалення символів, які повторюються.

    5. Розробити метод-член похідного класу визначення кількості слів, які повторюються.

    6. Розробити метод-член похідного класу визначення кількості повторювань заданого набору символів.

    7. Розробити метод-член похідного класу визначення кількості слів в заданому тексті.

    8. Розробити метод-член похідного класу вставки заданого рядка в початок тексту.

    9. Розробити метод-член похідного класу вставки заданого рядка в кінець тексту.

    10. Розробити метод-член похідного класу вставки в заданою позицію заданого рядка в текст.

Завдання 2

Номери варіантів наведені в таблиці 5.1.

2.1. Розробити базовий клас «Елемент».

Поля:

  • ім'я елемента (покажчик на рядок символів);

  • кількість входів елемента;

  • кількість виходів елемента.

Методи:

  • конструктор класу;

  • деструктор класу;

  • метод, що задає ім'я елемента.

2.2. На основі класу «Елемент» описати похідний клас «Комбінаційний», що представляє собою комбінаційний елемент (двійковий вентиль), що може мати кілька входів і один вихід.

Поля:

  • покажчик, використовуваний для динамічного розміщення полів, що містять значення входів.

Методи:

  • конструктор;

  • конструктор копіювання;

  • деструктор;

  • метод, що задає значення на входах екземпляра класу;

  • метод, що дозволяє опитувати стан окремого входу екземпляра класу;

  • метод, що обчислює значення виходу (по варіанту завдання);

2.3. На основі класу «Елемент» описати похідний клас «Пам'ять», що представляють собою тригер. Тригер має входи, що відповідають типу тригера (див. нижче варіант завдання), і входи установки і скидання. Усі тригери вважаються синхронними, сам синхровхід до складу тригера не включається.

Поля:

  • масив значень входів об'єкта класу (задається статично), у масиві враховуються усі входи (керуючі й інформаційні);

  • стан на прямому виході тригера;

  • стан на інверсному виході тригера.

Методи:

  • конструктор (за замовчуванням скидає екземпляр класу);

  • конструктор копіювання;

  • деструктор;

  • метод, що задає значення на входах екземпляра класу;

  • методи, що дозволяють опитувати стан окремого входу екземпляра класу;

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

  • метод, що перевизначає операцію == для екземплярів класу.

2.4. Створити клас «Регістр», використовуючи клас «Пам'ять» як «вмикаючий» клас.

Поля:

  • стан входу «Скидання» — один для екземпляра класу;

  • стан входу «Установка» — один для екземпляра класу;

  • статичний масив типу «Пам'ять» заданої у варіанті розмірності;

  • статичний(і) масив(и), що містить значення на відповідних входах елементів масиву типу «Пам'ять».

Методи:

  • метод, що задає значення на входах екземпляра класу (бажано як параметри передавати методу покажчики на масиви значень);

  • метод, що дозволяє опитувати стан окремого виходу екземпляра класу;

  • метод, що обчислює значення нового стану екземпляра класу;

Усі поля класів «Елемент», «Комбінаційний» і «Пам'ять» повинні бути описані з ключовим словом privatе.

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

2.5. Для перевірки функціонування створених класів написати програму, що використовує ці класи. У програмі повинні бути продемонстровані усі властивості створених класів.

Конкретний тип комбінаційного елемента, тип тригера і розрядність регістра вибираються відповідно до варіанта завдання.

Таблиця 5.1 – Варіанти завдання 2

Варіант

Комбінаційний елемент

Число входів

Тригер

Розрядність регістра

1

НІ

4

RS

8

2

АБО

5

RST

10

3

МОД2-НІ

6

D

12

4

І

8

T

8

5

НІ

8

V

9

6

І

4

RS

10

7

НІ

5

JK

11

8

МОД2

5

D

8

9

І

4

T

10

10

АБО

3

JK

8

11

НІ

3

RS

12

12

НІ

4

RST

4

13

МОД2

5

D

10

14

МОД2-НІ

6

T

10

15

НІ

8

V

10

16

І

8

JK

6

17

НІ

8

RS

10

18

АБО

8

T

10

19

МОД2

6

JK

8

20

МОД2-НІ

5

V

10