Перейти к содержанию

Учебный проект: небольшая библиотека

Начало урока

Учебный проект: небольшая библиотека

Спроектируем и построим с нуля одну целостную, переиспользуемую утилиту статистики

Главная идея: библиотека — это небольшой, хорошо продуманный блок кода, который решает одну задачу настолько удачно, что решать её заново уже не хочется. В этом итоговом проекте мы объединяем всё из курса — классы, шаблоны, STL, RAII, ссылки и const-корректность — чтобы построить переиспользуемый класс Stats<T>, который собирает числа и вычисляет по ним статистику.
К концу вы сможете:
  • спланировать публичный API маленькой библиотеки ещё до первой строки кода,
  • обернуть STL-контейнер (std::vector<T>) так, чтобы всей памятью занимался RAII,
  • сделать класс шаблоном, чтобы он работал с int, double и другими типами,
  • реализовать статистику через алгоритмы STL (std::accumulate, std::min_element, std::sort),
  • применить const-корректность и передавать объекты по const-ссылке, избегая лишних копий.

1. Сначала план: что должна делать библиотека?

Хорошая библиотека похожа на качественный мультитул. Вы не носите десять отдельных приспособлений — вы носите один предмет, каждая кнопка которого делает понятное дело. Прежде чем писать код, мы определяем публичный API — набор операций, доступных пользователю, — а всё остальное держим приватным.

Наша цель: тип Stats<T>, который пользователь наполняет числами, а затем запрашивает привычную статистику. Обещанные операции:

  • add(value) и operator+= — добавить число;
  • count(), empty() — сколько чисел уже есть;
  • sum(), mean(), min(), max() — базовые величины;
  • variance(), stddev(), median() — разброс.

Внутреннее хранилище (вектор, массив, файл) касается только самого класса. Это разделение — чистая поверхность над скрытой реализацией — называется инкапсуляцией и в этом весь смысл библиотеки.

Хорошее правило: API — это обещание. Как только люди начали полагаться на mean(), вы вольны менять внутренний способ вычисления, но не вправе менять его внешний смысл.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя