Помощь - Поиск - Пользователи - Календарь
Полная версия: Объем и площадь
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Postal_Dude
Задача: Родительский класс - круг радиуса R=11 Вычислить его площадь. Производный класс - прямой конус высотой H=6. Вычислить его объем.

заранее спасибо.
Романтик
Цитата(Postal_Dude @ 16.05.2006 16:12) *

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

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

не мог бы ты пояснить, что такое родительский класс, а что производный?
Postal_Dude
Цитата(Романтик @ 16.05.2006 18:20) *

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


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

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
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
спасибо за помошь!
щас буду както это вбивать в lazarus...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.