Наследование функциональных возможностей общего характера

We use cookies. Read the Privacy and Cookie Policy

Наследование функциональных возможностей общего характера

Другим аспектом класса POINT, требующим разъяснений, является присутствие в функциях rho и distance вызовов функции sqrt. Понятно, что эта функция возвращает квадратный корень действительного числа, но откуда она появилась?

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

class POINT inherit

ARITHMETIC

feature

... Остальная часть кода без изменений ...

end

Эта методика наследования функциональных возможностей общего характера является до некоторой степени спорной. Кто-то может полагать, что принципы ОО-подразумевают включение функций типа sqrt в качестве компонентов класса, которому принадлежит объект, например, REAL. Однако существует ряд операций с действительными числами, не все из которых стоит включать в данный класс. В дискуссии о принципах дизайна мы вернемся к вопросу о полезности "вспомогательных" классов, таких как ARITHMETIC. (См. "Наследование функциональных возможностей", лекция 6 курса "Основы объектно-ориентированного проектирования".)