Jump to content

Задачи - ООП, Седмица 15, 03.06.2026

За решаване

Задача

Ще създадем система за създаване на постове от потребители, нещо подобно на Facebook/Reddit/...

Реализирайте шаблонен клас Database, който съхранява неограничено количество от обекти от тип T с идентификатор от тип K. На всеки обект може да съответства един уникален идентификатор. За тип K можем да допуснем единствено, че поддържа operator==.

В Database трябва да може да се добавят и премахват елементи, спрямо даден идентификатор. Нека тези член-функции да връщат bool, спрямо това дали операцията е успешна.

Реализирайте клас User, който въхранява имейл, потребителско име и парола.

Реализирайте клас Post, който съхранява идентификатор на потребител (какъв е типа на този идентификатор ще бъде описано по-късно), текстово съдържание с неограничен размер и контейнер с идентификатори на всички потребители, които са харесали поста.

Реализирайте клас PostSystem, който съхранява колекции от потребители и постове (използвайки Database), като е шаблонен спрямо типа на идентификатора на потребителя. Трябва да поддържа методи за регистриране на нов потребител, изтриване на акаунт, влизане в акаунт и излизане от акаунт.

При влизане в акаунт, системата връща "токен" от тип A, който се използва за всички операции, където е нужна информация на съществуващ потребител. Разбира се, всеки токен се пази в PostSystem и при потребителска операция се прави сравнение дали токена съответства на потребителя. При влизане в акаунт се проверява дали генерирания токен съществува, и ако да, тогава влизането се отказва.

За тип A единствено можем да допуснем, че поддържа operator==. Понеже не знаем типа и следователно не знаем как да се генерира токена, член-функцията за генериране не може да има реализация.

Освен тези операции, влязъл потребител може да създаде пост, да изтрие пост и да маркира/отмаркира пост като харесан.

Реализирайте наследник SecureForum, където потребителските идентификатори и токени са целочислени неотрицателни поне 16-битови числа. Всеки потребител си има единствен токен след влизане в акаунта (т.е. може да влезе в акаунта само ако е излязъл).

Реализирайте наследник StandardForum, където потребителския идентификатор е целочислено неотрицателно число и токена е низ. Има неограничено количество токени за всеки потребител