Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching
diff options
context:
space:
mode:
Commit955f6de5ac3d427a369eae95a37c623396b0412b (patch)
Author
 Syndamia <kamen@syndamia.com>
2026-05-13 09:30:03 +0300
Committer
 Syndamia <kamen@syndamia.com>
2026-05-13 09:30:03 +0300
Files147aac91613ebc740bc5913ee8227f1d55dec2df /src/teaching
syndamia.com-955f6de5ac3d427a369eae95a37c623396b0412b.tar
syndamia.com-955f6de5ac3d427a369eae95a37c623396b0412b.tar.gz
syndamia.com-955f6de5ac3d427a369eae95a37c623396b0412b.zip
Parent03c1067259a52ac8e99c620cfb40a5d8e02ecb7c (diff)
feat(teaching/oop-2025/w12): Add exercises
2 files changed, 49 insertions, 0 deletions
-rw-r--r--src/teaching/oop-2025/index.du9
-rw-r--r--src/teaching/oop-2025/week12/index.du40
diff --git a/src/teaching/oop-2025/index.du b/src/teaching/oop-2025/index.du
index b64a369..625a8bf 100644
--- a/src/teaching/oop-2025/index.du
+++ b/src/teaching/oop-2025/index.du
@@ -134,3 +134,12 @@
|:
[url ./week11 Задачи]
|| [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11 Решения]
+
+|: 12
+|: 13.05.2026
+|: Подготовка за контролно
+
+|:
+|:
+|:
+[url ./week12 Задачи]
diff --git a/src/teaching/oop-2025/week12/index.du b/src/teaching/oop-2025/week12/index.du
new file mode 100644
index 0000000..4f34d9c
--- /dev/null
+++ b/src/teaching/oop-2025/week12/index.du
@@ -0,0 +1,40 @@
+# Задачи - ООП, Седмица 12, 13.05.2026
+
+'define expected-reading 2 min
+'define created 13 May 2026
+'define edited 13 May 2026
+[$pagenav]
+
+## За решаване
+
+### Задача 1
+
+.warn
+Първо реализирайте архитектурно решение на задачата!
+
+Ще разгледаме система за менажиране на прозорци в операционна система.
+
+За всеки прозорец съхраняваме:
+.unordered
+- неотрицателни координати на горния ляв ъгъл на прозореца в пиксели.
+ На координат (0,0) отбелязваме пиксела в горния ляв ъгъл на екрана.
+- ширина и височина на прозореца в пиксели
+- име на прозореца с максимална дължина от 255 букви
+
+Прозореца трябва да има нужните селектори, мутатори, методи за центриране (хоризонтално, вертикално и двете), реоразмеряване на цял екран и обратно.
+
+Разглеждаме също прозорци с рамка.
+Рамката заема част от всяка страна на прозореца.
+Трябва да се съхрняват два размера на рамката: този на горната страна (който в реалния свят би съхранявал името на прозореца, бутони за отваряне/затваряне и так. нат.) и този на останалите страни (който е много тънък и се използва главно за реоразмеряване).
+
+Прозреца с рамка допълнително трябва да имплементира метод, който връща областта в която се намира съдържанието: размера и координатите на прозореца с извадени размерите на рамките.
+
+Имаме и формулярен прозорец: прозорец с рамка, който съхранява неограничено количество от динамично-заделени данни по подаден тип.
+Реализирайте всички нужни методи и оператори за обработка на тези данни.
+
+Имаме и диалогов прозорец: прозорец с рамка, който съхранява низово съобщение с неограничен размер.
+Реализирайте селектор и мутатор на това съобщение.
+
+Финално имаме графичен прозорец: прозорец без рамка, който съхранява изображение.
+Всеки пиксел в изображението се представя чрез произволна целочислена стойност.
+Размерите на изображението са запазени в типа на прозореца.