何时使用OOP而不是Arrays

时间:2009-10-10 03:57:20

标签: c++ arrays oop

我什么时候应该使用OOP而不是数组?我项目的规模是否重要?

提供一点背景:我正在为我的朋友制作一个小程序。基本上,他希望彼此添加不同的分数,以便能够看到他的成绩。 (是的,我知道有商业软件,但这也是一个有趣的练习。)无论如何,他可能不时希望程序重新计算所有分数,所以我必须阅读之前的条目。我是更熟悉数组,所以我打算使用它们,但OOP可能是一个同样好的工具。所以,基本上,我什么时候应该使用OOP?

6 个答案:

答案 0 :(得分:11)

嗯...苹果(array)vs橙色(OOP = Object Oriented Programming

答案 1 :(得分:4)

可以在OOP中使用数组,因此您似乎对概念感到困惑。

如果您觉得使用赋值类可以帮助您,那么您可以轻松地使用它来为您的程序建模,但如果您只是想使用C并使用静态数组,那么这也没关系。

基本上,决定如何为应用程序建模,然后,在大多数语言中,如果您觉得最好,可以使用数组。

但是,如果您的分数不明,请将它们放入列表中。如果你想将它们组合在一起,如果你愿意,可以将列表转换为数组,但如果你只是经常添加它们,我就不会看到它会给你带来什么。

答案 2 :(得分:2)

与其他人一致,数组和OOP是两个不同且重叠的概念。这就像是说:“我今天应该如何上班?按时,还是坐车?”你可以同时做两件事,也可以做两件事。

假设您在程序中有一个人(您的朋友)有一组分数,并且您添加所有分数以找到分数,那么只需使用“数组”(列表,序列,矢量等)< / p>

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)

但是,如果您的程序中有多个人有多个分数,那么您应该考虑使用更好的结构来保存数据。你可以做更多的OOP方法

class Person {
    vector<float> scores;
    float calcGrade();
}

或者只是简单地使用多维数组。但在那时,您可能需要在程序中使用一些“OOP”。

答案 3 :(得分:1)

如果jimyi是正确的,你会问哪个更好?

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

int grades[2];

两者都没有......你最好使用int的矢量。

答案 4 :(得分:1)

这家伙正在询问关联技巧。是使用聚合还是继承。我建议你参考Association (object-oriented programming)。然后你可以根据你的建筑设计来决定。

答案 5 :(得分:0)

我更喜欢标准函数来手写循环:

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