- Код: Выделить всё
procedure TKvadrat.Get_Storona(st:integer);
begin
if (st>0) and (st<>0) then FStorona:=st
else
FStorona:=2;
FStorona:=st;
end;
Как вы своими словами опишите, что здесь происходит?
Модератор: Модераторы
procedure TKvadrat.Get_Storona(st:integer);
begin
if (st>0) and (st<>0) then FStorona:=st
else
FStorona:=2;
FStorona:=st;
end;
TRectangle = class
Side:Integer;
function Perimetr:Integer;
function Area:Integer;
constructor Create(ASide:Integer);overload;
end;
//...............
function TRectangle.Perimetr:Integer;
begin
result:=Side * 4;
end;
function TRectangle.Area:Integer;
begin
result:=Side*Side;
end;
constructor TRectangle.Create(ASide:Integer);
begin
Side:=ASide;
end;
Bombucho писал(а):А почему Kva и Pyr не знаю о существовании друг друга
Kva:=TKvadrat.Create(k);
Pyr:=TPyramida.Create(a);
AlphaBlend писал(а):а ! .... до меня дошло
AlphaBlend писал(а):для override классы должны быть только виртуальными , если не ошибаюсь ?
Bombucho писал(а):полиморфизм
TPyramid = class (TRectangle)
Apof:Integer;
Surface:Integer;
procedure SetApof(NewApof:Integer);
function GetSurface:Real;
end;
function TPyramid.GetSurface:Real;
var
A:Real;
p:real;
S:Real;
begin
p:=(Self.Side + Self.Apof + Self.Apof) / 2; { полупериметр }
S:=SQRT(p * ( p - Apof) * (p - Apof) * (p - Side)); { Площадь одного треугольника }
S:=(S * 4) + Self.Area; { вся поверхность пирамиды }
result:=S;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Pyramid:=TPyramid.Create(2);
Pyramid.SetApof(4);
showmessage(FloatToStr(Pyramid.GetSurface));
end;
AlphaBlend писал(а):За математику извините
AlphaBlend писал(а): последнее время больше чем до 10 считать не умею
AlphaBlend писал(а):я когда долго думаю забываю имена методов и полей , которые создаю , а если написать Self и нажать точечку - выпадет меню со свойствами класса
AlphaBlend писал(а):огда код работает и отлажен , можно просто удалить Self и все
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 257