Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Системный анализ, проектирование и UML > Наследовать или нет.


Автор: a11en 20.12.2008, 22:45
Столкнулся с проблемой при программировании генетического алгоритма, имеются 3 класса хромосома, особь, популяция. И так как опыта очень мало не могу понять стоит ли наследовать один класс от другого, если особь, по сути набор(массив) хромосом, а популяция массив особей.
Заранее благодарен, если ошибся с разделом, то не пинайте, но по-моему в нужный раздел написал.

Автор: nmn 21.12.2008, 01:40
наследование не надо, а то получится как у франкенштейна smile
особь это не хромосома, а набор их, то же самое с популяцией, это не особь и тем более не хромосома

мое имхо

Автор: a11en 21.12.2008, 09:59
да, спасибо, я как раз дошел до этого... что-то ночью туго думалось

Автор: maxim1000 21.12.2008, 11:31
немного более общие рекомендации
1. если есть сомнения, то, скорее всего, наследовать не нужно
2. наследовать нужно только если есть понимание, как это будет использоваться в программе, просто так наследовать не стоит

Добавлено через 1 минуту и 44 секунды
ну и, конечно, же семантика наследования:
3. наследовать стоит только если любой объект класса A является также объектом класса B (A наследуется от B)

Автор: ida 9.1.2009, 16:09
a11en, по-моему это композиция. Даже агрегация.

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

Наследованием для вашего примеры было бы:

Родительский класс - Хромосома.
Дочерние - X-хромосома, Y-хромосома.

Родительский класс - Особь человека.
Дочерние: мужчина, женщина.

Это пример, просто чтобы объяснить разницу между наследованием и композицией(агрегацией).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)