diff options
2 files changed, 14 insertions, 0 deletions
| -rw-r--r-- | src/teaching/oop-2025/index.du | 1 | ||||
| -rw-r--r-- | src/teaching/oop-2025/week11/index.du | 13 |
diff --git a/src/teaching/oop-2025/index.du b/src/teaching/oop-2025/index.du index 3fc9078..b64a369 100644 --- a/src/teaching/oop-2025/index.du +++ b/src/teaching/oop-2025/index.du @@ -133,3 +133,4 @@ |: |: [url ./week11 Задачи] +|| [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11 Решения] diff --git a/src/teaching/oop-2025/week11/index.du b/src/teaching/oop-2025/week11/index.du index d9c0c0a..7acd8cd 100644 --- a/src/teaching/oop-2025/week11/index.du +++ b/src/teaching/oop-2025/week11/index.du @@ -9,11 +9,15 @@ ### Задача 1 +.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11/Exercise01 Решение] + Реализирайте шаблонен клас [`Pair`], който пази две стойности от типове [`T`] и [`U`]. Реализирайте съотвените мутатори и селектори за константни и неконстантни обекти. ### Задача 2 +.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11/Exercise02 Решение] + Реализирайте шаблонен клас [`Option`], който съхранява стойност от тип [`T`]. Нека конструкторите да [=не=] са публични. @@ -30,6 +34,8 @@ ### Задача 3 +.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11/Exercise03 Решение] + Реализирайте шаблонен клас [`SharedPointer`], който пази динамично-заделен указател към тип [`T`]. Допълнително, класа следи за бройката свои [*инстанции*]. @@ -39,6 +45,7 @@ .note Това е вид [url https://en.wikipedia.org/wiki/Smart_pointer "smart pointer"]: динамично-заделен указател който сам освобождава паметта си, без ние да пишем експлицитен [`delete`]!\n В C++ има и други видове smart pointer-и, като "unique pointer" (който е описан в [url #-6 Задача 6]). + Добър въведителен ресурс по темата е [url https://courses.cs.washington.edu/courses/cse333/24au/lectures/16-c++-smartptr.pdf този]. Реализирайте [`operator*`] и [`operator->`], които съответстват на операциите върху запазения указател. @@ -65,6 +72,8 @@ int main() { ### Задача 4 +.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11/Exercise04 Решение] + Реализирайте шаблонен клас [`Vector`], който съхранява неограничено и оразмеряемо количество от обекти [`T`]. Освен голяма петица, реализирайте член-функции: @@ -81,12 +90,16 @@ int main() { ### Задача 5 +.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11/Exercise05 Решение] + Реализирайте клас [`DoubleVector`], който съхранява две неограничени и оразмеряеми количества от обекти, съответно от типове [`T`] и [`U`]. Имплементирайте голяма петица и член-функциите от [url #-4 Задача 4], обаче всяка трябва да е налична и за двете последователности от обекти. ### Задача 6 +.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11/Exercise06 Решение] + Реализирайте шаблонен клас [`UniquePointer`], който пази указател към тип [`T`]. Класа трябва да осигури, че само един обект има този указател. С други думи, [=не може да има копия=]! |