Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП -лаб.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
378.88 Кб
Скачать

Лабораторная работа №9 Наследование классов в Delphi

Цель работы: Изменить программу, разработанную в лабораторной работе №8 таким образом, чтобы в графическом редакторе можно было рисовать не только окружности, но и квадраты. Для этого необходимо разработать абстрактный класс, инкапсулирующий требуемый тип поведения фигур. От данного класса будут наследоваться классы, предназначенные для рисования окружностей и квадратов.

Последовательность выполнения работы:

1. Добавьте к проекту модуль, предназначенный для рисования окружностей и квадратов. Он содержит абстрактный класс TFigure, инкапсулирующий требуемый тип поведения фигур. От данного класса наследуются классы, предназначенные для рисования окружностей и квадратов.

unit Figure;

interface

Uses extctrls, Graphics;

Type TMyFigure=class {класс Фигура}

private

x,y,r:Word;

Color:TColor;

Image:TImage;

procedure Clear;

public

Constructor Create(aImage:TImage;ax,ay,ar:Word;aColor:TColor);

Procedure Draw; virtual; abstract; {абстрактная процедура}

Procedure ReSize(ar:Word);

Procedure ReColor(acolor:TColor);

end;

TMyCircle=class(TMyFigure) {класс Окружность}

public Procedure Draw; override; {рисование окружности}

end;

TMySquare=class(TMyFigure) {класс Квадрат}

public Procedure Draw; override; {рисование квадрата}

end;

implementation

Constructor TMyFigure.Create;

Begin

inherited Create;

Image:=aImage; x:=ax; y:=ay; r:=ar; Color:=aColor;

End;

Procedure TMyFigure.Clear;

Var TempColor:TColor;

Begin

TempColor:=Color;

Color:=Image.Canvas.Brush.Color;

Draw;

Color:=TempColor;

End;

Procedure TMyFigure.Resize;

Begin Clear; r:=ar; Draw; End;

Procedure TMyFigure.Recolor;

Begin Clear; Color:=aColor; Draw; End;

Procedure TMyCircle.Draw;

begin Image.Canvas.Pen.Color:=Color;

Image.Canvas.Ellipse(x-r,y-r,x+r,y+r);

End;

Procedure TMySquare.Draw;

begin Image.Canvas.Pen.Color:=Color;

Image.Canvas.Rectangle(x-r,y-r,x+r,y+r);

end;

end.

2. Для того, чтобы в графическом редакторе была реализована возможность рисования не только кругов, но и квадратов, программу следует доработать. Предлагаю это сделать студентам самостоятельно.

Краткие указания к работе

1. Для выбора фигуры (круг или квадрат) используйте компонент TRadioGroup на странице Standard. Данный компонент установите на форму.

2. Установите связь главного модуля unit Main с модулем Figure.

3. В главном модуле в блоке Var кроме класса, предназначенного для рисования окружностей необходимо объявить класс, предназначенный для рисования квадратов.

4. В главном модуле после оператора if Button = mbLeft ( если нажата левая кнопка мыши) необходимо дописать фрагмент программы, реализующий выбор фигуры (квадрата или круга) в зависимости от положения переключателя TRadioGroup. Операторы, реализующие рисование круга, уже имеются в тексте программы, но необходимо дописать операторы, реализующие рисование квадрата и организовать выбор между фигурами. Здесь можно рекомендовать студентам изучить пример использования компонента TRadioGroup, монография [2 ], стр. 313.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]