【发布时间】:2011-04-15 12:03:19
【问题描述】:
总结
我必须对一个用 FORTRAN 编写的应用程序进行现代化改造,简而言之,它负责多年的人口统计预测。因此,我有一个初始人口作为输入。这个初始人口是按年龄来分类的,也就是说,每个年龄的所有数字的总和就代表了这一年的总人口。
让我们看看数据几秒钟。
Year: 2009
Age 0: 43786.0000
Age 1: 42997.0000
Age 2: 42656.0000
...
Age 99: 2439.0000
然后,我们必须按照与上述初始人口相同的方式按照一定的死亡率来预测 2010 年,除了它包括死亡率而不是每个年龄的总数。
Year: 2009
Age 0: 0.000213345
Age 1: 0.000212543
Age 2: 0.000201938
...
Age 99: 0.04824421
Age 106: 0.50000000
这个想法是将这些实体分组到类下。我已经设计了一个,不知道是否可以在某些方面进行改进。
目标
简化设计并将统计计算嵌入对象类中,以便在需要时更容易测试和模拟。
实际类图
我觉得它可以改进。为了您的信息和可读性,这里是图表中使用的法语术语的索引:
TauxFeconditeAnnuel -> Annual Fecondity Rate
TauxMortaliteAnnuelle -> Annual Death Rate
PopulationAnnuelle -> Annual Population
SoldeMigratoireAnnuel -> Annual Net Migration
StatistiqueAnnuelle -> Annual Statistic
StatistiqueAnnuelleParSexe -> Annuel Statistic per Sex
我的思考是关于是否在 PopulationAnnuelle 类中包含一个 Death Rate 类实例。存在初始人口年和未来 96 年预测的死亡率。再说了,年人口也得有它的死亡率,而年人口不一定要存在,我才有今年的死亡率。
假设我有 2009 年的初始人口,我还没有预测 2010 年、2011 年、2012 年等的人口,直到 2105 年。然而,我有所有这些年的死亡率预测,人口增长是基于根据这些死亡率来确定哪些人口还活着,以及我们有多少人死亡,等等。
我想把 PopulationAnnuelle 类作为我模型的基类,虽然我觉得 StatistiqueAnnuelle 更适合这个工作,然后让 PopulationAnnuelle 继承它。
问题
- 您对我的担忧有何看法?
- 根据我希望实现的目标,最佳设计是什么?
- 我是否应该使用 StatistiqueAnnuelle 作为基类/接口,并让 TauxMortalite、PopulationAnnuelle 等其他类派生自它,有点像现在设计的那样?
任何可接受的想法都会由我亲自投票。最准确和最有帮助的答案将被接受为我的问题的答案。
感谢您的热心帮助和支持! =)
您能否为我们确定常见的重要用例/场景? (阿德里安 K)
一个常见的可能用例/场景是根据人口增长规划养老金计划的需求。在“预测”了人数之后,您可以计算出将向养老金计划供款的人数和将退休的人数,然后估算出供款人需要支付的资金需求,以便养老金计划的资金将有足够的钱在他们退休后为他们支付退休金等等。
另一种可能的常见情况是保险公司。根据人口增长,有关保险使用的统计数据将使公司能够预测其资金来源的需求,并根据事故退款与每个年龄输入的每月付款确定给定保险金额的每月付款,例如汽车保险.
这个练习叫做估值。
【问题讨论】:
-
应用程序的业务对象是什么?您提到过基于数据的预测预测——还有别的吗?您能否为我们确定常见的重要用例/场景?
标签: .net architecture domain-driven-design class-design