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

GitHub classroom: classroom.github.com/a/z2QadyEE

Задача

В тази задача се оставя голямо количество свобода на имплементация, за всяко нещо сами преценете типове, помощни класове/член функции, оператори и так. нат. Както винаги, реализирайте голяма петица където е нужно.

Препоръчително е първо да изчетете цялото условие и след това да пишете код.

Реализирайте система за чат. В нея имаме съобщения, като едно съобщение може да бъде:

Всеки тип трябва да имплементира Print член-функция, която изкарва текстово съдържание на съобщението. За текстово съобщение това е самия текст, за локация това е низ във формата “[ДЪРЖАВА] ГРАД(ОБЛАСТ) УЛИЦА NoНОМЕР НА УЛИЦА”, за линк е самия текст и за време е “ЧАС:МИНУТИ ДЕН.МЕСЕЦ.ГОДИНА”.

Реализирайте потребители, като за всеки потребител имаме потребителско име и парола.

Реализирайте чатруум, който съхранява записани потребители в групата, съобщения и съответните потребителски имена на авторите. Един потребител може да се добави в чатруум, да създава нови съобщения и може да излезе, като един излязъл потребител може да вижда историята на чата до момента в който е излязъл. Ако обратно бъде вкаран, тогава пак може да вижда всички съобщения от историята и да създава нови.

Всеки потребител може да създаде чатруум и да запише хора в него (по потребителски имена), и може да излезе. Допълнително собственика на чатруум може да изтрие самия чатруум и да премахва хора. Ако собственикът се отпише тогава новият собственик е следващия по ред записан потребител.

Реализирайте “платформа” в която се съхраняват всички чатове и потребители, от която също се създават потребители.

Имплементирайте конзолен интерфейс, от който може да създадете потребител, да влезете в акаунта на потребител, след като сте влезли да разглеждате всички налични чатове. Ако сте член на даден чат да създавате ново съобщение и да излезете. Ако сте собственик да изтриете чат и да премахвате потребители от чата.