JavaRush
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • operator<=> — идея трёхстороннего сравнения в C++23

    C++ SELF
    50 уровень,0 лекция
    Разбираем, зачем типам в C++ нужен «естественный» порядок для STL, как работает трёхстороннее сравнение operator<=> (spaceship), что даёт = default, как аккуратно задать порядок вручную (и почему результат сравнения проверяют через != 0), а также как согласовать порядок с operator==. Закрепляем на примере мини‑приложения TaskBox и обсуждаем типичные ошибки.
    Открыта
  • Операторы vs компараторы

    C++ SELF
    50 уровень,1 лекция
    Разбираем, когда сравнение стоит «вшивать» в тип через operator== и operator<=>, а когда правильнее задавать локальные правила через компаратор в std::sort. На примере модели Task обсуждаем смысл «идентичности» (равенство по id или по всем полям), поиск через std::find и std::find_if, а также типичные ошибки дизайна и «нечистых» компараторов.
    Открыта
  • “has‑a” vs “is‑a”: инструмент дизайна

    C++ SELF
    50 уровень,2 лекция
    Разбираем, как отличать отношения is‑a и has‑a в дизайне классов: когда уместно «является», а когда лучше «содержит/использует». На учебном примере todo‑приложения показываем композицию и делегирование: TodoApp как координатор, TaskRepository как хранилище, Printer и CLI‑слой для I/O. Отдельно фиксируем формы композиции (значение, ссылка, std::unique_ptr) и типичные ошибки.
    Открыта
  • Разделение модулей: model / storage / parser / cli

    C++ SELF
    50 уровень,3 лекция
    Разбираем модульное разбиение консольного приложения на роли: model (данные и инварианты), storage (операции и хранение), parser (строка → Command), cli (ввод/вывод и координация). На примере todo‑менеджера строим маршрут команды, проектируем Task и TaskRepository, пишем parse_command на std::istringstream и связываем всё в «тонком» интерфейсе, избегая печати из хранилища и выполнения логики внутри парсера.
    Открыта
  • Зависимости и инверсия

    C++ SELF
    50 уровень,4 лекция
    Разбираем, почему скрытые зависимости (вроде прямого использования std::cout) делают код хрупким, как «развернуть» ответственность с помощью инверсии (сборка в main()), и как оформлять честные контракты через std::istream &/ std::ostream &, TaskRepository & и отдельные компоненты ( Parser, Printer, CLI). Отдельно обсуждаем ссылки, указатели, владение ( std::unique_ptr) и «мягкую» инверсию через функции ( std::function).
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush