1

在我看来,我的问题的答案可能是一个补救级别——我刚刚开始使用 OOP——但它只是没有跳出现有的文献。

我想为蒸汽的特性构建一个 VB 类(水也适用于饱和条件)。对于那些不太熟悉蒸汽表的人来说,蒸汽有几个关键属性:压力、温度、焓、熵、比容、等压/等压热容量和质量(定义了饱和条件下蒸汽/水混合物的特殊子集)。建立这些属性中的任何两个都完全定义了流体的状态,尽管每个属性都可以说是它们自己的属性。

从任何其他两个属性确定这些属性中的任何一个的数值方法已经很成熟,因此数学上 v=f(T,p) 等很容易编码(本身就是一个复杂的求和但很容易)

我正在努力理解在我的 Steam 类中定义和设置对象属性的正确方法是什么。将输入上述值中的任何两个,然后计算其余值。

任何帮助是极大的赞赏。示例代码更是如此。

4

2 回答 2

0

实际上,您在这里有超过 1 个选项。

一种选择是创建一个构造函数,其中所有属性都作为可选添加。然后您的代码可以填写未提供的属性。

您还可以将所有属性设为私有,并使用特定方法根据提供的参数获取或设置属性。

我敢肯定还有更多的选择,每个都有自己的优点和缺点。不过,这应该给你一个开始。

于 2013-07-21T02:36:03.273 回答
0

我已经通过示例代码进行了更多阅读和倾注,以下是我正在开发的解决方案(我很确定这是 tinstaafl 推荐的第二个选项):

将所有蒸汽“属性”(以下称为 SteamProps,不要与类属性混淆)声明为类中的私有变量。

使用 Get 为每个蒸汽属性创建 ReadOnly Property 过程,以返回适当的 SteamProp 值。

使用“Sub New()”构造函数来实例化一个新对象。将两个或三个参数传递给构造函数。我从压力和温度开始,因为它是最简单的。

Sub New(ByVal NewPressure As Double, ByVal NewTemperature As Double)
    'Subroutine for determining other SteamProps from pressure and temperature
End sub

一旦我解决了这个问题,我将重载构造函数以允许将任意两个值传递给适当的 SteamProps 以及一个标识哪些值的字符串:

Sub New(ByVal Var1, ByVal Var2 As Double, ByVal VarString as String)
'Evaluate VarString apply correct method for backcalculating P&T
'Subroutine for determining other SteamProps from pressure and temperature
End sub

字符串选项将是 "p,T" ;“p,h”;"T,s"; 等(p、T、v、h、u、s、Cp、Cv 和 w 是相关蒸汽属性的标准变量名称)

我的 Steam 类的对象将能够在构造后返回所有属性值。SteamProps 只能通过构造器使用的子程序以及用于特殊类型的工厂操作(例如,恒压加热、等温膨胀等)的一些附加子程序来更改。我不会为这些方法的丰富性而烦恼,因为拥有此类的更大优势将是能够创建两个表示过程中不同点的对象并比较它们的属性。

这是我做过的第一个 OOP,我非常感谢对这种方法的任何批评。

于 2013-08-02T22:21:53.743 回答