Что такое вырожденный класс? - PullRequest
8 голосов
/ 25 июля 2011

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

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

Ответы [ 2 ]

8 голосов
/ 24 июня 2014

Я также ищу точный ответ, вот как я понял это так далеко от Google:

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

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

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

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

Большая Ява:

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

Effective 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.

Effective Java 2nd edition:

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

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

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

Большая Ява:

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

2 голосов
/ 25 июля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...