Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / oop-2023 / week12 / index.du
diff options
context:
space:
mode:
1 files changed, 32 insertions, 29 deletions
-rw-r--r--src/teaching/oop-2023/week12/index.du61
diff --git a/src/teaching/oop-2023/week12/index.du b/src/teaching/oop-2023/week12/index.du
index 537e03b..a7129e3 100644
--- a/src/teaching/oop-2023/week12/index.du
+++ b/src/teaching/oop-2023/week12/index.du
@@ -1,97 +1,100 @@
-# Задачи - ООП, Седмица 12, 09.05.2024
+'def title Задачи - ООП, Седмица 12, 09.05.2024
+'def desc Условия на задачите за упражнение
+
+# {title}
\n
-GitHub classroom: [url https://classroom.github.com/a/o7hNz1pr classroom.github.com/a/o7hNz1pr]
+GitHub classroom: {url classroom.github.com/a/o7hNz1pr;https://classroom.github.com/a/o7hNz1pr}
### Задача 1
-.solution-link [url https://github.com/Syndamia/oop-2023-solutions/blob/main/week12/Exercise1 Решение]
+.solution-link {url Решение;https://github.com/Syndamia/oop-2023-solutions/blob/main/week12/Exercise1}
.comment Multiple inheritance
-Реализирайте клас [`Publication`], който пази:
+Реализирайте клас {` Publication}, който пази:
.bulleted
- низ от максимална дължина 1023, съхраняващ автори и
- втори низ с максимална дължина от 255, съхраняващ име на (научно) списание.
-Реализирайте клас [`TextDocument`], който пази неоразмеряем низ с текстово съдържание и неговия размер.
+Реализирайте клас {` TextDocument}, който пази неоразмеряем низ с текстово съдържание и неговия размер.
-Реализирайте наследник на двата класа [`ScientificPaper`], който допълнително пази и низ от максимално 511 знака, съдържащ име на научна дисциплина.
+Реализирайте наследник на двата класа {` ScientificPaper}, който допълнително пази и низ от максимално 511 знака, съдържащ име на научна дисциплина.
За всички класове реазлизирайте оператор <<.
### Задача 2
-[*Не говорим за нея, условието беше толкова сбъркано, че се наложи да я сваля*]
+{i Не говорим за нея, условието беше толкова сбъркано, че се наложи да я сваля}
### Задача 3
-.solution-link [url https://github.com/Syndamia/oop-2023-solutions/blob/main/week12/Exercise3 Решение]
+.solution-link {url Решение;https://github.com/Syndamia/oop-2023-solutions/blob/main/week12/Exercise3}
-Реализирайте абстрактен клас [`MobileDevice`], който запазва:
+Реализирайте абстрактен клас {` MobileDevice}, който запазва:
.bulleted
- телефонен номер като цяло неотрицателно число и
- масив с максимална дължина от 511 знака за текстово съобщение.
Допълнително нека:
.bulleted
-- класът да задължава имплементацията на метод [`Show`],
-- да има член-функция [`CanAccept`], която по подадено "хиперсъобщение" връща дали неговия номер съвпада с този на класа.\n
+- класът да задължава имплементацията на метод {` Show},
+- да има член-функция {` CanAccept}, която по подадено "хиперсъобщение" връща дали неговия номер съвпада с този на класа.\n
Под "хиперсъобщение" имаме предвид низ, който започва с телефонния номер, след това има шпация и след това е самото съобщение.
-- да има член-функция [`Accept`], която по подадено "хиперсъобщение" запазва текстовото съобщение.
+- да има член-функция {` Accept}, която по подадено "хиперсъобщение" запазва текстовото съобщение.
Ако номерът не съответства тогава хвърля грешка.
-Реализирайте негов наследник [`Telephone`], за който [`Show`] изкарва съобщението на екрана.
+Реализирайте негов наследник {` Telephone}, за който {` Show} изкарва съобщението на екрана.
'footnote pager От времето без мобилни телефони, хората са си купували пейджъри, които ти пращат нотификация ако някой ти звънне и не вдигнеш. Пейджърите са "заключени" за определени региони, тоест някой ти се обажда, не вдигаш, и всички телекомуникционни кули в региона изпращат съобщение "на теб ти звънна този", и пейджъра като засече сигнала ти писука. Мисля че също можеш да пращаш кратки съобщения. Не е било хич сигурна система, все още се ползва от болници в някои държави.
-Реализирайте втори негов наследник [`Pager`] [$pager], който съхранява име на файл (като динамично-заделен низ) и [`Show`] изкарва съобщението в съответния файл.
+Реализирайте втори негов наследник {` Pager} {pager}, който съхранява име на файл (като динамично-заделен низ) и {` Show} изкарва съобщението в съответния файл.
Разбира се, имплементирайте голяма петица.
-Реализирайте клас [`TelecommunicationCompany`], който съхранява динамично-заделен и оразмеряем масив от (указатели към) [`MobileDevice`].
+Реализирайте клас {` TelecommunicationCompany}, който съхранява динамично-заделен и оразмеряем масив от (указатели към) {` MobileDevice}.
Имплементирайте всичко от голяма петица.
### Задача 4
-.solution-link [url https://github.com/Syndamia/oop-2023-solutions/blob/main/week12/Exercise4 Решение]
+.solution-link {url Решение;https://github.com/Syndamia/oop-2023-solutions/blob/main/week12/Exercise4}
.comment Multiple inheritance with mixed class types, polymorphic container, and copying
-Реализирайте клас [`Employee`], който запазва:
+Реализирайте клас {` Employee}, който запазва:
.bulleted
- заплата като число с плаваща запетая и
- производителост също като число с плаваща запетая.
Производителността е множител на заплатата, тоест ако има производителност 0.5 значи работи като човек на който му плащат с половината заплата.
-Реализирайте абстрактен клас [`Person`], който запазва:
+Реализирайте абстрактен клас {` Person}, който запазва:
.bulleted
- име като низ с произволна дължина и
- възраст като цяло неотрицателно число
-Допълнително задължава реализацията на член-функция [`Workload`], връщаща стойност с плаваща запетая.
+Допълнително задължава реализацията на член-функция {` Workload}, връщаща стойност с плаваща запетая.
Разбира се имплементирайте голяма петица.
-Реализирайте наследник на двата класа на име [`Developer`], който допълнително запазва:
+Реализирайте наследник на двата класа на име {` Developer}, който допълнително запазва:
.bulleted
- цяло неотрицателно число - брой проекти в които участва, и
- второ което е брой проекти на които ще се пуска нова версия.
-Реализирайте оператори [`++`] и [`--`], като префиксните променят броя проекти на които ще се пуска нова версия, докато постфиксните променя броя проекти в които участва.\n
-За него [`Workload`] се определя като 1.1 по всеки проект и допълнително по 2.3 за всеки проект на който ще се пуска нова версия.
+Реализирайте оператори {` ++} и {` --}, като префиксните променят броя проекти на които ще се пуска нова версия, докато постфиксните променя броя проекти в които участва.\n
+За него {` Workload} се определя като 1.1 по всеки проект и допълнително по 2.3 за всеки проект на който ще се пуска нова версия.
-Реализирайте наследник на двата класа на име [`Manager`], който допълнително запазва динамично-заделен и оразмеряем масив от [`Person`], които менижира.
+Реализирайте наследник на двата класа на име {` Manager}, който допълнително запазва динамично-заделен и оразмеряем масив от {` Person}, които менижира.
Имплементирайте голяма петица и:
.bulleted
-- оператори [`==`] и [`!=`], сравняващи хора по име
-- член-функция [`StartManaging`], която приема [`Person`] и го запазва, и
-- член-функция [`StopManaging`], която приема [`Person`] и го премахва от масива ако съществува в него.
+- оператори {` ==} и {` !=}, сравняващи хора по име
+- член-функция {` StartManaging}, която приема {` Person} и го запазва, и
+- член-функция {` StopManaging}, която приема {` Person} и го премахва от масива ако съществува в него.
-[`Workload`] се определя като 0.6 на човек който менижира.
+{` Workload} се определя като 0.6 на човек който менижира.
-Финално реализирайте клас [`Company`], който запазва масив от 128 указателя [`Person`] в компанията.
+Финално реализирайте клас {` Company}, който запазва масив от 128 указателя {` Person} в компанията.
Имплементирайте негова член-функция:
.bulleted
-- [`PaymentDifference`], която връща с колко платената заплата на всички служители се отличава с тази според тяхната производителност
+- {` PaymentDifference}, която връща с колко платената заплата на всички служители се отличава с тази според тяхната производителност