КАК МОЖНО ПЕРЕДЕЛАТЬ ЭТОТ ЮНИТ, ЧТО-БЫ ЗАДАВАЯ В ЕДИТЫ ВЫРИСОВЫВАЛИСЬ НИЖЕ ОПИСАНЫЕ ФИГУРЫ?????
ВОЗМОЖНО ЛИ ЭТО С ЭТИМИ КЛАССАМИ И КАК?????????????
Код:
// Вы должны поместить этот код в модуль с именем Unit1 и с формой
// названную Form1, которая имеет событие OnCreate названное FormCreate.
unit Unit1;
interface
uses
Forms, Dialogs, Classes, Controls, StdCtrls, SysUtils;
type
// определение базового класса TPolygon:
// Этот класс - треугольник если 3 стороны, квадрат если 4 стороны...
TPolygon = class
private
sideCount : Integer; // Сколько сторон?
sideLength : Integer; // Какой длины каждая сторона?
shapeArea : Double; // Область многоугольника
protected
procedure setArea; Virtual; Abstract;
published
property count : Integer read sideCount;
property length : Integer read sideLength;
property area : Double read shapeArea;
constructor Create(sides, length : Integer);
end;
// Определение потомков треугольника и квадрата
TTriangle = class(TPolygon)
protected
procedure setArea; Override; // Замена абстрактного метода
end;
TSquare = class(TPolygon)
protected
procedure setArea; Override; // Замена абстрактного метода
end;
// Определение класса формы используемой этим модулем
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm} // Вложение определений формы
// Создание объекта TPolygon
constructor TPolygon.Create(sides, length : Integer);
begin
// Сохранение числа и длины сторон
sideCount := sides;
sideLength := length;
// Установка области используя метод setArea:
// Этот вызов будет удовлетворен только подклассом
setArea;
end;
// Выполнение родительского для треугольника абстрактного метода setArea
procedure TTriangle.setArea;
begin
// Вычисление и сохранение площади треугольника
shapeArea := (sideLength * sideLength) / 2;
end;
// Выполнение родительского для квадрата абстрактного метода setArea
procedure TSquare.setArea;
begin
// Вычисление и сохранение площади квадрата
shapeArea := sideLength * sideLength;
end;
// Основная линия кода
procedure TForm1.FormCreate(Sender: TObject);
var
triangle : TTriangle;
square : TSquare;
begin
// Создание треугольника и квадрата
triangle := TTriangle.Create(3, 10);
square := TSquare.Create(4, 10);
// Показ значений площади наших многоугольников:
ShowMessageFmt('Площадь тругольника = %f',[triangle.area]);
ShowMessageFmt('Площадь квадрата = %f',[square.area]);
end;
end.
Admin: Пользуемся тегами!