Oop 对象概念
根据标准定义,对象是同时包含数据和行为的实体。 据我所知,数据是从外部发送的。例如,我们有一个计算数字平方的类。我们创建了一个实例,并将一条消息连同数字一起发送给要计算平方的对象,。 我们不是从外部发送数据吗? 为什么所有的定义都声明对象包含数据?Oop 对象概念,oop,software-design,Oop,Software Design,根据标准定义,对象是同时包含数据和行为的实体。 据我所知,数据是从外部发送的。例如,我们有一个计算数字平方的类。我们创建了一个实例,并将一条消息连同数字一起发送给要计算平方的对象,。 我们不是从外部发送数据吗? 为什么所有的定义都声明对象包含数据? 谢谢您的示例是一个私有案例,对象不需要保存数据(即状态)。在这种情况下,它可以替换为一个函数(只是行为)。大多数对象都需要存储数据。例如,一个对象人物应该包含描述人物的品质,而不仅仅是可能的行为。我认为问题在于你的例子不适合面向对象的设计。我的意思是
谢谢您的示例是一个私有案例,对象不需要保存数据(即状态)。在这种情况下,它可以替换为一个函数(只是行为)。大多数对象都需要存储数据。例如,一个对象人物应该包含描述人物的品质,而不仅仅是可能的行为。我认为问题在于你的例子不适合面向对象的设计。我的意思是,计算一个数的平方是一个无记忆函数,因此显然没有理由在对象属性中存储数据。然而,当您必须处理有状态实体的管理时,您将更容易了解类和面向对象的重要性 对象是类的实例
类(a,a*a)是正方形类,但(2,4)是它(对象)的实例。是的,数据被发送到类并创建新对象。在此上下文中,数据是对象的状态。该定义表示对象的状态/数据应在内部存储。例如,考虑下面的类:
class Math {
Double square(double x) {
return x * x;
}
// other similar functions
}
作为一种语言结构,它是一个类。但是,在面向对象的意义上,它不是一个真正的类。因为它没有状态或数据。它只是一个封装在类构造中的函数。这不一定是错误的。因为在本例中,恰好有不需要状态的操作
定义试图强调的是:当一个真实的对象(或它的类)既有数据又有行为时,它就拥有了一个真实的对象。并不是每个类构造的用法都代表一个真正的对象
因此,如果表示对象的类满足以下三个条件,那么就有一个对象
在这里,我们看到类同时具有状态和行为。我们还看到状态和行为都属于这个类。它们是患者概念的属性。我们进一步看到,操作与数据有着内在的联系。如果不咨询/使用患者的状态,您就无法确定患者是否健康。是的,我们将其输入到对象中,但对象由这两个部分组成。对象可以同时包含这两个部分,但不要求它这样做。例如,假设我们有一个文件对象。我们可以使用文件名调用
File::Open
方法,如myfile->Open(“SomeFile.txt”)代码>此时的文件对象可能试图打开文件,在内部跟踪某种文件指针,可能是文件名等。因此,现在它有数据,可能是文件大小为myfile->FileSize
,或者文件中的位置为myfile->FilePosition
。然后,您可以调用更多函数“行为”,例如myfile->Close
,myfile->Read
,等等。对象可以由纯数据或纯行为组成,也可以由两者组成。这是你的选择。添加字段并保持状态。添加方法并实现您的行为。对象范式只表示它可以包含这两个变量
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
}
}