Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commitfabe7766a4a07887c58f684de119ca3f2130b978 (patch)
Author
 Syndamia <kamen@syndamia.com>
2026-04-22 09:12:06 +0300
Committer
 Syndamia <kamen@syndamia.com>
2026-04-22 09:12:06 +0300
Files924f8af2d3c4677ba354b36c432ef569b2576d48
syndamia.com-fabe7766a4a07887c58f684de119ca3f2130b978.tar
syndamia.com-fabe7766a4a07887c58f684de119ca3f2130b978.tar.gz
syndamia.com-fabe7766a4a07887c58f684de119ca3f2130b978.zip
Parent85889833f990fc7f0a68d3554515074a2bd559db (diff)
feat(teaching/oop-2025/w10): Add exercises
3 files changed, 91 insertions, 0 deletions
-rw-r--r--meta/meta.tsv1
-rw-r--r--src/teaching/oop-2025/index.du9
-rw-r--r--src/teaching/oop-2025/week10/index.du81
diff --git a/meta/meta.tsv b/meta/meta.tsv
index e0e23cb..1352777 100644
--- a/meta/meta.tsv
+++ b/meta/meta.tsv
@@ -125,6 +125,7 @@ teaching/oop-2025/week06/index.html Задачи - ООП, Седмица 6, 25.
teaching/oop-2025/week07/index.html Задачи - ООП, Седмица 7, 01.04.2026 Условията на задачите за упражнение.
teaching/oop-2025/week08/index.html Задачи - ООП, Седмица 8, 08.04.2026 Условията на задачите за упражнение.
teaching/oop-2025/week09/index.html Задачи - ООП, Седмица 9, 15.04.2026 Условията на задачите за упражнение.
+teaching/oop-2025/week10/index.html Задачи - ООП, Седмица 10, 22.04.2026 Условията на задачите за упражнение.
blog/connect-to-mysql-in-dotnet-ef/index.html Connect to MySql in .NET and Entity Framework Connecting a .NET application to a MySql database (with Entity Framework) can be tricky. Here is what works for me.
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`] например.