Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб роб Інф 4 семестр_1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
49.25 Кб
Скачать

Завдання для лабораторних робіт з дисципліни "Програмування(C++)" для спеціальності Інформатика

IV семестр Лабораторна робота № 1

Тема: Успадкування. Одиночне успадкування. Керування доступом до елементів класу при успадкуванні.

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

  1. Мета наслідування.

  2. Який клас називають базовим ? похідним?

  3. Що саме успадковує похідний клас? Що не успадковує?

  4. Порівняйте відношення «is a» та «has a». Як такі відношення реалізуються на практиці?

  5. Типи наслідування. Який тип наслідування працює по замовчуванню?

  6. Як змінюється доступ до полів у похідному класі при різних типах наслідування?

  7. Яка різниця між закритими та захищеними полями класу?

  8. Порядок виклику конструкторів та деструкторів для об’єктів похідних класів.

  9. Як використовується список ініціалізації у конструкторі похідного класу?

  10. Що означає перевантаження методу у похідному класу? Перевизначення методу у похідному класі? Наведіть приклади.

  11. Нехай А- базовий клас, В – похідний від нього. Кожен з класів має функцію void Show(). Яким чином можна викликати у методі Show() класу В метод Show() класу А?

  12. Як у похідному класі відкрити доступ до полів(методів) з приватної частини базового класу?

  13. Що відбувається у випадку присвоєння об’єкту базового класу об’єкта похідного класу ? А навпаки?

  14. Коли похідний клас повинен визначати присвоєння?

  15. Знайдіть помилки у визначеннях класів.

а)

class Car, public Vehicle

{

public:

Car();

~Car();

protected:

int passengers;

}

б)

class SnowMobile : Vehicle

{

protected:

int horsePower;

double weight;

public:

SnowMobile(int h, double w), Vehicle(h)

{ horsePower = h; }

~SnowMobile();

};

Завдання 1.

Ship, CruiseShip, and CargoShip Classes

Design a Ship class that has the following members:

* A member variable for the name of the ship (a string)

* A member variable for the year that the ship was built (a string)

* A constructor and appropriate accessors and mutators

* A print function that displays the ship s name and the year it was built.

Design a CruiseShip class that is derived from the Ship class. The CruiseShip class

should have the following members:

* A member variable for the maximum number of passengers (an int)

* A constructor and appropriate accessors and mutators

* A print function that overrides the print function in the base class. The

CruiseShip class has print function should display only the ship s name and the

maximum number of passengers.

Design a CargoShip class that is derived from the Ship class. The CargoShip class

should have the following members:

* A member variable for the cargo capacity in tonnage (an int).

* A constructor and appropriate accessors and mutators.

* A print function that overrides the print function in the base class. The

CargoShip class s print function should display only the ship s name and the

ship s cargo capacity.

Додаткове завдання 2.

Визначити класи "Swordsman" (Мечник), "Archer" (Лучник) і "Mage" (Маг), кожен з яких є екземпляром базового класу "Unit" (штука, елемент) в комп'ютерній грі, і може атакувати, ухилятись від атак і вмирати.

У мечника 15 хіт-поінтів (життів), пошкодження при атаці 5, шанс ухилятись 60%.

Лучник: 12 hp, 4 dmg, 40% dodge

Маг: 8 hp, 10 dmg, 30% dodge

В main() створити два масива (ворогуючі сторони) по три юніта в кожному, причому тип юніта (мечник, лучник чи маг) має задаватись випадково, при заповненні цих масивів. Тобто один раз запустивши програму, може створитись три лучники проти мечника і двох магів, іншого - лучник, мечник і маг проти двох мечників і лучника і т.д.

Далі в циклі змодулювати бій між ними, поки бійці однієї з сторін всі не загинуть. В консоль при цьому виводити повідомлення хто кого атакував, чи вдалась атака, скільки життя залишилось у жертви чи вона загинула. Бій відображати на екрані поступово, по натиснення клавіші spacebar (пробіла), щоб можна було спостерігати його атака за атакою.

В кінці бою оголосити, яка команда перемогла (перша/друга, синя/червона чи ін.)