根据标准定义,对象是包含数据和行为的实体。根据我的理解,数据是从外部发送的。例如,我们有一个计算数字平方的类。我们创建一个实例并向对象发送消息以及数字来计算平方。难道我们不是从外部发送数据吗?为什么所有的定义都说对象包含数据?
在这个上下文中,数据是指对象的状态。定义说,对象的状态/数据应该被内部存储。例如,考虑以下类:
class Math {
Double square(double x) {
return x * x;
}
// other similar functions
}
Class Patient {
// blood pressure
double systolic;
double diastolic;
double weight;
int age;
public Patient(double systolic, double diastolic, double weight, int age){
}
Public boolean isHealthy(){
// do some calculations and algorithms on age, weight and blood pressure indicators.
// return result as true of false
}
}
在这里,我们看到类既有状态也有行为。我们还看到状态和行为都属于这个类。它们是概念“病人”的属性。此外,我们还看到操作与数据有固有关系。你不能在未查看/使用其状态的情况下确定病人是否健康。
你的例子是一个特殊情况,在这种情况下,对象不需要保存数据(即状态)。在这种情况下,它可以被一个函数替换(只保留行为)。大多数对象需要存储数据。例如,一个人的对象应该包含描述这个人的特征,而不仅仅是可能的行为。
对象是类的一个实例。
Class(a,a * a)是正方形类,但(2,4)是它的一个实例(对象)。是的,数据被发送到类中并创建新对象。
File::Open
方法,如myfile->Open("SomeFile.txt");
此时,文件对象可能会尝试打开文件,并在内部跟踪某种文件指针,可能是文件名等。因此,现在它有了数据,可能是文件大小,如myfile->FileSize
或文件位置,如myfile->FilePosition
。然后,您可以调用更多函数、"行为",例如myfile->Close
、myfile->Read
等。 - Mark Ormston