Наслідування Завдання
1. Видавнича компанія торгує книгами і аудіо-записами цих книг. Створіть клас publication, в якому зберігаються назва (рядок) і ціна (типу double) книги. Від цього класу успадковуються ще два класи: book, який містить дані про кількість сторінок у книзі (типу int), і type, який містить час запису книги у хвилинах (тип double). У кожному з цих трьох класів повинен бути метод getdata(), через який можна отримувати дані від користувача з клавіатури, і putdata(), призначений для виведення цих даних. Напишіть функцію main() програми для перевірки класів book і type. Створіть їх об’єкти в програмі і запросіть користувача ввести і вивести дані з використанням методів getdata() і putdata().
2. Почніть з класів book, type і publication з вправи 1. Додайте базовий клас sales, в якому міститься масив, що складається з трьох значень типу double, куди можна записати загальну вартість проданих книг за останні три місяці. Включіть в клас методи getdata() для отримання значень вартості від користувача і putdata() для виведення цих значень. Змініть класи book і type так, щоб вони стали похідними обох класів: publications і sales. Об’єкти класів book і type повинні вводити і виводити дані про продажі разом з іншими своїми даними. Напишіть функцію main() для створення об’єктів класів book і type, щоб перевірити можливості введення/виведення даних.
3. Припустимо, що видавець з вправ 1 і 2 вирішив додати до своєї продукції версії книг на комп’ютерних дисках для тих, хто любить читати книги на своїх комп’ютерах. Додайте клас disk, який, як book і type, є похідним класу publication. Клас disk повинен включати в себе ті ж функції, що і в інших класах. Полем цього класу буде тип диска: CD або DVD. Для зберігання цих даних введіть тип enum. Користувач повинен вибрати відповідний тип, набравши на клавіатурі “c” або “d”.
4. Скористайтесь класом safearray з лекції. Використовуючи успадкування, додайте до нього можливість для користувача визначати верхню і нижню межі масиву в конструкторі. Це схоже на вправу 7 з лабораторної роботи №7, за винятком того, що замість модифікації вихідного класу використовується успадкування.
5. У програмі counter2 з лекції можна збільшувати і зменшувати лічильник, використовуючи префіксні операції. Використовуючи наслідуванння, додайте можливість використання постфіксних операцій для випадків збільшення та зменшення. завдання помічені * є не обов’язковими для виконання
6. Використайте класи publication, book і type з вправ 1 та 2. Додайте в класи book і type дату виходу книги. Створіть новий похідний клас publication2, який є похідним класу publication і включає в себе поле, що зберігає цю дату. Потім змініть класи book і type так, щоб вони стали похідними класу publication2 замість publication. Зробіть необхідні зміни функцій класів так, щоб користувач міг вводити і виводити дату виходу книги. Для дати скористайтесь класом data з вправи 5 лабораторної роботи №5.
7. Іноді потрібно працювати з двома числами, об’єднаними в блок. Наприклад, кожна з координат екрану має горизонтальну складову (х) і вертикальну (у). Уявіть такий блок чисел як структуру pair, яка містить дві змінні типу int. Створіть клас, похідний від класу stack, так щоб за допомогою нього можна було зберігати змінні типу pair в стек.
8*. Розглянемо стару Британську платіжну систему фунти-стерлінгипенси. Пенні діляться на фартинг і напівпенні. Фартинг – це 1/4 пенні. Існували монети фартинг, півфартінга і пенні. Будь-які поєднання монет виражались через восьмі частини пенні: 1/8 пенні - це півфартінга; 1/4 пенні - це фартинг; 3/8 пенні - це фартинг з половиною; 1/2 пенні - це півпенні; 5/8 пенні - це півфартінга плюс півпенні; 3/4 пенні - це півпенні плюс фартинг; 7/8 пенні - це півпенні плюс фартинг з половиною. Створіть клас sterlingF – похідний від класу sterling, в який додайте можливість користуватися дробовими частинами пенні. Формат введення/виведення може бути схожим на £ 1.1.1-1/4 або £ 9.19.11-7/8, де дефіси відокремлюють дробові частини від пенні.