需要建议:C# OOP 类(或数据)关系

问题描述 投票:0回答:1

我正在开展我的研究项目。假设我有一根预定长度为 6 m 的钢筋。我在0m、3m、6m位置安装了3个传感器。钢筋将受到多种测试条件的影响,例如条件 A、B、C、D 等。我需要创建后处理程序来处理这些数据。 (注意:这个问题已经被简化了,实际问题更复杂,如果我解释所有细节将会令人困惑)

这里建立数据关系的最佳方式是什么? 假设我有 条形条件:A、B、C、D 温度:(位置及其温度的键值对)

最好建立以下关系: (SteelBar Has-A BarCondition) (BarCondition 有温度)

或者最好建立以下关系: (钢棒具有温度) (温度有条件) ?

稍后,我还需要创建同一位置的温度组合。例如:组合 1:BarConditionA + BarConditionB 组合2:BarConditionC + BarConditionD 组合 3:30% * BarConditionC + 40% BarConditionD ... 等等

大约有1000种组合,大约有500条条件。并且将有超过15个传感器位置来测量其温度。 (在实际情况下,它不仅测量温度,还测量同一位置的其他一些数据。因此我为该数据本身创建类)

目前,我创建了一个名为Temperature的类,它将位置和温度数据存储在字典中。 我还创建了一个名为 SteelBar 的类,我将在其中获取数据

class Temperature
{
    private Dictionary<double, double> _temperatureData;
    public Dictionary<double, double> TemperatureData { get { return _temperatureData; } }
    public Temperature()
    {
        _temperatureData = new Dictionary<double, double>();
    }
    public void AddTemperature(double position, double temperatureinDegree)
    {
        _temperatureData.Add(position, temperatureinDegree); //
    }
}
class SteelBar
{
    private Temperature _BarTemperature1, _BarTemperature2;
    public SteelBar()
    {
        _BarTemperatureConditionA = new Temperature();
        _BarTemperatureConditionA.AddTemperature(0, 27);
        _BarTemperatureConditionA.AddTemperature(3, 39);
        _BarTemperatureConditionA.AddTemperature(6, 55);

        _BarTemperatureConditionB = new Temperature();
        _BarTemperatureConditionB.AddTemperature(0, 33);
        _BarTemperatureConditionB.AddTemperature(3, 99);
        _BarTemperatureConditionB.AddTemperature(6, 10);
    }
}

但是我觉得这种做法并不正确。当我需要结合温度时就会出现问题。

c# oop object-oriented-analysis
1个回答
0
投票

我会创建一个 SuperClass 调用

Conditions
将相似的对象属性组合在一起

然后我将有一个继承

Conditions
的子类,并将属性设置为各自不同的上下文。例如
TemperatureCondition
继承
Conditions

然后在你的 SteelBar 类中,你将有一个条件列表,无论它是什么条件,你只会有 1 个列表

当您想根据自己的条件执行任何操作时,只需循环列表或查找列表中的项目即可

© www.soinside.com 2019 - 2024. All rights reserved.