Три имени квадрата и пересечение классов эквивалентности

В книге Юлии Гиппенрейтер «Как учиться с интересом» я нашла такую историю о занятиях Александра Звонкина с детьми:

Обсуждаются сделанные из картона фигуры: квадрат, прямоугольник и неправильный четырехугольник. Мы детально обсуждаем их свойства. Прежде всего, у всех фигурок — по четыре угла. Значит, каждую из них мы можем назвать четырехугольником. Итого: у нас три четырехугольника.

668. Четырехугольник

При этом два из них отличаются тем, что у них все углы прямые. За это их называют прямоугольниками. Один из двух прямоугольников особый: у него все стороны одинакового размера. Его называют квадратом.

669. Прямоугольник
У квадрата как бы три имени: его можно назвать и квадратом, и прямоугольником, и четырехугольником — и все будет правильно.

Моя информация встречается не без сопротивления. Дети упорно стремятся мыслить в понятиях непересекающихся классов.

Другой пример:

— Являются ли папы и дедушки мужчинами, а мужчины — людьми?

667. Являются ли папы и дедушки мужчинами, джуны
Мне кажется, это отличная аналогия для классов эквивалентности! В один класс эквивалентности мы собираем все значения, для которых система должна (по нашему мнению) работать одинаково. Простые числа, мужские имена, и так далее. Чтобы не проверять всё множество вариантов, мы проверяем одно значение из класса.

И когда мы пытаемся выделить класссы, мы придумываем разные бизнес-сценарии для поля. Это и будут разные классы, разные строки в нашем чек-листе проверок. Проблема в том, что одно и то же значение может быть в разных классах. Например, имя «Ольга»:

  • Распространенное имя
  • Женское имя
  • Средняя длина строки
  • С буквой, которая одинаково выглядят на русском и на английском
  • ….

И это ступор — как так? Ведь классы не должны пересекаться! Но Ольга может быть женщиной, дочкой, мамой, бабушкой, женой, человеком…

Классы эквивалентности могут пересекаться. И это нормально.

При составлении чек-листа проверок наша задача:

  1. Найти как можно больше идей для тестов, выделить разные классы.
  2. Удалить дубли.

Первый шаг — мозговой штурм. Если пытаться сразу и идеи накидывать, и отсекать лишние, придумаете намного меньше, чем могли бы. Стандартные правила мозгового штурма — на этапе генерации идей не отсекаем НИЧЕГО, даже «глупая идея» может по цепочке ассоциаций привести к гениальной.

Отсекать будем потом. Поэтому на этапе написания чек-листа не переживайте, если примеры для вроде бы разных тестов пересекаются.