Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Объем и площадь

Автор: Postal_Dude 16.05.2006 20:12

Задача: Родительский класс - круг радиуса R=11 Вычислить его площадь. Производный класс - прямой конус высотой H=6. Вычислить его объем.

заранее спасибо.

Автор: Романтик 16.05.2006 22:20

Цитата(Postal_Dude @ 16.05.2006 16:12) *

Задача: Родительский класс - круг радиуса R=11 Вычислить его площадь. Производный класс - прямой конус высотой H=6. Вычислить его объем.

заранее спасибо.

не мог бы ты пояснить, что такое родительский класс, а что производный?

Автор: Postal_Dude 16.05.2006 22:33

Цитата(Романтик @ 16.05.2006 18:20) *

не мог бы ты пояснить, что такое родительский класс, а что производный?


вроде бы используется так называемое Наследование. когда один класс есть как бы порождение другого при этом порожденный класс может использовать теже свойства,методы и поля что и в родительском + дополнять их своими...если не ошибаюсь

Автор: klem4 16.05.2006 22:56

Как-то так ...

uses crt;

type

TCircle = Object

public

constructor Init(r : word);

destructor Done;

function GetS : single;

private

radius : word;

end;

TConus = Object(TCircle)

public

constructor Init(r, h : word);

destructor Done;

function GetV : single;

private

height : word;

end;

constructor TCircle.Init(r : word);
begin
radius := r;
end;

destructor TCircle.Done;
begin end;

function TCircle.GetS : single;
begin
GetS := 2 * PI * radius;
end;

constructor TConus.Init(r, h : word);
begin
inherited Init( r );
height := h;
end;

destructor TConus.Done;
begin
inherited Done;
end;

function TConus.GetV : single;
begin
GetV := (1/3) * height * PI * PI;
end;

var

cir : TCircle;
con : TConus;

begin

clrscr;

cir.Init(11);
con.Init(11, 6);

writeln('S circle = ', cir.GetS : 2 : 2);
writeln('V conus = ', con.GetV : 2 : 2);

readln;

end.

Автор: volvo 16.05.2006 23:05

no1.gif

function TCircle.GetS : single;
begin
GetS := PI * Sqr(radius);
end;
...
function TConus.GetV : single;
begin
GetV := (1/3) * heigth * GetS;
end;


Кроме этого, совершенно необязательно создавать объект типа TCircle:
var
con : TConus;

begin
clrscr;
con.Init(11, 6);

writeln('S circle = ', con.GetS : 2 : 2);
writeln('V conus = ', con.GetV : 2 : 2);

readln;
end.

Автор: Postal_Dude 17.05.2006 1:38

спасибо за помошь!
щас буду както это вбивать в lazarus...