我已经通过示例代码进行了更多阅读和倾注,以下是我正在开发的解决方案(我很确定这是 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,我非常感谢对这种方法的任何批评。