2011-04-14 81 views
1

摘要需要一些外部建議來設計這個類圖!

我有現代化FORTRAN語言編寫的應用程序,總之,是通過多年的負責人口推算。因此,我有一個最初的人口作爲輸入。這個初始人口按年齡分類,即每年所有人數的總和代表今年的總人口。

讓我們來看看數據幾秒鐘。

Year: 2009 
Age 0: 43786.0000 
Age 1: 42997.0000 
Age 2: 42656.0000 
... 
Age 99: 2439.0000 

然後,我們必須Project 2010的年根據設定同樣的方式,因爲這上面提到的初始羣體一定的死亡率,除了它包括利率,而不是按年齡一年的總數。

Year: 2009 
Age 0: 0.000213345 
Age 1: 0.000212543 
Age 2: 0.000201938 
... 
Age 99: 0.04824421 
Age 106: 0.50000000 

這個想法是將這些實體歸入類下。我已經設計了一個,我想知道它是否可以在某些方面得到改進。

目的

爲了簡化設計和嵌入的對象類內統計計算,以便在需要時更容易測試和mockable。

實際的類圖

Click here to view my actual Class Diagram

我覺得它可以得到改善。爲了您的信息,並方便閱讀,這裏的圖中使用的術語法國的指數:

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繼承它。

問題

  1. 你有什麼想法在我的顧慮?
  2. 基於我希望完成的最佳設計是什麼?
  3. 我應該使用StatistiqueAnnuelle作爲基類/接口,並讓其他人像TauxMortalite,PopulationAnnuelle等從它派生出來,有點像現在的設計?

任何可以接受的想法都會由我個人提高。最準確和最有幫助的答案將被接受爲我的問題的答案。

感謝您的熱心幫助和支持! =)

您能否爲我們確定常見的重要用例/場景? (Adrian K)

一個常見的可能用例/場景是根據人口增長計劃養老金計劃的需求。在「預測」人數後,您可以計算將爲退休計劃作出貢獻的人數以及將退休的人數,然後估算出資者需要支付的資金需求,以便退休金計劃資金將有足夠的錢在他們退休時等待他們支付養老金。

另一種可能的常見情況是保險公司。根據人口增長情況,有關保險使用情況的統計數據將使公司能夠預測其資金來源的需求,並根據事故退款與每個年齡段的投入每月支付情況確定給定保險範圍的月度支付情況,比如汽車保險。

本練習稱爲評估。

+0

什麼是應用程序的業務對象?您提到基於數據預測預測 - 其他任何事情?您是否能夠爲我們確定常見的重要用例/場景? – 2011-04-15 00:28:47

回答

2

一些初步的想法:

  • 您處理數據隨着時間的推移 - 我不安用類是誰的目的和名字綁在一年的概念,尤其是如果它是唯一的基於時間的單位你有的措施。
  • 根據您需要緊縮的數據量,您可能希望利用報表包或利用您選擇的數據庫平臺,因爲這對於處理數據會更加高效。
  • 請記住,數據將經歷一個生命週期:它已被清理?你需要推算任何數據嗎?等

我的思考是關於是否 不包括PopulationAnnuelle 類內的死亡率類 實例。

死亡率在我看來似乎是更廣泛概念的一個子類(比率?) - 對數據的修飾或影響;出於這個原因,我可能不會明確地將它包含在PopulationAnnuelle中。另一種觀點是將人口數據傳遞給「費率」修改者,而不是將其嵌入到人口中。

是的 - 只是想通了 - 我想你會想盡量保持你的關注儘可能乾淨地分開。這就是爲什麼我詢問你需要應對的重要場景 - 例如,我可以看到你想用人口安全的方法做很多事情,那裏的死亡率是不需要的甚至是可取的。

更新

如果我理解正確的話,無論是 PopulationAnnuelle和 MortaliteAnnuelle從 衍生比方說,一個StatistiqueAnnuelle類

嗯 - 爲什麼?有兩件事需要考慮......首先,你是否100%確定在應用程序的生命中,你只需要以年爲單位進行處理?將代碼大量構建到代碼中並不是你想做的事情。其次,我完全理解每年的統計數據包括死亡人數和總人口 - 但我不確定你是否會通過繼承來反映這種結構(?)(並不是說你不能 - 你我花了更多的時間思考這個問題,而不是我自己)。除了反映一個特定的思維方式,這個繼承究竟給你帶來了什麼(相比之下它會對你有什麼影響)?

我將它們分組的想法是簡單地 要求PopulationAnnuelle類 明年的人口增長,以及 它會退回它把我當成PopulationAnnuelle

的 新實例聽起來令人懷疑:一個班級被要求產生一個新的自己的不同實例。我可能有一個類/組件「TrendPredictor」(?),它傳遞給它所需的所有數據(或引用數據集)並返回一些對象。如果你想對此進行更多的趨勢預測,那麼我認爲將相同的類型傳入和傳出是很有意義的,因此很容易以任意組合方式將操作串聯起來。

釷eonly其他commpent我想提出的是,我woudl看到這些輸入和輸出是非常愚蠢的(因此不需要太多(如果有的話)繼承 - 他們聽起來更像是提供了豐富的功能類數據結構

+0

有趣的想法,Adrian!我有點混淆了關於這個死亡率的概念是否包括它,你說,它是一個更廣泛的概念的一部分,因此是Fecondity率和男性比率常數,這些更可能是統計數據/比率。想法,如果我理解正確的話,都是寶pulationAnnuelle和MortaliteAnnuelle來源於我們說的StatistiqueAnnuelle類,一個專業化將是統計速率的概念,因爲另一個將是人口本身,因此也就是每年的人數。 – 2011-04-15 02:22:12

+0

我把他們分組的想法是簡單地詢問人口安南班級明年的人口增長情況,並將它作爲人口安納勒爾的新實例歸還給我。除此之外,我認爲這種感覺是有道理的,因爲PopulationAnnuelle類同樣也扮演了工廠角色,這對我來說似乎不可行,因爲我可能會更好地看到另一個類,我們稱它爲Valuator,並且這將有一個方法成員允許我給出PopulationAnnuelle,TauxMortaliteAnnuelle(DeathRate),SoldeMigratoireAnnuel(NetMigration)和TauxFeconditeAnnuel(FecondityRate)的實例。 – 2011-04-15 02:27:47

+0

這將返回PopulationAnnuelle的一個實例,如果你明白我的意思,它將是明年的預測結果。你對那個怎麼想的? (哦,順便說一下,你的意見+1,這正是我需要在這裏做的反射!謝謝!) – 2011-04-15 02:29:19