Изучите пример использования объектно-ориентированного подхода в написании программ (см. ниже). Включите в предлагаемые программы использование и других объектов и методов, их комбинаций (например, поочередное рисование окружности и точки, "увеличение" квадрата и т.п.).
На основе объектов модуля Figures создайте свой объект (геометрическую фигуру), включите в них дополнительные методы.
Файл figures.pas
Unit Figures; interface Uses Graph, Crt; type TLocation = object X,Y: integer; procedure Init(InitX, InitY: integer); function GetX: integer; function GetY: integer; end; TPoint = object(TLocation) Visible: boolean; constructor Init(InitX, InitY: integer); destructor Done; virtual; procedure Show; virtual; procedure Hide; virtual; procedure MoveTo(NewX, NewY: integer); end; TCircle = object(TPoint) Radius: integer; constructor Init(InitX, InitY, InitRadius: integer); procedure Show; virtual; end; implementation procedure TLocation.Init(InitX, InitY: integer); begin X := InitX; Y := InitY; end; function TLocation.GetX: integer; begin GetX := X; end; function TLocation.GetY: integer; begin GetY := Y; end; constructor TPoint.Init(InitX, InitY: integer); begin TLocation.Init(InitX, InitY); Visible := false; end; destructor TPoint.Done; begin Hide; end; procedure TPoint.Show; begin Visible := true; PutPixel(X, Y, GetColor); end; procedure TPoint.Hide; var TempColor: byte; begin Visible := false; TempColor := GetColor; SetColor(GetBkColor); Show; SetColor(TempColor); end; procedure TPoint.MoveTo(NewX, NewY: integer); begin Hide; X := NewX; Y := NewY; Show; end; constructor TCircle.Init(InitX, InitY, InitRadius: integer); begin TPoint.Init(InitX, InitY); Radius := InitRadius; end; procedure TCircle.Show; begin Visible := true; Circle(X, Y, Radius); end; end.
Файл demooop1.pas
program DemoOOp1; {Пример использования объектов модуля Figures} uses Crt, Graph, Figures; var PFigure: ^TCircle; Gd, Gm : Integer; Begin Gd:=Detect; InitGraph(Gd, Gm, ''); New(PFigure); PFigure^.Init(100,100,50); PFigure^.Show; ReadKey; PFigure^.MoveTo(200,200); ReadKey; Dispose(PFigure); CloseGraph; End.
Файл demooop2.pas
program DemoOOp2; {Пример создания новых объектов (квадрат) на основе объектов модуля Figures} uses Crt, Graph, Figures; type TSquare = object(TPoint) Leg: integer; constructor Init(InitX, InitY, InitLeg: integer); procedure Show; virtual; end; constructor TSquare.Init(InitX, InitY, InitLeg: integer); begin TPoint.Init(InitX,InitY); Leg := InitLeg; end; procedure TSquare.Show; begin Visible := true; Rectangle(X, Y, X+Leg, Y+Leg); end; var PFigure: ^TSquare; Gd, Gm : Integer; Begin Gd:=Detect; InitGraph(Gd, Gm, ''); New(PFigure); PFigure^.Init(200,100,100); PFigure^.Show; ReadKey; PFigure^.MoveTo(400,100); ReadKey; Dispose(PFigure); CloseGraph; End.
Сергеев А.Н. КАГИ ВГПУ. Октябрь 2003