我正在开发一个包含许多小流域的简单水文模型(最终产品将包含至少10个不同的子流域)。每个子流域由相同的参数描述,但每个子流域的参数具有不同的值。
因此,例如,子流纹A描述的是这些属性及其相应的值:
Double subA_Impervious = 0.3;
Double subA_Pervious = 0.7;
Double[] subA_CNs = {55.0, 85.0, 92.0};
子流星B由相同的属性描述,但具有不同的值:
Double subB_Impervious = 0.4;
Double subB_Pervious = 0.6;
Double[] subB_CNs = {50.0, 70.0, 82.0};
某些属性由数组描述,但大多数只是Double。 每个子流域都由许多属性描述(我只是示例3,但至少有15种不同的属性)。
我的问题是,知道我将至少拥有10个不同的子流域,存储这些数据的最佳方法是什么?该数据将在主程序中访问...并输入到进行各种计算的其他对象中。 我应该创建一个带有getter / setter的泛型类,然后在主程序中实例化10次(每个subbasin 1个对象),或者为主类创建一些类创建map对象(每个subbasin 1个map对象)(第二个)方法对我来说最有意义,或者有一个类存储所有子系统的所有参数(主程序中的1个实例化对象)?不知道我将如何设置最后一个。
答案 0 :(得分:1)
Java是一种面向对象的语言。创建一个将数据和行为封装到单个软件组件中的类。为您需要的每个实例创建一个。
如果你被困在原语,字符串和集合上,你会错误地思考它。想想对象。
我应该创建一个带有getter / setter的泛型类 在主程序中实例化10次(每个子流域1个对象),
不要只是让那个物体成为有吸气剂和二传手的载体。您可以做的最糟糕的事情是将数据拉出来并进行计算。
最好将这些计算封装在对象中。让它执行它们并询问结果。改变状态意味着重做计算。
package model;
public class Watershed {
// better to work with primitives for calculations.
private double impervious;
private double pervious;
private double [] cn; // what's this?
// lots more to add here.
}