Задачи - ООП, Седмица 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
, която връща с колко платената заплата на всички служители се отличава с тази според тяхната производителност
-
От времето без мобилни телефони, хората са си купували пейджъри, които ти пращат нотификация ако някой ти звънне и не вдигнеш. Пейджърите са “заключени” за определени региони, тоест някой ти се обажда, не вдигаш, и всички телекомуникционни кули в региона изпращат съобщение “на теб ти звънна този”, и пейджъра като засече сигнала ти писука. Мисля че също можеш да пращаш кратки съобщения. Не е било хич сигурна система, все още се ползва от болници в някои държави. ↩