Помощь - Поиск - Пользователи - Календарь
Полная версия: Объем и площадь
Форум «Всё о Паскале» > 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...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.