這是一個關於使用面嚮對象語言的問題。我一直在使用C++來解決Project Euler,最近我在一篇文章中讀到很多人把C++當作一種過程語言來對待,因爲你可以在不創建類的情況下離開。我一直在做這件事。我應該用類來解決數學問題嗎?
我的問題是用面向對象的語言編寫函數int mult_order(int base, int mod)
用於乘法順序,用於gcd,但沒有將它們放在類中是「壞」。爲了學習的目的,我一直在「重新發明輪子」 - 我應該把它們放在圖書館裏,還是創建一個類或其他類的東西?
這是一個關於使用面嚮對象語言的問題。我一直在使用C++來解決Project Euler,最近我在一篇文章中讀到很多人把C++當作一種過程語言來對待,因爲你可以在不創建類的情況下離開。我一直在做這件事。我應該用類來解決數學問題嗎?
我的問題是用面向對象的語言編寫函數int mult_order(int base, int mod)
用於乘法順序,用於gcd,但沒有將它們放在類中是「壞」。爲了學習的目的,我一直在「重新發明輪子」 - 我應該把它們放在圖書館裏,還是創建一個類或其他類的東西?
從我所學到的東西(也是我所經歷的),後面的OOP基本思想很簡單:
當它使您的生活更輕鬆使用它。
爲了您的目的,使用類不會讓事情變得更簡單 - 您沒有理由反覆訪問執行這些數學運算的單個對象 - 或創建類會造成不必要的開銷。
對於你的例子,我認爲沒有對象你會沒事的,但要考慮將來的某個地方,可能需要創建一個可以處理這些操作的對象。
同意。一如既往,把它看作是「正確工作的正確工具」問題。 – rejj 2012-01-03 03:21:44
使用類的主要好處是讓你通過繼承重用。所以,如果你發現你有一些情況,你有一些共同的代碼,然後其他部分的代碼是變化的,然後做類會幫助你。如果不是這樣,那麼你可能就是這樣。並非每個問題都必須用面向對象編程來解決。
看來你需要使用namespace
而不是class
。
有不屬於某個類的函數沒有問題,但您仍然應該將它們組合在一起。
當你需要一個對象,繼承或狀態的屬性時,使用一個類,而不僅僅是這樣你可以組合功能。
這個問題沒有正確的答案。有些人把這些功能放在'Math'類中,其他人使用免費功能(也許將它們組合在一個名稱空間中以消除可能的命名衝突)。真的沒有「正確的」方法。 – 2012-01-03 03:41:56