何时应该使用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