diff options
| Commit | fabe7766a4a07887c58f684de119ca3f2130b978 (patch) | |
|---|---|---|
| Author | 2026-04-22 09:12:06 +0300 | |
| Committer | 2026-04-22 09:12:06 +0300 | |
| Files | 924f8af2d3c4677ba354b36c432ef569b2576d48 /src/teaching | |
| syndamia.com-fabe7766a4a07887c58f684de119ca3f2130b978.tar syndamia.com-fabe7766a4a07887c58f684de119ca3f2130b978.tar.gz syndamia.com-fabe7766a4a07887c58f684de119ca3f2130b978.zip | ||
| Parent | 85889833f990fc7f0a68d3554515074a2bd559db (diff) | |
feat(teaching/oop-2025/w10): Add exercises
2 files changed, 90 insertions, 0 deletions
| -rw-r--r-- | src/teaching/oop-2025/index.du | 9 | ||||
| -rw-r--r-- | src/teaching/oop-2025/week10/index.du | 81 |
diff --git a/src/teaching/oop-2025/index.du b/src/teaching/oop-2025/index.du index a26dbc3..5988d77 100644 --- a/src/teaching/oop-2025/index.du +++ b/src/teaching/oop-2025/index.du @@ -113,3 +113,12 @@ |: |: [url ./week09 Задачи] + +|: 10 +|: 22.04.2026 +|: Единично наследяване + +|: +|: +|: +[url ./week10 Задачи] 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`] например. |