根据标准定义,对象是包含数据和行为的实体。 根据我的理解,数据是从外部发送的。例如,我们有一个类来计算数字的平方。我们创建一个实例,并将数据和数字一起发送给对象来计算正方形。 我们不是从外面发送数据吗? 为什么所有定义都表明对象包含数据? 感谢
答案 0 :(得分:2)
在此上下文中,数据是对象的状态。定义说对象的状态/数据应该在内部存储。例如,请考虑以下类:
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
}
}
在这里,我们看到该类具有状态和行为。我们还看到状态和行为都属于这个类。它们是患者概念的属性。我们进一步看到操作与数据有内在联系。在未咨询/使用其状态的情况下,您无法确定患者是否健康。
答案 1 :(得分:1)
我认为问题在于你的例子非常适合面向对象的设计。我只是意味着计算数字的平方是无记忆函数,因此显然没有理由在对象属性中存储数据。但是,当您必须处理有状态实体的管理时,您将更容易地获得类和对象定位的重要性。
答案 2 :(得分:0)
您的示例是一个私有案例,其中对象不需要保存数据(即状态)。在这种情况下,它可以用函数替换(只是行为)。大多数对象需要存储数据。例如,一个对象人应该包含描述这个人的品质,而不仅仅是可能的行为。
答案 3 :(得分:0)
对象是类的实例。
Class(a,a * a)是方形类,但(2,4)是它(对象)的实例。是的,数据被发送到类并创建新对象。