Основы объектно-ориентированного программирования
0e1cc9b4

Класс POINT


Ниже приведена версия исходного текста класса POINT. Фрагменты, начинающиеся с двух тире "--", представляют собой комментарии, продолжающиеся до конца строки. Комментарии содержат пояснения, облегчающие понимание текста, и не влияют на семантику класса.

indexing description: "Точка на плоскости" class POINT feature x, y: REAL -- Абсцисса и ордината rho: REAL is -- Расстояние до начала координат (0, 0) do Result := sqrt (x^2 + y^2) end theta: REAL is -- Полярный угол do -- Предлагается реализовать в качестве упражнения (упр. У7.3) end distance (p: POINT): REAL is -- Расстояние до точки p do Result := sqrt ((x - p.x)^2 + (y- p.y)^2) end translate (a, b: REAL) is -- Перемещение на a по горизонтали, b по вертикали do x := x + a y := y + b end scale (factor: REAL) is -- Изменение расстояния до начала координат в factor раз do x := factor * x y := factor * y end rotate (p: POINT; angle: REAL) is -- Поворот вокруг p на угол angle do -- Предлагается реализовать в качестве упражнения (упр. У7.3) end end

Некоторые аспекты приведенного текста неочевидны и требуют дополнительных разъяснений.

Класс в основном состоит из предложения, перечисляющего различные компоненты, вводимого ключевым словом feature. Кроме того, присутствует предложение indexing дающее общее описание (description), полезное для понимания функциональности класса, но никак не влияющее на семантику исполнения. Позднее будут рассмотрены три дополнительных предложения: inherit - для наследования; creation - при необходимости использования специального конструктора; invariant - для объявления инвариантов класса. Будет рассмотрена также возможность включения в класс двух или более предложений feature.



Содержание раздела