Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 设置相互依赖的属性_Vb.net_Oop_Properties - Fatal编程技术网

Vb.net 设置相互依赖的属性

Vb.net 设置相互依赖的属性,vb.net,oop,properties,Vb.net,Oop,Properties,在我看来,我的问题的答案可能是一个补救级别的一-我只是从OOP开始-但它只是没有跳出可用的文献 我想为蒸汽(饱和条件下的水也是)的性质建立一个VB类。对于那些不太熟悉蒸汽表的人来说,蒸汽有几个关键特性:压力、温度、焓、熵、比容、等压/氯热容和质量(定义了饱和条件下蒸汽/水混合物的特殊子集)。建立这两个属性中的任何一个都完全定义了流体的状态,尽管每个属性都可以说是它们自己的属性 从任何其他两个属性中确定这些属性的数值方法已经建立,因此数学上的v=f(T,p)等很容易编码(一个本身就很复杂但很容易的

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

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

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

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


非常感谢您的帮助。示例代码更是如此。

实际上,您在这里有多个选项

一个选项是创建一个包含所有要添加的属性的构造函数作为可选的。然后,您的代码可以填充未提供的任何属性

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


我相信有更多的选择,每一个都会有各自的优点和缺点。这应该给你一个开始。

我已经阅读了更多的示例代码,下面是我正在开发的解决方案(我非常确定这是Tinstaaff推荐的第二个选项):

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

使用Get为每个steam属性创建只读属性过程,以返回适当的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类的对象在构建之后将能够返回所有属性值。蒸汽支柱只能通过建造商使用的子程序以及用于特殊类型设备操作(例如恒压加热、等温膨胀等)的一些附加子程序进行更改。我不必为这些方法的丰富性操心,因为拥有此类的更大优势是能够创建两个表示过程中不同点的对象,并比较它们的属性


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

好问题——我做了一个小编辑:技术——VB——属于标签(而不是标题,它将被谷歌搜索视为冗余);此外,“vbasic”这个名称并不常用,因此容易混淆(实际上我只是假设你指的是VB,我不确定)。是的,我指的是VB。谢谢。但是你怎么才能聪明地计算出缺失的值呢?我在这里看到了一个组合爆炸。有些东西需要弄清楚,因为我明确表示,我的建议只是一个开始。一种方法是在设置object中的属性之前使用文本框和复选框获取最少的数据量。计算其他值并不难。IAPWS发布了一个公式,hankd