2013-07-20 2 views
1

Мне кажется, что ответ на мой вопрос может быть исправлением уровня один - я только начинаю с ООП, но он просто не выпрыгивает из доступной литературы.Настройка взаимозависимых свойств

Я хочу построить класс VB для свойств пара (вода тоже для насыщенных условий). Для тех, кто менее знаком с паровыми столами, существует несколько ключевых свойств пара: давление, температура, энтальпия, энтропия, удельный объем, изобарические/хорические теплоемкости и качество (определяет специальный поднабор пара/водной смеси в насыщенных условиях). Установление любых двух из этих свойств полностью определяет состояние жидкости, хотя каждый из них можно назвать свойствами в своем собственном праве.

Численный метод определения любого из этих свойств из любых других двух свойств хорошо установлен, так что математически v = f (T, p) и т. Д. Достаточно легко кодировать (сложное суждение в своем собственном праве, но легко)

То, с чем я борюсь, - это понимание того, что правильный подход к определению и настройке свойств объекта в моем паровом классе. Любые два из вышеуказанных значений будут введены, а остальные будут вычислены.

Любая помощь очень ценится. Пример кода вдвойне.

+0

Отличный вопрос: я сделал небольшое редактирование: технология - VB - принадлежит к тегам (и * не * в заголовке, она будет считаться избыточной в результате поиска Google); кроме того, название «vbasic» обычно не используется и, таким образом, путается (на самом деле я просто * предполагаю * вы имеете в виду VB, я не уверен). –

+0

Да, я имею в виду VB. Благодарю. – sonofawil

ответ

0

На самом деле у вас есть более 1 опции здесь.

Одним из вариантов было бы сделать конструктор со всеми свойствами, которые будут добавлены как необязательные. то ваш код может заполнить, когда свойства не будут предоставлены.

Вы также можете сделать все свойства частными и использовать определенные методы для получения или установки свойств на основе предоставленных параметров.

Уверен, что есть больше вариантов, и каждый из них будет иметь свои достоинства и отступить. Это должно дать вам начало.

+0

Но как вы на самом деле * вычислите * недостающие значения умнее? Я вижу комбинаторный взрыв здесь. –

+0

Что-то нужно выяснить, так как я ясно дал понять, что мои предложения были только началом. Один из способов - использовать текстовые поля и флажки для получения минимального количества данных перед установкой свойств в объекте. – tinstaafl

+0

Вычисление других значений не так уж сложно. Есть формула, опубликованная IAPWS, которая hankd – sonofawil

0

Я сделал еще некоторое чтение и лился пример кода, и следующее решение я разрабатываю (я уверен, что это второй вариант рекомендованного tinstaafl):

Declare все из паровые «свойства» (в дальнейшем называемые SteamProps не должны смешиваться со свойствами класса) как частные переменные внутри класса.

Создайте операции ReadOnly Property для каждого из свойств пара, используя Get, чтобы вернуть соответствующее значение 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 "; «Р, Н»; "T, S"; и т. д. (p, T, v, h, u, s, Cp, Cv & w являются стандартными именами переменных для рассматриваемых свойств пара)

Объекты моего класса Steam затем смогут возвращать все значения свойств один раз построен. Паровые программы могут быть изменены только с помощью подпрограмм, используемых конструктором, наряду с некоторыми дополнительными подсистемами для специальных типов операций установки (например,добавление тепла при постоянном давлении, изотермическое расширение и т. д.). Я не буду беспокоиться о множестве этих методов, потому что большим преимуществом этого класса будет возможность создания двух объектов, представляющих разные точки процесса, и сравнения их свойств.

Это первый ООП, который я сделал, и я очень признателен за любую критику этого подхода.