1
我正在開發一個matlab OOP項目,我需要一個帶有一個參數的getter方法。既然我不想讓這個問題非常具體,我想概括一下。所以這裏的上下文:Matlab OOP - getter方法有參數嗎?
- 我有一個2D空間對象(SpaceObject)與以下字段:X_Pos,Y_Pos和Movement_Model。
- X_Pos和Y_Pos描述空間對象在XY平面中的位置。
- Movement_Model是描述空間物體在XY平面中運動的物體。該字段初始化爲空[],因此可以定義或未定義。
- 當Movement_Model字段對象未定義時,約定是X_Pos和Y_Pos是時間不變的。通過編寫隱式地獲得這些屬性pos = space_obj.X_Pos
- 當定義Movement_Model字段對象時,慣例是X_Pos和Y_Pos變爲時間變量。但是這次getter方法需要結合Movement_Model字段對象的時間值/值來計算任何時刻的空間位置。所以我想有這樣的事情:POS = space_obj.X_Pos或POS = space_obj.X_Pos(1)或POS = space_obj.X_Pos([1:1:10])但Matlab的干將不能有其他參數。
- 一個解決方案是將時間變量作爲空間對象的內部空間,但是我有強大的設計約束讓時間變量在所有對象的外部。
- 另一種解決方案是使用函數而不是名爲Get_X_Pos的getter,但我想保持與其他靜態對象(X_Pos和Y_Pos是不變的)保持一致。我想避免混合簽名像space_obj.Get_X_Pos(1)和other_obj.X_Pos。但這意味着我需要爲所有其他對象編寫Get_X_Pos函數,即使它不是必需的。
所以這裏的問題是由具有外部依賴性的類屬性給出的。所以我的問題是:
- 爲什麼Matlab不允許getter方法的其他參數?這個需求是否與一些OOP範例相沖突?爲什麼?
- 如何以優雅的方式解決此問題?也許需要重新設計... 無論如何,我的問題可能看起來微不足道,但我正在尋找最佳實踐/設計,因爲我的項目會隨着時間的推移而逐漸增大。任何幫助深表感謝! 謝謝!
但有一個問題:如果有一個屬性命名X_POS你不能使用該名稱的方法!當你寫obj.X_Pos時,我不知道你要查詢哪一個。謝謝你的時間! – 2015-04-08 07:46:15
嗯,當然是。我並不是建議使用方法和屬性 - 而是一種方法而不是屬性。由於調用無參數方法在語法上與訪問屬性相同,因此不會造成任何損害。 – sebastian 2015-04-08 07:53:25