何時應該使用OOP而不是數組?我的項目的規模是否重要?何時使用OOP而不是陣列
提供一點背景:我正在爲我的朋友製作一個小程序。基本上,他想給對方添加不同的分數,以便能夠看到他的成績。 (是的,我知道有商業軟件,但這也是一個有趣的練習。)無論如何,他可能會不時希望程序重新計算所有分數,所以我必須閱讀以前的條目。我是更熟悉數組,所以我打算使用這些,但OOP可能是一個同樣好的工具。所以,基本上,我應該什麼時候使用OOP?
何時應該使用OOP而不是數組?我的項目的規模是否重要?何時使用OOP而不是陣列
提供一點背景:我正在爲我的朋友製作一個小程序。基本上,他想給對方添加不同的分數,以便能夠看到他的成績。 (是的,我知道有商業軟件,但這也是一個有趣的練習。)無論如何,他可能會不時希望程序重新計算所有分數,所以我必須閱讀以前的條目。我是更熟悉數組,所以我打算使用這些,但OOP可能是一個同樣好的工具。所以,基本上,我應該什麼時候使用OOP?
與其他人一致,數組和OOP是兩個不同的和重疊的概念。這就像是說:「我應該如何今天上班?按時,還是在汽車裏?」你既可以做/也可以不做,它們是兩個不同的東西。
假設你在程序中有一個人(你的朋友)帶有一組分數,並且你添加了所有的分數來找到一個分數,那麼就使用一個「數組」(列表,序列,向量等)
C++:
vector<float> myScores;
myScores.push_back(100.0);
myScores.push_back(50.5);
myScores.push_back(10.0);
float calcGrade(vector<float> scores) {
float grade = 0;
for (unsigned int i=0; i<scores.size(); i++) {
grade += scores[i];
}
return grade/scores.size();
}
calcGrade(myScores)
的Python:
scores = []
scores.append(100.0)
scores.append(50.5)
scores.append(10.0)
def calcGrade(scores):
grade = 0
for i in scores:
grade += i
return grade/len(scores)
calcGrade(scores)
但是,如果您有多個在人多的分數你的程序,那麼你應該考慮使用更好的結構來保持數據。你可以做更多的面向對象的方法
class Person {
vector<float> scores;
float calcGrade();
}
或只是簡單的多維數組。但是在那個時候,你的程序中可能需要一些「OOP」。
數組可以用在OOP中,所以看起來你很混淆概念。
如果您覺得使用賦值類可以幫助您,那麼您可以輕鬆使用它來爲程序建模,但是如果您只想使用C並使用靜態數組,那麼也可以。
基本上,決定你想如何建模你的應用程序,然後,在大多數語言中你可以使用數組,如果你覺得最好。
但是,如果你有一個未知的分數,然後把它們放到一個列表中。當你想把它們加在一起時,如果你願意的話,把列表轉換成一個數組,但是如果你只是頻繁地加入它們,我就不會看到會給你買什麼。
嗯......蘋果(array)與橙色(OOP = Object Oriented Programming)
如果jimyi是正確的,你問哪個更好?
class grades
{
public:
int grade1;
int grade2;
};
或
int grades[2];
沒有...你最好使用int的載體。
這傢伙問的關聯技術。是否使用聚合或繼承。我會建議你參考Association (object-oriented programming)。然後你可以根據你的架構設計來決定。
我喜歡的標準功能,手寫循環:
#include <numeric>
float sum = std::accumulate(scores.begin(), scores.end(), 0.0f);
float average = sum/scores.size();
這種比較是不相關的。 – 2009-10-10 04:08:37
我認爲提問者的意思是:何時將數據存儲在對象而不是數組中? – jimyi 2009-10-10 04:58:56
你的意思是std :: vector和其他容器與數組? – Steve314 2009-10-10 07:13:06