2014-02-17 87 views
0

我對如何創建,擁有和銷燬數據有疑問。 數據本身是大型的數字表格,可以隨機生成,也可以從硬盤讀取。然後對這些數據進行分析,並根據究竟分析的結果,我製作了一些類似結構的包裝,它們封裝了所需的功能。由於包裝程序可以在後續階段進行切換,因此我決定不要在包裝器構造函數中創建/讀取數據,只需在「main」函數中處理它們即可。包裝器只能看到數據的指針。 首先,這是常見的/一個好主意,還是包裝者總是擁有自己的數據副本? 那麼,接下來我做了一個「菜單」類,以更好地瀏覽數據創建/分析選擇等,最簡單的方法是將數據作爲菜單類的一部分。這雖然不舒服,我應該把它放在哪裏?它應該留在主班嗎?面向對象的設計選擇

我希望這是可以理解的。如果不是,我可以嘗試更好地概述發生的事情。 謝謝您的閱讀。

+0

由於您的數據相當大,因此讀取它並將其存儲在適當的結構或類中是非常有意義的。然後分析對象可以通過指針或引用訪問數據。至於**數據存儲在哪裏,菜單看起來不正確 - 主類有什麼問題? –

+0

這樣做似乎很麻煩,但在回顧中創建顯式數據應該在那裏完全處理。很高興聽到我不需要重寫它。 – Arne

回答

1

您可以創建一個data類,幷包裝其他類。數據類的一個對象可能應該是全局的或在main內定義的。除此之外 - 你的想法看起來不錯。通過定義一個data類,你也可以傳遞一個指針/引用到菜單,所以你不會有這個問題。請注意,如果您願意,菜單可以也可以作爲包裝。

+0

謝謝你的安慰。我現在做了一個所有繼承的包裝器基類,因此我將數據保存在main中,並使用基類作爲菜單中的接口處理包裝器。 – Arne

1

將數據的細節保存在一個特定的包裝類(我認爲你的意思是派生類?)通常是一個更好的主意?包裝類應該從接口或抽象類型派生。您可以在main()中構造包裝類工廠,並將工廠傳遞給構造函數(在main()中實例化的類的構造函數)。稍後,當需要打開或創建特定於數據的包裝器時,請調用工廠方法。工廠可以擁有這些指針,我的意思是他們稱之爲new()和delete()。嘗試查找固體原則,看看他們如何指導你。

+0

我曾考慮過早些時候使用工廠,但是決定不這麼做,可能是因爲我會盡力做到這一點。當我覺得事情太混亂時,這可能會做到。謝謝。 – Arne