Задачи - ООП, Седмица 12, 09.05.2024
GitHub classroom: classroom.github.com/a/o7hNz1pr
Задача 1
Реализирайте клас Publication, който пази:
- низ от максимална дължина 1023, съхраняващ автори и
- втори низ с максимална дължина от 255, съхраняващ име на (научно) списание.
Реализирайте клас TextDocument, който пази неоразмеряем низ с текстово съдържание и неговия размер.
Реализирайте наследник на двата класа ScientificPaper, който допълнително пази и низ от максимално 511 знака, съдържащ име на научна дисциплина.
За всички класове реазлизирайте оператор <<.
Задача 2
Не говорим за нея, условието беше толкова сбъркано, че се наложи да я сваля
Задача 3
Реализирайте абстрактен клас MobileDevice, който запазва:
- телефонен номер като цяло неотрицателно число и
- масив с максимална дължина от 511 знака за текстово съобщение.
Допълнително нека:
- класът да задължава имплементацията на метод
Show, - да има член-функция
CanAccept, която по подадено "хиперсъобщение" връща дали неговия номер съвпада с този на класа.
Под "хиперсъобщение" имаме предвид низ, който започва с телефонния номер, след това има шпация и след това е самото съобщение. - да има член-функция
Accept, която по подадено "хиперсъобщение" запазва текстовото съобщение. Ако номерът не съответства тогава хвърля грешка.
Реализирайте негов наследник Telephone, за който Show изкарва съобщението на екрана.
Реализирайте втори негов наследник Pager [1], който съхранява име на файл (като динамично-заделен низ) и Show изкарва съобщението в съответния файл.
Разбира се, имплементирайте голяма петица.
Реализирайте клас TelecommunicationCompany, който съхранява динамично-заделен и оразмеряем масив от (указатели към) MobileDevice.
Имплементирайте всичко от голяма петица.
Задача 4
Реализирайте клас Employee, който запазва:
- заплата като число с плаваща запетая и
- производителост също като число с плаваща запетая.
Производителността е множител на заплатата, тоест ако има производителност 0.5 значи работи като човек на който му плащат с половината заплата.
Реализирайте абстрактен клас Person, който запазва:
- име като низ с произволна дължина и
- възраст като цяло неотрицателно число
Допълнително задължава реализацията на член-функция Workload, връщаща стойност с плаваща запетая.
Разбира се имплементирайте голяма петица.
Реализирайте наследник на двата класа на име Developer, който допълнително запазва:
- цяло неотрицателно число - брой проекти в които участва, и
- второ което е брой проекти на които ще се пуска нова версия.
Реализирайте оператори ++ и --, като префиксните променят броя проекти на които ще се пуска нова версия, докато постфиксните променя броя проекти в които участва.
За него Workload се определя като 1.1 по всеки проект и допълнително по 2.3 за всеки проект на който ще се пуска нова версия.
Реализирайте наследник на двата класа на име Manager, който допълнително запазва динамично-заделен и оразмеряем масив от Person, които менижира.
Имплементирайте голяма петица и:
- оператори
==и!=, сравняващи хора по име - член-функция
StartManaging, която приемаPersonи го запазва, и - член-функция
StopManaging, която приемаPersonи го премахва от масива ако съществува в него.
Workload се определя като 0.6 на човек който менижира.
Финално реализирайте клас Company, който запазва масив от 128 указателя Person в компанията.
Имплементирайте негова член-функция:
-
PaymentDifference, която връща с колко платената заплата на всички служители се отличава с тази според тяхната производителност
| [1] | От времето без мобилни телефони, хората са си купували пейджъри, които ти пращат нотификация ако някой ти звънне и не вдигнеш. Пейджърите са "заключени" за определени региони, тоест някой ти се обажда, не вдигаш, и всички телекомуникционни кули в региона изпращат съобщение "на теб ти звънна този", и пейджъра като засече сигнала ти писука. Мисля че също можеш да пращаш кратки съобщения. Не е било хич сигурна система, все още се ползва от болници в някои държави. ^ |
|---|