![]() |
|
#1
|
|||
|
|||
![]() КАК МОЖНО ПЕРЕДЕЛАТЬ ЭТОТ ЮНИТ, ЧТО-БЫ ЗАДАВАЯ В ЕДИТЫ ВЫРИСОВЫВАЛИСЬ НИЖЕ ОПИСАНЫЕ ФИГУРЫ?????
ВОЗМОЖНО ЛИ ЭТО С ЭТИМИ КЛАССАМИ И КАК????????????? Код:
// Вы должны поместить этот код в модуль с именем 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, 18.01.2010 в 20:58. |
#2
|
||||
|
||||
![]() Без доделки напильником не выйдет, т.к. эти классы не имеют методов вывода на экран.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() Последний раз редактировалось grigoriyi, 04.02.2010 в 08:16. |