Класс RECTANGLE выглядит следующим образом:
indexing description: "Прямоугольники, - специальный случай многоугольников" class RECTANGLE inherit POLYGON redefine perimeter end creation make feature -- Инициализация make (center: POINT; s1, s2, angle: REAL) is -- Установить центр прямоугольника в center, длины сторон -- s1 и s2 и ориентацию angle. do ... end feature -- Access side1, side2: REAL -- Длины двух сторон diagonal: REAL -- Длина диагонали perimeter: REAL is -- Сумма длин сторон -- (Переопределение версии из POLYGON) do Result := 2 S (side1 + side2) end invariant four_sides: count = 4
first_side: (vertices.i_th (1)).distance (vertices.i_th (2)) = side1 second_side: (vertices.i_th (2)).distance (vertices.i_th (3)) = side2 third_side: (vertices.i_th (3)).distance (vertices.i_th (4)) = side1 fourth_side: (vertices.i_th (4)).distance (vertices.i_th (1)) = side2 end
Для списка i_th(i) дает элемент в позиции i ( i-й элемент, следовательно это имя запроса). |
Так как RECTANGLE является наследником класса POLYGON, то все компоненты родительского класса применимы и к новому классу: vertices, rotate, translate, perimeter (в переопределенном виде) и все остальные. Их не нужно повторять в определении нового класса.
Этот процесс транзитивен: всякий класс, будучи наследником RECTANGLE, например, SQUARE, также обладает всеми компонентами класса POLYGON.