Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / oop-2025 / week10 / index.du
diff options
context:
space:
mode:
1 files changed, 81 insertions, 0 deletions
-rw-r--r--src/teaching/oop-2025/week10/index.du81
diff --git a/src/teaching/oop-2025/week10/index.du b/src/teaching/oop-2025/week10/index.du
new file mode 100644
index 0000000..b854029
--- /dev/null
+++ b/src/teaching/oop-2025/week10/index.du
@@ -0,0 +1,81 @@
+# Задачи - ООП, Седмица 10, 22.04.2026
+
+'define expected-reading 3 min
+'define created 22 April 2026
+'define edited 22 April 2026
+[$pagenav]
+
+## За решаване
+
+### Задача 1
+
+Реализирайте клас [`User`], който съдържа полета за:
+.bulleted
+- идентификационен код
+- име
+- парола
+- година на създаване на акаунта
+
+И публичен метод [`LogIn`], който по подаден идентификационен код и парола връща дали данните са коректни (и потребителя може да влезе в акаунта си).
+
+Реализирайте наследник [`Student`] на [`User`], който допълнително съдържа полета:
+.bulleted
+- дали е завършил или не
+- година на випуск
+
+И публичен метод [`Graduate`], с който се записва че е завършил.
+
+Реализирайте наследник [`Teacher`] на [`User`], който допълнително съдържа полета:
+.bulleted
+- име на предмет който преподава
+- брой ученици на които преподава
+
+И публичен метод [`ChangeStudents`], с който се променя бройката студенти на които преподава.
+
+### Задача 2
+
+Реализирайте клас [`Vehicle`], който съдържа полета за:
+.bulleted
+- модел
+- година на производство
+- километраж
+- еко категория (цяло число от 1 до 6 вкл.)
+- тежест в килограми
+- конски сили
+
+Реализирайте наследник [`CombustionVehicle`] на [`Vehicle`], който съдържа полета за:
+.bulleted
+- брой цилиндри в двигателя
+- обем на двигателя в литри
+
+Реализирайте наследник [`ElectricVehicle`] на [`Vehicle`], който съдържа полета за:
+.bulleted
+- капацитет на батерия в киловатчаса
+- пробег в километри
+- количество поддържано захранване в киловатове
+
+За всички класове реализирайте нужните селектори и мутатори, както и [`operator<<`] и [`operator>>`].
+
+От входа получавате цяло неотрицателно число: бройка превозни средства.
+След това, за всяко превозно средство получавате буква определяща типа му ([`c`] за [`CombustionVehicle`] и [`e`] за [`ElectricVehicle`]) и след това всички нужни стойности (първо тези от [`Vehicle`], модел, година на производство, ... и след това тези за съответния автомобил).
+
+Запазете всички превозни средства в [=един=] масив.
+
+### Задача 3
+
+Реализирайте клас [`Inventory`], който съдържа неограничено количество продукти.
+За всеки продукт съхранете име и количество.
+
+Реализирайте наследник [`Shop`] на [`Inventory`], който допълнително съхранява неограничено количество продажби.
+Всяка продажба съдържа име на продукт, купено количество и дата (ден, месец, година).
+
+Реализирайте негов метод [`Purchase`], който по подадени данни съхранява нова продажба и намалява инвентарното наличество.
+
+Реализирайте наследник [`Warehouse`] на [`Inventory`], който допълнително съхранява неограничено количество доставки.
+Всяка доставка съдържа най-много 8 продукта, датата на доставката (ден, месец, година) и номер за проследяване.
+
+Реализирайте негов метод [`Receive`], който по подадени данни съхранява нова доставката и увеличава инвентарното количество.
+
+.warn
+Всички неограничени количества трябва да са имплементирани в самия клас.
+Не може да имплементирате [`ProductArray`], който да е член-данна в [`Inventory`] например.