2009-10-10 87 views
0

何時應該使用OOP而不是數組?我的項目的規模是否重要?何時使用OOP而不是陣列

提供一點背景:我正在爲我的朋友製作一個小程序。基本上,他想給對方添加不同的分數,以便能夠看到他的成績。 (是的,我知道有商業軟件,但這也是一個有趣的練習。)無論如何,他可能會不時希望程序重新計算所有分數,所以我必須閱讀以前的條目。我是更熟悉數組,所以我打算使用這些,但OOP可能是一個同樣好的工具。所以,基本上,我應該什麼時候使用OOP?

+3

這種比較是不相關的。 – 2009-10-10 04:08:37

+1

我認爲提問者的意思是:何時將數據存儲在對象而不是數組中? – jimyi 2009-10-10 04:58:56

+0

你的意思是std :: vector和其他容器與數組? – Steve314 2009-10-10 07:13:06

回答

2

與其他人一致,數組和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」。

4

數組可以用在OOP中,所以看起來你很混淆概念。

如果您覺得使用賦值類可以幫助您,那麼您可以輕鬆使用它來爲程序建模,但是如果您只想使用C並使用靜態數組,那麼也可以。

基本上,決定你想如何建模你的應用程序,然後,在大多數語言中你可以使用數組,如果你覺得最好。

但是,如果你有一個未知的分數,然後把它們放到一個列表中。當你想把它們加在一起時,如果你願意的話,把列表轉換成一個數組,但是如果你只是頻繁地加入它們,我就不會看到會給你買什麼。

1

如果jimyi是正確的,你問哪個更好?

class grades 
{ 
    public: 
     int grade1; 
     int grade2; 
}; 

int grades[2]; 

沒有...你最好使用int的載體。

0

我喜歡的標準功能,手寫循環:

#include <numeric> 
float sum = std::accumulate(scores.begin(), scores.end(), 0.0f); 
float average = sum/scores.size(); 
相關問題