Подскажите пожалуйста, считается ли нормой в программировании наследование по принципу множество -> элемент множества? Например, у меня есть класс "кольцо многочленов с целыми коэффициентами", и я хочу от него наследовать класс "многочлен с целыми коэффициентами".
2 Answers
Да это считается нормой. В этом вся суть наследования – класс-наследник реализует спецификацию родительского класса. Я бы даже сделал класс "кольцо многочленов с целыми коэффициентами" абстрактным и от него уже наследовал все частные случаи.
- 1,873
Стоит быть аккуратнее с таким наследованием, потому что элемент множества может быть экземпляром класса, представляющего множество, а не производным от него классом.
Например, класс, представляющий людей с определенным набором свойств и экземпляр - конкретный человек. Такой человек уникален и вряд ли нужно от него наследовать что-то.
В Вашем примере можно рассматривать многочлен как производный класс кольца многочленов, хотя я сам бы использовал (и рекомендовал бы Вам) класс, представляющий кольцо многочленов с некоторым контейнером, содержащим эти многочлены и операцией добавления нового многочлена во множество, представляющее кольцо, с соответствующими операциями проверки нового многочлена на принадлежность кольцу (их 6, насколько я помню). Тут, правда, рассматривается, что у Вас конечное множество многочленов.
В случае использования наследования стоит помнить о следующем:
Вам надо определиться с типом наследования, т.е. означает ли оно реализован посредством или является разновидностью.
Рассмотреть альтернативы наследованию, например, использование композиции.
В Вашем примере для многочлена может использоваться множественное наследование, т.е. не только от кольца, но и от другого класса.
- 3,373