Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 状态机图中的对象是什么?_Class_Object_State_Uml_State Machine - Fatal编程技术网

Class 状态机图中的对象是什么?

Class 状态机图中的对象是什么?,class,object,state,uml,state-machine,Class,Object,State,Uml,State Machine,我正在尝试为我的android应用程序绘制状态机图。许多网站和书籍都说它显示了不同对象之间的转换。然而,由于缺乏UML知识,我无法理解对象的确切含义 在,, 对象是类的实例 那么,对象是指代码中特定类的实例还是整个系统?我对此感到困惑。你能给我一个关于obejct的例子吗?UML中的对象 UML中的对象定义如下: 分类器描述一组对象。对象是具有状态和与其他对象的关系的个体。对象的状态标识该对象的属性值 但这很难理解:分类器的定义依赖于对象的概念,而对象的定义依赖于分类器的概念。较短的“对象是类的

我正在尝试为我的android应用程序绘制状态机图。许多网站和书籍都说它显示了不同对象之间的转换。然而,由于缺乏UML知识,我无法理解对象的确切含义

在,, 对象是类的实例

那么,对象是指代码中特定类的实例还是整个系统?我对此感到困惑。你能给我一个关于obejct的例子吗?

UML中的对象 UML中的对象定义如下:

分类器描述一组对象。对象是具有状态和与其他对象的关系的个体。对象的状态标识该对象的属性值

但这很难理解:分类器的定义依赖于对象的概念,而对象的定义依赖于分类器的概念。较短的“对象是类的实例”无助于解决这个鸡和蛋的问题

更难的是,这种围攻物体的方式很合适,但不太合适

更务实地反对 我不会试图解释数百本书中已经解释过的内容。让我们看看Grady Booch的定义(他是UML创始人之一):

对象:你可以做的事情。对象具有状态、行为和标识;相似对象的结构和行为在其公共类中定义。术语实例和对象是可互换的

更好的是,这是一个非常幼稚但却非常有用的定义:

对象打包数据和对该数据进行操作的过程

州 “状态”是一个模棱两可的术语,在“对象状态”和“状态机状态”中使用时,可能指的是不同的现实

对于对象,状态通常指对象的所有数据。如果保存和恢复对象的所有数据,您会期望它及其操作将导致相同的结果和行为。这通常是正确的,但并不总是如此。Booch更准确的定义是:

对象行为的累积结果;对象可能存在的可能条件之一(…)

状态机的状态有稍微不同的含义。状态不对应于单个对象状态,而是对应于一组可能的对象状态(单个对象、多个对象或整个系统)。通常,状态机状态用非常宽泛的术语描述基础集。例如,状态可以描述对象或组件的生命周期或操作(创建、初始化、使用、存档、丢弃)中的一个阶段

控制房间温度的状态机示例:

Named state (State machine)   Object state
TOO_COLD                      temp=12, min=16, max=19, power=1500
                              temp=13, min=16, max=19, power=1500
                              temp=15, min=16, max=19, power=900
RIGHT_TEMPERATURE             temp=16, min=16, max=19, power=100
                              temp=18, min=16, max=19, power=50                   
                              temp=19, min=16, max=19, power=50   
TOO_WARM                      temp=20, min=16, max=19, power=50
                              temp=21, min=16, max=19, power=0
                              temp=20, min=16, max=19, power=0
            

在本例中,您可以看到状态机状态可以(并且大部分将)对应于一组(可能很大的)对象状态。

我想您一定是误读了。这是(一个对象的)状态之间的转换@GeertBellekens是的,但我不知道哪个对象的状态意味着什么。它是整个系统的状态还是特定类的实例的状态?感谢您的回答。为其建模状态机的类的实例的状态。当然,你也可以把整个系统看作一个类,并为系统的一个实例建模状态。第一句话是什么意思?对象是类的实例。还有什么可说的?此外:你在哪里读到“对象之间的转换”?@Guk很高兴读到:-)我知道UML有很多东西可能会让人困惑。但这肯定是值得努力的。如果你有任何问题,这里有很多答案。如果不合适的话,你可以开始一个新的问题。我认为GoF的定义更适合描述一个类。对象和类之间的主要区别在于,对象是“真实世界的事物”,而类是它们的名称所表示的:真实世界事物的分类<代码>树是一个类,而我家前面的苹果树是一个对象。对于状态机,我认为由于对象有一个状态,所以它由状态机表示。这本身可能由几个子状态机组成。但总而言之,没有什么真正需要区分的。@qwerty_那么gof的定义不也适用于js这样的语言吗?在js这样的语言中,每个对象都可能通过原型机制定义自己的类。@qwerty_那么关于对象与系统的状态,我同意你的观点,系统可以由许多子机组成(我们都住在黄色的潜水艇里……啊!不!那是潜水艇)。但即使你打破了“等待”这样的状态在最小的可能对象上,它不是对应于单个对象状态,而是对应于一系列可能的对象状态。在特定对象状态的奇异性和单个机器状态所隐含的可能状态的多样性之间,难道没有细微的区别吗?是和否。当然,子状态机的状态不是唯一的对象的状态。但是(我的POV)的区别应该只在子/状态机之间产生,它们一起代表对象状态。我看不到对象状态和状态机状态之间的语义区别。