Лабораторная работа №18

“Работа с объектами в Borland Pascal”

Задание: Написать программу на языке Pascal, в которой необходимо описать объект, дочерний от имеющегося и продемонстрировать работу с этим объектом на примере геометрических фигур, перемещающихся по экрану с помощью клавиш <↑>,<↓>,<←>,<→>. Фигуры изображены в таблице 18.1.

Таблица 18.1

Указания: набор графических объектов, которые следует использовать при написании, находится в модуле Figures, который необходимо подключить к программе. В данном модуле описаны следующие фигуры: точка и окружность.

Объект point {точка} обладает следующими методами: show, hide, moveto, drag {показать, спрятать, двигать в, перетянуть}.

Объект circle {окружность} имеет следующие методы: show, hide, expand, contract {показать, спрятать, увеличить, уменьшить}.

Методы show и hide объектов точка и окружность используются без операндов, метод moveto объекта point используется с координатами новой точки в качестве операндов, метод drag используется с операндом DragBy, который характеризует скорость перетягивания.

Методы expand и contract объекта circle используются с операндом, на значение которого увеличивается или уменьшается радиус окружности.

Пример использования объекта circle и построения дочернего объекта arc:

program FigureDemo;

uses crt,dos,graph,figures;

const PathToDrivers = 'c:\tp\bgi';

type Arc=object(Circle)

StartAngle,EndAngle:integer;

constructor Init(InitX, InitY:integer; InitRadius:integer; InitStartAngle,InitEndAngle:integer);

procedure Show; virtual;

procedure Hide; virtual;

end;

var

GraphDriver:integer;

GraphMode:integer;

ErrorCode:integer;

AnArc:Arc;

ACircle:Circle;

{ Arc Object Methods Description }

constructor Arc.Init(InitX,InitY:integer;InitRadius:integer;InitStartAngle,InitEndAngle:integer);

begin

Circle.Init(InitX,InitY,InitRadius);

StartAngle:=InitStartAngle;

EndAngle:=InitEndAngle;

end;

procedure Arc.Show;

begin

Visible:=true;

Graph.Arc(X,Y,StartAngle,EndAngle,Radius);

end;

procedure Arc.Hide;

var

TempColor:word;

begin

TempColor:=Graph.GetColor;

Graph.SetColor(GetBkColor);

Visible:=false;

Graph.Arc(X,Y,StartAngle,EndAngle,Radius);

Graph.SetColor(TempColor);

end;

{ Main Program }

Begin

GraphDriver:=Detect;

DetectGraph(GraphDriver,GraphMode);

InitGraph(GraphDriver,GraphMode,PathToDrivers);

if GraphResult<>GrOK then

begin

Writeln(GraphErrorMsg(GraphDriver));

if GraphDriver=grFileNotFound then

begin

Writeln('Driver not found in ',PathToDrivers,',please, check in the program','"PathToDrivers",');

writeln('it means value of path constant');

writeln;

end;

writeln('Press ENTER...');

Readln;

Halt(1);

end;

{ All of the children of Point object contain virtual methods and

must be initialised using constructor }

AnArc.Init(151,82,25,0,90);

AnArc.Drag(5);

CloseGraph;

end.

Контрольные вопросы:

Что такое объект?

Что называется методом объекта?

Какие объекты называют дочерними?

Имеет ли дочерний объект методы родительского?

Как описывается объект?

Чем отличается объектно-ориентированное программирование от статического?

Какие преимущества и недостатки объектно-ориентированного программирования Вы можете назвать?


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: