对象图主讲人:尚文清对象图对象图的简介对象图的用途对象图的示例对象图的绘制对象图对象图的简介对象图的用途对象图的示例对象图的绘制对象图简介对象图的定义对象代表一个单独的、可确认的物体、单元或实体,它可以是具体的也可以是抽象的,在问题领域里有确切定义的角色。换句话说,对象是边界非常清楚的任何事物对象的简介对象的特性:状态:对象的状态包括对象的所有属性(通常是静态的)和这些属性的当前值(通常是动态的)行为:没有一个对象是孤立存在的,对象可以被操作,也可以操作别的对象。而行为就是一个对象根据它的状态改变和消息传送所采取的行动和所做出的反应标识:为了将一个对象与其它所有对象区分开来,我们通常会给它起一个“标识”对象图的简介对象vs类对象是一个存在于时间和空间中的具体实体,而类仅代表一个抽象,抽象出对象的“本质”。类是共享一个公用结构和一个公共行为对象集合类是静态的,对象是动态的;类是一般化,对象是个性化;类是定义,对象是实例;类是抽象、对象是具体对象图的简介对象图的两个基本元素对象对象的名称可以采用下面三种格式之一objectName只有对象名:ClassName只有类名objectName:ClassName对象名和类名基本概念:对象对象图标为objectName:ClassNameattributeName1=valueAattributeName=valueB对象图的简介对象关系对象通过他们与其他对象的链接来进行交互,链接是关联的一个实例当且仅当两个对象对应的类之间存在关联时,对象之间才可能存在链接。这种类关联可以通过任何方式实现,所有的类都隐式地有到自己的关联,因此对象可以向自己发送消息。如图5-76是图5-39类图的对象图和图形说明图中的连接。对象图的简介UML对象图的图形说明对象图的简介高级概念:端点名称和限定符对象及其关系构成了对象图中表示法的基本部分,当只有在记录期望的场景语义必需时,才使用这些高级功能。图5-76提供了这种高级功能的一个例子。图5-39中,有名为“限定符”的类修饰,它的值在关联的目标端唯一地确定了一个对象。对象图的简介图5-39关联端名称和限定符CropNutritionistPlanAnalystCropEncyclopediascientificName+assistant+lead-userContributor+infoSource-contributor+infoSourcecatalogs10..1*1***1+staff*+lead0..1CollaboratesWith对象图的简介图5-76对象关系anthony:Nutritionistsusan:PlanAnalyst:CropEncyclopediacommercialStrawberry:CropscientificName=Fragariaxananassaroger:PlanAnalyst+assistant+lead+lead+staff-contributor+infoSource-userContributor+infoSource-userContributor+infoSourcecatalogs对象图的简介PlanAnalyst对象(Susan)既用到了来自匿名cropEncyclopedia对象的信息,也向它贡献了信息。这样做时其扮演的角色是userContributor,链接的端点名称说明了这一点。比较5-76与5-39图时,两个PlanAnalyst类的实例一个是Susan角色是lead,她与另一个实例roger协作角色staff。Susan在于Anthony的关系中也扮演了lead的角色,Anthony是协作Susan的对象图的简介具体来说,cropEncyclopedia类scientificName作为限定符,来导航到CropEncyclopedia实例管理的一组条目中的具体一项,图5-76中的作物实例是commercialStrawberry,它选择利用Fragariaxananassa作为scientificName限定符。利用和类同样的表示方法,在对象图中使用的其他表示法还包括约束、关键词标签、导航和链接名称对象图的简介例如导航性(navigability)从一个类(对象)可以找到另外一个,反过来却不可对象图对象图的简介对象图的用途对象图的示例对象图的绘制UML对象图的用途UML对象图的用途◆捕获实例和连接◆在分析和设计阶段创建◆捕获交互的静态部分◆举例说明数据/对象结构◆详细描述瞬态图◆由分析人员、设计人员和代码实现人员开发UML对象图的用途对象图的应用场景:1)论证类模型的设计:当设计了类模型时,你可以通过对象图来模拟出一个运行时的状态,这样就可以研究在运行时设计的合理性。同时,也可以作为开发人员讨论的一个基础。UML对象图的用途2)分析和说明源代码:由于类图只是展示了程序的静态类结构,因此通过类图看懂代码的意图是很困难的。因此在分析源代码时,可以通过对象图来细化分析。而对于开发人员,对于逻辑较复杂的类交互时,可以考虑画出一些对象图来做补充说明对象图对象图的简介对象图的用途对象图的示例对象图的绘制UML对象图示例描述一组对象及其联系。通常用类图元素的一个子集来强调在某个时刻类的实例间的关系对象的示例如一个类图如下图:对象图的示例将上图转化为对象图为:对象图对象图的简介对象图的用途对象图的示例对象图的绘制绘制对象图绘制对象图的一般过程:1)先找出类和对象,通常类在“class”、“new”、“implements”等关键字之后的,而对象名则通常是在类名之后的2)然后对其进行细化的关联分析,绘制出相应的对象。绘制对象图将类图转换为对象图的过程:1)找出所有类,即在“:”之后的名称,整理2)通过对象的名字来解释其含义3)按类归纳属性4)通过关联来确定其含义5)划出对象图