簡體   English   中英

模擬程序的類繼承順序

[英]Class inheritance order for a simulation program

這是有關類繼承的正確順序的一個基本問題。
基本上,我試圖編寫一個數值模擬來解決物理模型,細節並不重要(我恰巧是用python編寫的),這是一種眾所周知的算法,可以迭代一定的空間來解決。

我認為我需要的課程是:

  • 設置 :一個類,它定義所有模擬參數,例如體積大小,並具有檢查正確參數類型,計算派生參數等的方法。
  • 求解器:包含用於求解的實際算法
  • 輸出:包含所有繪圖輸出的句柄,並有權保存文件等。

我還需要一個運行方法,該方法可以運行求解器並定期(在安裝程序中定義的時間段內)運行某些輸出函數。

  1. 在高質量的程序中,哪個類將從哪個類繼承? (我的猜測輸出是從規划求解繼承的,它是從安裝程序繼承的)
  2. run方法屬於哪里? 也許應該有一些額外的基類,例如與用戶交互的接口,並包括run方法?

您是否有Java背景?

首先,您沒有任何跡象表明您的任何類都應繼承自另一個類。 因此,您可能不需要像您想象的那么多的類。

求解器#包含實際的求解算法

如果它只是一個功能,您最好將其保留為自由功能。

輸出#包含所有圖輸出的句柄,並有權保存文件等。

如果這些函數沒有共享狀態,則可以很容易地將其作為一個模塊。

至於運行方法,只要將其粘貼在最方便的地方即可。 關於Python的好處是,您無需任何類就可以開始進行原型設計,並且只要發現自己在許多地方傳遞相同的數據集就可以重構為類。

  1. 有一個鼓勵使用組合而不是繼承的概念( http://en.wikipedia.org/wiki/Composition_over_inheritance ),所以我想說,如果您真的不需要繼承,請不要使用它(它們可以是獨立的)對象或函數,在python中類似於對象)。

  2. 如果使用對象建模,則run()應該在#Solver中。 回想一下,與其他語言一樣,在python中不需要接口的概念,因此您可以使用對象或具有所需算法的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM