Program
OOP_Primer;
Uses
CRT, Graph;
Type
TFigure
=
Object
x, y :Integer; {
координаты
фигуры}
color :Word; {
и
её
цвет}
Constructor Init ( ax, ay :Integer; col
:Word );
Procedure Draw ( col :Word ); Virtual;
Procedure Show;
Procedure Hide;
Procedure MoveTo ( dx, dy :Integer );
End;
TPoint = Object ( TFigure ) { TFigure –
имя
родительского
типа
}
Procedure Draw ( col :Word ); Virtual;
End;
TCircle = Object ( TPoint )
R :Integer; {
радиус
окружности
}
Constructor Init (ax,ay,aR :Integer; col
:Word );
Procedure Draw ( col :Word );
Virtual;
End;
{
реализация
методов
TFigure
}
Constructor
TFigure. Init ( ax, ay :Integer; col :Word );
Begin x := ax; y := ay; color := col; End;
Procedure TFigure. Draw( col :Word );
Begin
{ничего не делает, потомки должны перекрывать этот метод}
End;
Procedure TFigure. Show;
Begin Draw ( Color ); End;
Procedure TFigure. Hide;
Begin Draw ( GetBkColor ); End;
Procedure TFigure. MoveTo ( dx, dy :Integer ):
Begin Hide; x := x+dx; y := y+dy; Show; End;
{
реализация
методов
TPoint
}
Procedure TPoint. Draw( col :Word );
Begin PutPixel ( x, y, col ); End;
{
реализация
методов
TCircle
}
Constructor TCircle. Init;
Begin
Inherited Init ( ax, ay, col ); R := aR; End;
Procedure TCircle. Draw( col :Word );
Begin SetColor ( col ); Circle ( x, y, R ); End;
{ $I
GrInit }
Var
VCircle : TCircle;
Begin
GrInit;
VCircle. Init ( 320, 240, 100, 12
);
VCircle. Show;
ReadKey;
CloseGraph;
End.