нецелесообразно, наилучшим решением будет определение подобных операций как компонентов некоторого специализированного класса, который называется, например,
class POINT inherit
ARITHMETIC
feature
... Остальная часть кода без изменений ...
end
| Эта методика наследования функциональных возможностей общего характера является до некоторой степени спорной. Кто-то может полагать, что принципы ОО-подразумевают включение функций типа |
Объектно-ориентированный стиль вычислений
Обратимся теперь к фундаментальным свойствам класса
Текущий экземпляр
Обратимся опять к тексту одной из подпрограмм, процедуре
translate (a, b: REAL) is
-- Перемещение на a по горизонтали, b по вертикали
do
x:= x + a
y:= y + b
end
На первый взгляд этот текст совершенно понятен - для перемещения точки на расстояние
Текст класса описывает свойства и поведение объектов определенного типа, в данном случае точек. Это достигается путем описания свойств и поведения типичного экземпляра такого типа. Можно было бы назвать этот экземпляр 'точкой на улице' по примеру того, как газеты представляют мнение 'человека с улицы'. Мы будем использовать более формальное имя - текущий экземпляр класса.
Иногда возникает необходимость явного обращения к текущему экземпляру. Зарезервированное слово
Current
обеспечивает эту возможность. В тексте класса
distance (p: POINT): REAL is
-- Расстояние до точки p
do
if p /= Current then
Result := sqrt ((x - p.x)^2 + (y- p.y)^2)
end
end
Здесь
Тем не менее, в большинстве случаев текущий экземпляр подразумевается, и нет необходимости обращаться к
Конечно, по-прежнему остается загадкой, кто же он -
Клиенты и поставщики
Игнорируя ряд моментов, связанных с загадкой идентификации
