2013-05-30 157 views
2

我有一個好的編程風格的問題。我有一組處理程序流的方法。這些函數使用另一個類的對象。製作一個類似Functions的課程並列出我在那裏的這些功能是否可行?這個類不會創建單個實例。我是不是應該將這些功能全部包含在課堂中?基本上他們做的東西就像打開主菜單一樣。有沒有創建它的實例有一個類可以嗎?

不知道這是不是一個愚蠢的問題,我在這個論壇上找不到任何類似的話題。我不是問如何做到這一點,而是如何處理它的風格。

非常感謝。

+5

也許你想使用C++命名空間呢? – ruben2020

+0

爲什麼不把函數放入_namespace_? – Vlad

+0

這似乎是一個偉大的想法 - 我是新來的C++,所以不知道這是可能的:) – wizH

回答

4

這是確切地說是什麼名字空間是。當他們不適合時,不要試圖將事物劃分爲「OOP方式」。如果你的設計說你永遠不會創建一個類類型的對象,那麼它不是一個類,只是一個函數的聚集。

+0

我得到了來自聲譽很高的人的非常不同的反饋......我不知道我該怎麼辦^^ – wizH

+1

@wizH - 有些人有OOP的宗教信仰,並且堅持認爲每件事都必須是一個階級。主要是因爲他們來自Java的C++,並不知道更好。 C++是一種多範式語言:您選擇適合工作的工具。否則,你最終會用錘子來驅動螺絲。 –

+0

感謝您的回覆。這似乎是命名空間最適合於此目的:) – wizH

1

在閱讀您的問題時,我立即想到了Java中的Math類(不確定什麼是C++等價物)。你可能知道它,它基本上是一個數學運算的集合。 Math class

在我看來,階級的你在你的問題說的是那種必須有一個客觀的,類似於數學類「一般功能集合」。像打開菜單這樣的東西應該是該菜單或菜單的父項的一種方法。另一方面,像使用程序中的特定對象計算某些值或遵循自定義模式的格式化元素,應該收集到「靜態」類中,以便使該類成爲程序中的有用工具。

數學運算非常一般函數可以應用於任何程序。嘗試在程序的上下文中轉置這個概念! ;)

+6

'Math'只是Java中的一個類,因爲Java會迫使您將所有內容放在類中。 C++提供了命名空間,用於對邏輯上不屬於類的相關事物進行分組。 –

+0

是的。我不太熟悉C++中的命名空間,但我想堅持使用對象的對象(方法)和一般操作之間的區別,而不是這些概念的具體應用。 –

-1

現在把它們放在一個類中作爲靜態函數。你後來可能會意識到你會有一些共同點......也許說明了嗎?把它存儲在課堂上可能是有道理的。在你調用其他對象之前,你可能想要檢查那些東西......在你知道它之前,你將刪除你的靜態方面並實例化你自己的對象。也許以後考慮多個線程和這些對象中的幾個。你明白了......留給自己一個面向對象方法的空間......

+0

感謝您的回覆。實際上我已經在你的評論之前做過這件事,因爲Dukeling建議OOP的方式也是這樣:) 那麼我將不得不宣佈這個類,因爲之前的類需要使用這些函數 - 是的? – wizH

+0

聽起來好像各種回答者都在猜測你的課程和功能在做什麼,並得出不同的結論。這實際上取決於你的設計/實現是什麼。如果你從類的函數和函數調用類,你可能會重新看看你如何組織數據和方法,而不是轉發聲明(儘可能)。是的,也許命名空間確實對你正在做的事情有意義。不,我不是來自Java的土地,但20年的C++已經教會了OOP在大型項目中的重要性=) – mark

相關問題