JustCaptain kod-buduschego
e44b3dcaea03c3c3b4fbebcb5af2325d40ae8b10
Перейти к файлу
Код
TASKS.md

Проект: MiniSocial

Введение от технического руководителя

Команда, нам поручили разработать прототип новой социальной сети.

Бюджет ограничен, сроки сжатые, поэтому начинаем с минимального набора функций.

Наша задача — постепенно построить систему так, чтобы её можно было расширять без переписывания кода.

На каждом этапе заказчик будет приносить новые требования. Вам предстоит дорабатывать существующий код, а не писать всё заново.

⸻

Задача №1. Модель пользователя

Контекст

Сейчас в системе нет пользователей.

Любая социальная сеть начинается с аккаунта.

Требование

Разработать класс:

User

Каждый пользователь должен хранить:

  • имя

Пример работы

user = User("Alex")
print(user.name)

Результат:

Alex

Критерии приемки

  • существует класс User
  • имя задаётся при создании объекта
  • имя доступно через атрибут

⸻

Задача №2. Профиль пользователя

Контекст

Заказчик хочет отображать дополнительную информацию о пользователе.

Требование

Добавить:

  • возраст
  • город

Пример

user = User(
"Alex",
15,
"Москва"
)

Критерии приемки

Данные сохраняются внутри объекта.

⸻

Задача №3. Отображение профиля

Контекст

Сейчас данные есть, но пользователь не может посмотреть свой профиль.

Требование

Добавить метод:

show_profile()

Пример вывода:

Имя: Alex
Возраст: 15
Город: Москва

Ограничения

Метод должен брать данные из объекта.

⸻

Задача №4. Подписчики

Контекст

Для социальной сети важно понимать популярность пользователя.

Требование

Добавить счетчик подписчиков.

Начальное значение:

0

Добавить метод:

follow()

Каждый вызов увеличивает количество подписчиков.

⸻

Пример

user.follow()
user.follow()

Результат:

2

⸻

Задача №5. Публикация контента

Контекст

Пользователи не могут ничего публиковать.

Социальная сеть бесполезна.

Требование

Создать новый класс:

Post

Каждый пост хранит:

  • текст

⸻

Пример

post = Post(
"Сегодня изучаю Python"
)

⸻

Задача №6. Пользователь создаёт пост

Контекст

Пост существует отдельно от пользователя.

Это неудобно.

Требование

Каждый пользователь должен иметь список своих публикаций.

Добавить:

self.posts

Метод:

create_post()

⸻

Пример

user.create_post(
"Первый пост"
)

⸻

Ожидаемый результат

Пост появляется внутри коллекции пользователя.

⸻

Задача №7. Лайки

Контекст

Заказчик хочет видеть реакцию аудитории.

Требование

Добавить в пост:

likes

Метод:

like()

⸻

Пример

post.like()
post.like()

Результат:

2

⸻

Задача №8. Лента пользователя

Контекст

Пользователь должен видеть свои публикации.

Требование

Добавить метод:

show_posts()

⸻

Пример вывода

  1. Первый пост
  2. Сегодня изучаю Python
  3. Мой кот сломал клавиатуру

⸻

Задача №9. Комментарии

Контекст

Пользователи хотят общаться под публикациями.

Требование

Создать класс:

Comment

Поля:

  • автор
  • текст

Каждый пост должен хранить список комментариев.

⸻

Пример

comment = Comment(
"Max",
"Классный пост"
)

⸻

Задача №10. Система рейтинга

Контекст

Нужно определять самых популярных пользователей.

Требование

Реализовать метод:

get_rating()

Формула:

1 подписчик = 5 очков
1 лайк = 1 очко

⸻

Пример

Подписчики: 10
Лайки: 50

Рейтинг:

100

⸻

Задача №11. VIP аккаунты

Контекст

Появилась платная подписка.

Требование

Создать класс:

VIPUser

На основе:

User

Особенности:

  • рейтинг умножается на 2
  • можно закреплять посты

⸻

Задача №12. Топ пользователей

Контекст

Администрация хочет видеть лидеров платформы.

Требование

Имея список пользователей:

users = [...]

найти пользователя с максимальным рейтингом.

⸻

Вывод

Лучший пользователь: Alex
Рейтинг: 350

⸻

Задача №13. Модерация

Контекст

Некоторые сообщения нарушают правила платформы.

Требование

Создать класс:

Moderator

Метод:

delete_post()

⸻

После удаления пост исчезает из профиля пользователя.

⸻

Задача №14. Жалобы

Контекст

Пользователи должны иметь возможность жаловаться на контент.

Требование

Каждый пост хранит:

reports

Метод:

report()

Если жалоб больше 10:

Пост скрыт

⸻

Финальная задача

Контекст

Заказчик хочет увидеть демонстрацию системы.

Необходимо

Создать:

  • 5 пользователей
  • 1 VIP пользователя
  • минимум 15 постов
  • минимум 50 лайков
  • комментарии
  • подписчиков
  • жалобы

После запуска программы вывести:

Количество пользователей
Количество постов
Количество комментариев
Самый популярный пользователь
Самый популярный пост
Посты, скрытые модерацией

⸻

После выполнения всех этапов ученик незаметно для себя проходит:

  • классы
  • объекты
  • атрибуты
  • методы
  • списки объектов
  • композицию
  • наследование
  • полиморфизм
  • взаимодействие объектов

И главное — понимает, зачем это нужно, потому что каждая следующая задача ломает предыдущую архитектуру и заставляет улучшать модель данных, как это происходит в настоящей разработке.