摘要
我必须对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类中包含死亡率类实例。初始人口年和未来96年的预测存在死亡率。此外,每年的人口必须有死亡率,而且每年的人口没有义务让我有今年的死亡率。
假设我有2009年的初始人口,我还没有预测2010年,2011年,2012年等人口,直到2105年。然而,我有这些年的死亡率预测,人口增长基于关于这些死亡率,以确定哪些人口还活着,以及我们有多少人死亡等等。
我想将PopulationAnnuelle类作为我模型的基类,虽然我觉得StatistiqueAnnuelle更适合这项工作,然后让PopulationAnnuelle继承它。
问题
任何可接受的想法都将由我个人赞成。最准确和最有帮助的答案将被接受为我的问题的答案。
感谢您的帮助和支持! =)
您是否能够为我们确定常见的重要用例/方案? (Adrian K)
一个常见的用例/情景是根据人口增长计划养老金计划的需求。在“预测”人数之后,您可以计算将为养老金计划和退休人员做出贡献的人数,然后估算出缴费者需要支付的资金需求,以便养老金计划资金将有足够的钱为他们退休后等等支付养老金。
另一种可能的常见情况是保险公司。根据人口增长情况,有关保险使用情况的统计数据将允许公司预测其资金来源的需求,并根据事故退款与每年输入的每月付款确定给定保险金额的每月付款,例如汽车保险。
此练习称为估价。
答案 0 :(得分:2)
一些初步想法:
我的反思是关于是否 不包括死亡率等级 PopulationAnnuelle中的实例 类。
在我看来,死亡率是更广泛概念的一个子类(率?) - 对数据的修饰或影响;因此我可能不会在PopulationAnnuelle中明确地包含它。另一种观点是将人口数据传递给“速率”修饰符,而不是将其嵌入人口中。
是的 - 只是考虑一下 - 我想你想让你的问题尽可能地分开。这就是为什么我询问您需要满足的重要方案 - 例如,我可以看到您想要使用PopulationAnnuelle做很多事情,其中不需要甚至不需要死亡率。
<强>更新强>
嗯 - 为什么?需要考虑两件事......首先,您是否100%确定在应用程序的生命周期中您只需要以年为单位进行交易?将这一年的概念重点放在代码中并不是你想要做的事情。如果我理解正确,两者都是 人口轩辕和 MortaliteAnnuelle源自 让我们说一个StatistiqueAnnuelle类
其次,我完全理解每年的统计数据包括死亡人数和总人口数 - 但我不确定你是否会通过继承来反映课堂结构(?)(不是说你不能 - 你'我花了更长的时间来思考这个问题。除了反映一种特定的心态外,继承实际上给你的是什么(与它对你有什么影响)?
我将它们分组的想法很简单 请问人口农业班 明年人口增长,那 它本来会把它归还给我 PopulationAnnuelle的新实例
这听起来很可疑:要求一个班级自己创造一个新的不同实例。我可能有一个类/组件“TrendPredictor”(?),它传递了它所需的所有数据(或对数据集的引用)并返回了一些对象。如果你想在那里执行更多的趋势预测,那么我想将相同的类型传入和传出是有意义的,因此很容易将任何组合中的操作串联起来。
钍eonly其他commpent我想提出的是,我woudl看到这些输入和输出是非常愚蠢的(因此不需要太多(如果有的话)继承 - 他们听起来更像是提供了丰富的功能类数据结构