diff options
1 files changed, 19 insertions, 19 deletions
| -rw-r--r-- | src/teaching/oop-2025/week15/index.du | 38 |
diff --git a/src/teaching/oop-2025/week15/index.du b/src/teaching/oop-2025/week15/index.du index 09e7a90..eececaa 100644 --- a/src/teaching/oop-2025/week15/index.du +++ b/src/teaching/oop-2025/week15/index.du @@ -1,9 +1,9 @@ -# Задачи - ООП, Седмица 15, 03.06.2026 +'def title Задачи - ООП, Седмица 15, 03.06.2026 +'def desc Условията на задачите за упражнение. -'define expected-reading 3 min -'define created 03 June 2026 -'define edited 03 June 2026 -[$pagenav] +# {title} + +{pagenav 3 min;03 June 2026;03 June 2026} ## За решаване @@ -11,35 +11,35 @@ Ще създадем система за създаване на постове от потребители, нещо подобно на Facebook/Reddit/... -Реализирайте шаблонен клас [`Database`], който съхранява неограничено количество от обекти от тип [`T`] с идентификатор от тип [`K`]. -На всеки обект може да съответства един [*уникален*] идентификатор. -За тип [`K`] можем да допуснем единствено, че поддържа [`operator==`]. +Реализирайте шаблонен клас {` Database}, който съхранява неограничено количество от обекти от тип {` T} с идентификатор от тип {` K}. +На всеки обект може да съответства един {i уникален} идентификатор. +За тип {` K} можем да допуснем единствено, че поддържа {` operator==}. -В [`Database`] трябва да може да се добавят и премахват елементи, спрямо даден идентификатор. -Нека тези член-функции да връщат [`bool`], спрямо това дали операцията е успешна. +В {` Database} трябва да може да се добавят и премахват елементи, спрямо даден идентификатор. +Нека тези член-функции да връщат {` bool}, спрямо това дали операцията е успешна. -Реализирайте клас [`User`], който въхранява имейл, потребителско име и парола. +Реализирайте клас {` User}, който въхранява имейл, потребителско име и парола. .bulleted -- Имейла трябва да е в [url https://en.wikipedia.org/wiki/Email_address#Syntax коректен формат] (не е нужно 100% покритие на всички изисквания, но поне по-значимите ограничения да се проверяват). +- Имейла трябва да е в {url коректен формат;https://en.wikipedia.org/wiki/Email_address#Syntax} (не е нужно 100% покритие на всички изисквания, но поне по-значимите ограничения да се проверяват). - Потребителското име може да съдържа латински бувки, цифри, тире и долна черта, като не може да започва с тире или цифра. - Паролата трябва да бъде поне 8 знака и да съдържа поне една цифра, една буква и един специален знак (нито цифра, нито буква) -Реализирайте клас [`Post`], който съхранява идентификатор на потребител (какъв е типа на този идентификатор ще бъде описано по-късно), текстово съдържание с неограничен размер и контейнер с идентификатори на всички потребители, които са харесали поста. +Реализирайте клас {` Post}, който съхранява идентификатор на потребител (какъв е типа на този идентификатор ще бъде описано по-късно), текстово съдържание с неограничен размер и контейнер с идентификатори на всички потребители, които са харесали поста. -Реализирайте клас [`PostSystem`], който съхранява колекции от потребители и постове (използвайки [`Database`]), като е шаблонен спрямо типа на идентификатора на потребителя. +Реализирайте клас {` PostSystem}, който съхранява колекции от потребители и постове (използвайки {` Database}), като е шаблонен спрямо типа на идентификатора на потребителя. Трябва да поддържа методи за регистриране на нов потребител, изтриване на акаунт, влизане в акаунт и излизане от акаунт. -При влизане в акаунт, системата връща "токен" от тип [`A`], който се използва за всички операции, където е нужна информация на съществуващ потребител. -Разбира се, всеки токен се пази в [`PostSystem`] и при потребителска операция се прави сравнение дали токена съответства на потребителя. +При влизане в акаунт, системата връща "токен" от тип {` A}, който се използва за всички операции, където е нужна информация на съществуващ потребител. +Разбира се, всеки токен се пази в {` PostSystem} и при потребителска операция се прави сравнение дали токена съответства на потребителя. При влизане в акаунт се проверява дали генерирания токен съществува, и ако да, тогава влизането се отказва. -За тип [`A`] единствено можем да допуснем, че поддържа [`operator==`]. +За тип {` A} единствено можем да допуснем, че поддържа {` operator==}. Понеже не знаем типа и следователно не знаем как да се генерира токена, член-функцията за генериране не може да има реализация. Освен тези операции, влязъл потребител може да създаде пост, да изтрие пост и да маркира/отмаркира пост като харесан. -Реализирайте наследник [`SecureForum`], където потребителските идентификатори и токени са целочислени неотрицателни поне 16-битови числа. +Реализирайте наследник {` SecureForum}, където потребителските идентификатори и токени са целочислени неотрицателни поне 16-битови числа. Всеки потребител си има единствен токен след влизане в акаунта (т.е. може да влезе в акаунта само ако е излязъл). -Реализирайте наследник [`StandardForum`], където потребителския идентификатор е целочислено неотрицателно число и токена е низ. +Реализирайте наследник {` StandardForum}, където потребителския идентификатор е целочислено неотрицателно число и токена е низ. Има неограничено количество токени за всеки потребител |