Result:= Shapes[I].HitTest(X, Y);

if Result then

Exit;

end;

end;

При этом, в случаю кругов, в реальности будет вызываться функция TCircle. HitTest, а в случае прямоугольников — TRectangle. HitTest.

Понятно, что в случае с одной абстрактной функцией выигрышь не совсем очевиден, но ведь можно расширить базовый класс, добавив в него функции:

TShape. Move(dx, dy: Integer); virtual; abstract;

для перемещения примитива,

TShape. Rotate(x, y: Integer; angel: Double); virtual; abstract;

для поворота вокруг точки,

TShape. Flip(Line: TLine); virtual; abstract;

для зеркального отображения вокруг прямой.

Реализация данных методов уникальна для каждого из классов наследников, однако сама функциональность применима ко всем графическим примитивам.

Перейти на страницу:

Похожие книги