Что класс дегенератов?

Так как никто еще не спросил, И я еще не нашел подходящего ответа; проще говоря: что такое вырожденный класс?

примеры различных языков были бы полезны...Кроме UML. : P

2 ответов


с здесь Я гадание что это класс без поведения (т. е. методы).


Я также ищу окончательный ответ, вот как я понял это до сих пор от google:

в математике вырождение означает предельном случае в котором класс объекта изменяет свою природу, чтобы принадлежать другому,обычно проще, класс.

  • точка является вырожденным случаем окружности, поскольку радиус приближается к 0
  • круг является вырожденной формой эллипса по мере приближения эксцентриситета 0

в программировании, следуя этой концепции "коллапса" во что-то более простое, вырождение, по-видимому, используется несколькими способами:

1. Класс без методов или просто основной метод:

Большая Java:

наконец, вы видели классы только с основным методом. Их единственная цель-запустить программу. С точки зрения дизайна, это несколько вырожденные примеры занятия.

эффективное Java 2nd edition:

пункт 14: в общедоступных классах используйте методы доступа, а не общедоступные поля

иногда у вас может возникнуть соблазн написать вырожденные классы, которые не служат никакой цели, кроме как группировать поля экземпляра:

// Degenerate classes like this should not be public!
class Point {
  public double x;
  public double y;
}

2. Класс с меньшей специфичностью, который заставляет его вести себя как другой более простой класс:

Обучение Java:

например, класс List и List совместно используют простой старый список классов Java. List называется необработанным типом универсального класса. Каждый дженерик имеет сырой вид. это вырожденная, "простая" форма Java из которого была удалена вся информация общего типа и переменные типа заменены общим типом Java, таким как Object.

эффективное Java 2nd edition:

// The worst possible legal hash function - never use!
@Override public int hashCode() { return 42; }

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

3. Самый простой, самый пустой экземпляр класса:

Большая Java:

однако иногда вы попадаете в философские вопросы, касающиеся дегенерат входы: пустые строки, фигуры без области и так далее.