Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #3  
Старый 06.05.2010, 00:00
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, формулу действительно надо бы смотреть в физике.
Тут другой вопрос. Как сдизайнить классы.
Если пойти по простому, то тебе нужны всего 2 класса (т.к. испарять пар как-то не имеет смысла). Хотя, только если возвращать тоже класс.

Ну попробуем прикинуть:
Код:
type
  TBase = class
  protected
    function GetE(TT, Ro : Integer) : Integer;
  public
    m : Integer; // масса
    T : Integer; // нач. темп.
    function HeatIt : Integer; virtual; abstract;
  end;

  TFog = class(TBase)
    function HeatIt : Integer; override;
  end;

  TWater = class(TFog)
    function HeatIt : Integer; override;
  end;

  TIce = class(TWater)
    function HeatIt : Integer; override;
  end;

...

function TBase.GetE(TT, Ro : Integer) : Integer;
begin
  // Здесь расчет кол-ва энергии, необходимой для перехода в сл.
  // агрегатное состояние. Ro - теплоемкость, TT - температура перехода.
  Result := ...;
end;

function TFog.HeatIt : Integer;
begin
  // Пар испарить нельзя, он уже пар.
  Result := 0;
end;

function TWater.HeatIt : Integer;
begin
  Result := inherited + GetE(100,1000); // Ro = 1000 взято с потолка. глянь в справочнике
end;

function TIce.HeatIt : Integer;
begin
  Result := inherited + GetE(0,10000); // Ro = 10000 взято с потолка. глянь в справочнике
end;
Примерно как-то так.
Создаешь класс, соответствующий исходному веществу и вызываешь метод HeatIt. Т.е. тебе надо реализовать базовую функцию расчета кол-ва тепла и указать нужные значения Ro во всех остальных.

ЗЫ. Что-то знакомая задача. Кто-то уже ее спрашивал, кажись.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:55.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025