第5章类图和对象图解析课件.ppt

上传人:牧羊曲112 文档编号:1525514 上传时间:2022-12-03 格式:PPT 页数:116 大小:1.31MB
返回 下载 相关 举报
第5章类图和对象图解析课件.ppt_第1页
第1页 / 共116页
第5章类图和对象图解析课件.ppt_第2页
第2页 / 共116页
第5章类图和对象图解析课件.ppt_第3页
第3页 / 共116页
第5章类图和对象图解析课件.ppt_第4页
第4页 / 共116页
第5章类图和对象图解析课件.ppt_第5页
第5页 / 共116页
点击查看更多>>
资源描述

《第5章类图和对象图解析课件.ppt》由会员分享,可在线阅读,更多相关《第5章类图和对象图解析课件.ppt(116页珍藏版)》请在三一办公上搜索。

1、第5章 类图和对象图,5.1 类的定义5.2 类之间的关系5.3 派生属性和派生关联5.4 抽象类、接口和模板类5.5 边界类、控制类和实体类5.6 类图5.7 领域分析5.8 OO设计原则5.9 对象图5.10 类图和对象图的区别5.11 在Rose中操作对象图和类图5.12 实例图书馆管理系统的类图,5.1 类的定义,面向对象系统组织结构的核心。对一组具有相同属性、操作、关系和语义的对象的抽象。包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)。,5.1 类的定义,1 名称2 属性3 操作4 职责5 约束6 注释7 用户定义分栏,1 名称,当类在类图显

2、示时,名称分栏是惟一必须可见的分栏。应该来自系统的问题域。名称应该精确并且简短,能够描述类所代表的对象的类型。 应该是一个名词,且不应该有前缀或后缀。例外情况是代表对象集合的类。,1 名称,名称的大小写规则最好与编程语言的规则相对应,例如,以下为不太好的命名:Cancelled_Show,Event_with_no_Shows,Exempt_Employee,Non_exempt_Employee将类的属性嵌入到类的名称中了。改为Event,Show,Employee分为简单名称和路径名称。,2 属性,用来描述该类的对象所具有的静态特征。 一个类可以拥有三种类型的信息:对象必须了解自己,即他有

3、自己的结构和当前的状态对象必须了解他的直接关系对象有时还要监视特定的信息类可以有任意数目的属性,也可以没有属性。 在UML中,类属性的语法为:可见性 属性名 :类型 多重性 =初始值 特性,2 属性,(1) 可见性(2) 属性名(3) 类型(4)初始值(5) 特性(6) 类作用域的属性,(1) 可见性,命名空间:是UML中可以被命名的元素,它可以包含另外的命名元素。命名空间可以规定其包含的元素的可见性类型:公有(Public) “”私有(Private)“”受保护(Protected)“” 包(Package)”,(2) 属性名,每个属性都必须有一个名字以区别于类中的其他属性。 属性名由描述所

4、属类特性的名词或名词短语组成 单字属性名小写,如果属性名包含了多个单词,这些单词要合并,且除了第一个单词外其余单词的首字母要大写。如果不同的类拥有相同的属性名,而开发人员又要在同一上下文中引用他们,必须使用完整的路径表示属性。Event.status,Venue.status。,(3) 类型,简单类型:整型Integer布尔型Boolean实型Double字符串String枚举类型系统中的其他类,(4) 初始值,也称为默认值。目的:保护系统的完整性,防止漏掉取值或被非法的值破坏系统的完整性。为用户提供易用性。初始值表达式可以是一个单独的数值,也可以是用某种语言编写的字符串。,(5) 特性,指定

5、关于属性的约束信息。任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在特性里。在其他对象试图改变属性值时,特性字符串的规则可以保护属性的完整性。特性被表示为“标记定义=标记值”的形式。,(6)类作用域的属性,大部分属性的拥有者是特定的对象(类实例),这些属性称为实例作用域的属性属性的值被定义和保存在类里,该类的任何对象都可以访问这个值,则称为类作用域的属性,又称为静态属性表示:,属性声明的例子,+size:Area =(100,100)#visibility:Boolean = false+default-size:Rectangle#maximum-size:Recta

6、ngle-xptr:XWindowPtr=no default,requiredColors:Color3points:Point2.* orderedname:String0.1,3 操作,用于修改、检索类的属性或执行某些动作。一个类可以有任意数量的操作或者根本没有操作 返回类型、名称和参数一起被称为特征标记。在同一个类中,操作的名称不必是惟一的,但特征标记必须是惟一的。 在UML中,类操作的语法为: 可见性 操作名 (参数列表) :返回类型 特性在操作分栏的内部,根据操作的用途,可以使用版型将操作分成许多小组。,3 操作,(1) 可见性(2) 操作名(3) 参数表(4) 返回类型(5) 特

7、性(6) 类作用域的操作,(1) 可见性,类型:公有(Public) “”私有(Private) “”受保护(Protected) “”包内公有(Package) “”,(2) 操作名,用来描述所属类的行为的动词或动词短语。单字操作名小写,如果操作名包含了多个单词,这些单词要合并,并且除了第一个单词外其余单词的首字母要大写。,(3) 参数表,一些按顺序排列的属性定义了操作的输入。 是可选的,即操作不一定必须有参数才行。 定义方式:“名称:类型”。若存在多个参数,将各个参数用逗号隔开。参数可以具有默认值。,(4) 返回类型,是可选的,即操作不一定必须有返回类型。 绝大部分编程语言只支持一个返回值

8、。 具体的编程语言一般要加一个关键字void来表示无返回值。,(5) 特性,在操作的定义中加入一些除了预定义元素之外的信息。,(6)类作用域的操作,作用域在类之内而不是对象之内的操作,也称为静态操作。,操作声明的例子,+display():Location+hide()#create()-attachXWindow(xwin:XWindowPtr),4 特性,指定关于类的附加信息。这些信息不适宜放在预定义内容中。特性被表示为“标记定义=标记值”的形式。,5 职责,类或其他元素的契约或义务。 自由形式的文本。 非形式化的方法。,6 约束,指定了类所要满足的一个或多个规则。 形式化的方法。,7 注

9、释,注释可以包含图形也可以包含文本。,8 用户定义分栏,为一些不适合放在预定义分栏里的信息提供了放置空间。,Event,Project InfoTeam=“alpha”Status=“beta”,5.2 类之间的关系,1 关联关系2 聚集关系3 组合关系4 泛化关系5 依赖关系6 实现关系,1 关联关系,是模型元素间的一种语义联系,他是对具有共同的结构特性、行为特性、关系和语义的链的描述链是关联的实例。 一个完整的关联包含三部分:类之间的关联直线和两个关联端点。端点是一个元类,有自己的属性(多重性、约束、角色)。 public A public B theB; public B ,1 关联关系

10、,(1) 名称(Name)(2) 角色(Role)(3) 多重性(Multiplicity)(4) 关联类(Association Class)(5)关联的约束(6)限定关联(7)关联的种类(8) 导航性,(1) 名称,使用一个动词或动词短语来命名关联。清晰而简洁地说明对象间关系。关联名称并不是必需的,原则是有利于理解模型 可以黑色三角形指引阅读方向,以消除歧义。,(2) 角色,当需要强调一个类在一个关联中的确切含义时,使用关联角色。 角色的名称应该是名词或名词短语,以解释对象是如何参与关系的。 角色名称是可以生成代码的,名称必须惟一。,public Company public Person

11、 employee; ,(3) 多重性,类的多少对象可以参与该关联。可以表达一个取值范围、特定值、无限定的范围或一组离散值。 格式:“minimum.maximum” (均为Int型)。0.1 0.* 0.n 1 1.* 1.n * 3,6.9使用ordered表示元素是有序的赋给一个端点的多重性表示该端点可以有多少个对象与另一个端点的一个对象关联。,ordered,(4) 关联类,进一步描述关联的属性、操作以及其他信息。public class Company private String companyName; public Person employee;public class Pe

12、rson private String personName; protected Company employer;public class Contract private Double salary; ,(5)关联的约束,关联可以加上一些约束,以加强关联的含义。在关联上使用 表示约束。当多个关联之间存在约束条件时,需要使用UML注释来表示。,(6)限定关联,带有限定符的关联称为限定关联限定符很像是索引文件的关键字,使用它可以直接找到所需要的对象。一般来说,查询结果会是所有对象的一个子集,而不是整个列表。可把一对多转换为一对一。多重性是指File和( Directory ,name)间的关

13、联限定符是关联的属性,而不是类的属性,(7)关联的种类,自反关联二元关联N元关联,自反关联,又称递归关联,是一个类与自身的关联,即同一个类的两个对象间的关系。自反关联虽然只有一个类,但有两个关联端,每个关联端的角色不同。public class EnginePart public EnginePart b; public EnginePart a; public EnginePart() ,二元关联,N元关联,N元关联是在3个或3个以上类之间的关联N元关联的多重性是指在其他N-1个实例确定的情况下,关联实例的个数。N元关联没有限定符、聚集、组合等Rose中不能直接表示N元关联,(8) 导航性,

14、如果关联是单向的,则称为导航关联。导航性是指关联关系只在指定方向上成立,或只能从一个方向发送消息。使用导航性可以降低类间的耦合度。,识别关联,从问题域与系统责任出发,考虑各类对象之间是否存在着某种静态关系。例,在学籍管理系统中,教师和班级之间存在任课关系,需要在教师、班级和课程之间建立关联关系,2 聚集关系,一种特殊类型的关联。 表示整体与部分关系的关联。 需求分析中的“包含”、“组成”、“分为部分”作为整体方的类的重数不是1,则作为聚集,3 组合关系,聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合整体拥有各个组成部分,部分与整体共存,整体不存在,则部分随之消失。 整体不仅控制着部分对

15、象的行为,而且控制着部分对象的创建和解构,4 泛化关系,存在于一般元素和特殊元素间的分类关系。 可以用于类、用例以及其他模型元素。 描述了一种“is a kind of” 的关系。,4 泛化关系,描述银行账户的类图使用泛化关系的银行账户类,4 泛化关系,泛化主要用途:多态 继承 单继承多重继承,5 依赖关系,依赖关系代表一种客户/提供者的关系,如果提供者发生变化,那么客户也要做出相应改变。 客户以某种形式依赖于提供者。一个是独立的,一个是不独立的。 关联、实现和泛化在语义上都是依赖关系。图形表示 用两个模型元素之间带箭头的虚线表示,箭尾处的模型元素(客户)依赖于箭头处的模型元素(提供者),5

16、依赖关系,(1) 使用依赖(Usage)(2) 抽象依赖(Abstraction)(3) 授权依赖(Permission)(4) 绑定依赖(Binding),(1) 使用依赖,表示客户使用提供者提供的服务以实现它的行为,包括:使用(use)调用(call)参数(parameter)发送(send)实例化(instantiate),(2) 抽象依赖,表示客户与提供者之间的关系,依赖于在不同抽象层次上的事物,包括:跟踪(trace):是一种历史性的关系,说明随着需求的改变,模型在不停地改进并形成实现版本。精化(refine):是对提供者的改进(增强、合并、改变等)。派生(derive):表示客户方

17、的值由提供者计算得来。,(3) 授权依赖,表达一个事物访问另一个事物的能力,包括:访问(access):提供者允许客户访问其成员,但受成员的可见性限制。导入(import):提供者允许客户访问其公有成员。友元(friend):提供者授权客户访问其非公有成员。,(4) 绑定依赖,较高级的依赖类型,用于绑定模板以创建新的模型元素,包括:绑定(bind):将模板参数绑定成实际的值以创建一个非参数化的元素。,6 实现关系,规格说明和其实现之间的关系。类和接口之间的关系是实现关系,表示类实现接口提供的操作显示一个类引用另一个类。 客户必须至少支持提供者的所有操作。 泛化和实现都可以将一般描述与具体描述联

18、系起来:泛化将同一语义层上的元素连接起来,并且通常在同一模型内。实现将不同语义层内的元素连接起来,并且通常建立在不同的模型内。,类间关系,聚合和组合关系表达整体和部分关系泛化关系表达一般和特殊关系依赖、关联表示语义关系在描述语义上相互有联系的类之间的关系时,首先考虑泛化关系和关联关系,当类之间的关系不宜于这两种关系,考虑依赖关系。,5.3 派生属性和派生关联,是指可以从其他属性和关联计算推演得到的属性和关联。使用他们是为了增强类图的性能,方便于在复杂的类图中寻找所需信息。在属性或关联前加上“/”表示派生关联或派生属性在生成代码时,派生属性和派生关联不产生代码,5.4 抽象类、接口和模板类,只含

19、义方法声明的类被称为接口。它用于为类或类的集合设定一个外部行为特性的规范。一个类可以实现一个或多个接口。UML的接口与具体语言中的接口有可能有不同点。,B类只使用接口中指定的操作,5.4 抽象类、接口和模板类,抽象类是不能直接产生实例的类。抽象类包含抽象方法。抽象方法不包含具体实现抽象类与接口的区别:接口不包含属性,抽象类可以。接口中声明的所有方法都没有实现部分,而抽象类中可以包含有具体实现的方法,5.4 抽象类、接口和模板类,模板提供了定制某种类的方法,所以又被称为参数化的类,他定义某种类型的类。参数的格式:名称:数据类型如果参数的定义中没有类型,则认为参数的名称既是他的类型,5.5 边界类

20、、控制类和实体类,1 边界类2 实体类3 控制类,1 边界类,系统与外界交互的类,如窗体、对话框、报表、表示通讯协议的类。 边界类是系统内对象与系统外参与者的联系媒介。图形表示,1 边界类,通过用例图可以确定边界类,2 实体类,实体类保存要放进持久存储体的信息。是问题域中的核心类,从客观世界的实体对象抽象出来的持久存储体就是数据库、文件等可以永久存储数据的介质。实体类可以通过事件流和交互图发现,实体类通常用领域术语命名。通常,每个实体类在数据库中有相应的表,实体类中的属性对于数据库表中的字段。,3 控制类,用于协调边界类和实体类之间的交互。每个用例通常有一个控制类,控制用例中的事件顺序控制类也

21、可以在多个用例图间共用其他类并不向控制类发送很多消息,而是由控制类发出很多消息。,5.6 类图,描述类、接口、协作及它们之间关系的图。显示系统中各个类的静态结构。,5.6.1 类图的抽象层次,3个抽象层次概念层类图:描述应用领域中的概念,通常用在分析阶段。应独立于具体的程序设计语言。说明层类图:描述软件的接口部分,通常用在设计阶段。实现层类图:提供类的实现细节,通常用在实现阶段,5.6.2 构造类图,寻找类的技巧根据用例描述中的名词确定类的候选者使用CRC(类、职责、协作)分析法寻找类。根据边界类、实体类和控制类的划分来帮助发现系统中的类对领域进行分析,或利用已有的领域分析结果得到类参考设计模

22、式来确定类根据某些软件开发过程提供的指导原则,5.6.2 构造类图,注意:构造类图时,不要试图使用所有的符号,20%符号用于80%要求构造类图时,不要过早陷入实现细节。建立类图的步骤:研究分析问题领域,确定系统的需求确定类,明确类的含义和职责,确定属性和操作确定类之间的关系调整和细化已得到的类和类之间的关系,解决诸如命名冲突、功能重复等问题绘制类图并增加相应的说明,5.7 领域分析,领域分析也称为问题分析,领域分析是:(1)通过对某一领域中的已有应用系统、理论、技术、开发历史等的研究,来标识、收集、组织、分析和表示领域模型及软件体系结构的过程(2)根据(1)中进行的过程得到的结果建立类图的过程

23、就是对领域及其解决方案的分析和设计过程,5.8 OO设计原则,1 开闭原则2 Liskov替换原则3 依赖倒置原则4 接口分离原则,1 开闭原则,开闭原则指的是一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的。应该尽量使得模块可以扩展,并且在扩展时不需要对模块的源代码进行修改。,2 Liskov替换原则,指的是子类可以替换父类能出现的任何地方,3 依赖倒置原则,指的是依赖关系应该是尽量依赖接口(或抽象类),而不是依赖于具体类。结构化设计中,高层的模块依赖于低层的模块,3 依赖倒置原则,面向对象的设计中,与具体实现有关的类依赖于抽象类或接口,4 接口分离原则,指的是在设计时采用多个与

24、特定客户类有关的接口比采用一个通用接口要好。,5.9 对象图,描述参与一个交互的各个对象在交互过程中某一时刻的状态。 可以被看作是类图在某一时刻的实例。,5.9.1 对象,对象名称:对象名:类名 :类名 对象名例如,Jackie:Customer,73865:Performance,:Customer,Jackie对象属性:不包含属性的定义,只给出属性名和属性值例如,name=“Jackie”没有对象操作分栏,5.9.2 链,链是关联的实例,表示对象间的关系链的命名方法:使用对应的关联命名使用关联端点的角色名称命名使用与参与关联的类名一致的角色名称命名链只有名称、角色,没有多重性,5.9.3

25、使用对象图测试类图,类图有可能有错误或不完善,可以使用对象图测试它例如,销售协议(SalesAgreement)规定了某些座位(Seat)在特定的时期分配给某个职员,每个销售协议可以分配不少于一个的座位,而每个座位只能和一个销售协议关联,测试用例1,创建一个SalesAgreement对象6475,两个Seat对象,测试用例2,有些座位从来就没有被某个职员支配过,他们是直接被销售给观众的。,3 测试用例3,一个座位可以被多个销售协议分配。即座位可以被重复分配,但他们的日期不能重叠。,5.10 类图和对象图的区别,5.11 在Rose中操作对象图和类图,1 类图操作2 类规范与类的应用3 属性规

26、范与应用4 操作规范与应用5 关联规范与应用6 泛化规范与应用7 依赖规范与应用8 聚合规范与应用9 逻辑包规范与应用,(1) 创建新的类图 步骤右单击浏览器中的逻辑视图名称“Logical View” ;单击快捷菜单中的New Class diagram; 输入新类图的名称。,1 类图操作,(2)删除类图 删除类图时,类图中的类并不删除,它们仍然在浏览器和其它模型图中 操作:右单击浏览器中的类图 ;单击快捷菜单中的Delete。,1 类图操作,1 类图操作,(3) 类图工具箱定制工具箱右单击工具箱;单击快捷菜单中的“Customize”;在弹出的“自定义工具栏”对话框中,选择相应的工具图标,

27、然后单击“添加”或“删除”将选定的工具图标添加至窗口的工具箱中,或从工具箱中移走。,2 类规范与类的应用,(1)类规范 8个标签General标签 Detail标签 Operation标签 Attributes标签 Relations标签 Components标签 Nested标签 Files标签,2 类规范与类的应用,General标签 名称(Name) 构造型(Stereotype) 输出控制(Export Control),2 类规范与类的应用,General标签版型(Stereotype),2 类规范与类的应用,Detail标签多重性(Multiplicity) 存储需求(Space)

28、 并发性(Concurrency),2 类规范与类的应用,Attributes标签 Operation标签 Relations标签 Nested标签创建嵌套类 右单击标签中任一空白处,从快捷菜单中选择Insert,输入嵌套类名称;按一般方法创建父类和嵌套类:在浏览器中,将嵌套类拖放到父类。,2 类规范与类的应用,Components标签显示用于实现系统中类的构件 “Show all components”表示是显示系统中的所有构件,还是只显示实现所选类的构件 显示构件时,同时还显示构件所属的包,以及实现所采用的编程语言,(2)类的操作 添加一个类单击工具箱中的类图标; 在模型图任一位置单击,新

29、类取名为NewClass;输入新的类名。 删除一个类 单击模型图中要删除的类; 选择Edit Delete from Model。,2 类规范与类的应用,(1)属性规范 3个标签:General标签Detail标签DDL标签,3 属性规范与应用,3 属性规范与应用,General标签属性数据类型(Type) 属性版型(Stereotype) 属性的初值(Initial) 输出控制(Export Control),Detail标签属性控制(Containment)By value:按数值 By reference:按引用Unspecified:未指定静态属性(Static) 派生属性(Deriv

30、ed),3 属性规范与应用,3 属性规范与应用,(2) 属性操作 增加一个属性右单击浏览器或类图中的类,选择New Attribute,用Name:DataType = Initial Value格式,输入属性名。打开类的规范窗口,选择“Attributes”标签,右单击属性区的任何位置,在快捷菜单中选择Insert。删除一个属性右单击浏览器某个属性,从快捷菜单选择Delete。选择类图中的某个属性,用退格键删除模型图中的属性名、数据类型和初始值,单击模型图中任一位置,确认删除。 打开属性类的类规范窗口,选择“Attributes”标签,右单击要输出的属性,从快捷菜单中选择Delete,确认删

31、除 。,4 操作规范与应用,(1) 操作规范General标签返回值的类型(Return)构造型(Stereotype) 输出控制(Export Control),4 操作规范与应用,Detail标签 操作变元(argument) 操作协议(Protocol) 操作限制(Qualification) 内存长度(Size) 时间(Time) 并发性(Concurrency) Sequential:只有一个控制线程时,操作正常工作。 Guarded:存在多个控制线程时,不同线程的类相互协作,操作可正常工作。 Synchronous:存在多个控制线程时,操作可正常工作。,异常(Exceptions)

32、标签 操作可抛出的异常通过其中的4个按钮添加、删除和上、下移动异常,4 操作规范与应用,前置条件(Preconditions)标签 前置条件(Preconditions) 指定操作运行之前应满足的条件,即操作的入口行为,通常是不等式 交互图(Interaction Diagram)说明操作语义的交互图,4 操作规范与应用,语义(Semantics)标签 语义(Semantics) 指定操作的工作在文本框中用伪代码描述操作逻辑 交互图(Interaction Diagram) 说明了操作语义的交互图,4 操作规范与应用,后置条件(Postconditions)标签后置条件(Postconditi

33、ons) 指定操作运行之后要符合的条件,即操作的出口行为,通常是不等式 交互图(Interaction Diagram) 说明操作语义的交互图,4 操作规范与应用,(2)操作应用 增加一个操作 类似于添加一个属性的操作删除一个操作 类似于删除一个属性的操作,4 操作规范与应用,(1) 关联规范 General标签关系名(Name) 一个动词或动词短语,描述关系的作用,是可选的关系名在关系线上斜体显示,5 关联规范与应用,General标签角色(Role) 描述类在关系中的作用通常是名词或名词短语,显示在起这个作用的类旁边角色名前带有一个加号“+”,,5 关联规范与应用,5 关联规范与应用,De

34、tail标签链接元素(Link Element) 链接元素也称为关联类 使用限制(Constraints) 限制是必须符合的条件。Rose中可以设置关系的限制条件输入的限制条件在生成代码时成为说明语句,5 关联规范与应用,Role A General和Role B General 标签Rose在生成代码时要给关联建立一个属性Export Control字段设置该属性的可见性,5 关联规范与应用,Role A Detail和Role B Detail标签多重性(Multiplicity) 表示关联中一个类的几个实例与另一个类的一个实例相联系包容(Containment) 设置关联属性是按值还是按

35、引用包容 Static类所有的实例共享的属性 Friend 表示客户类能访问提供者类的非公共属性和操作,5 关联规范与应用,(2) Key/Qualifier规范限定关联打开Key/Qualifier规范窗口:双击关联,打开关联规范窗口; 单击“Role A Detail”标签; 双击Key/Qualifier字段列表中的限定词。,(2) Key/Qualifier规范定义限定关联 右单击关联规范窗口Key/Qualifier字段列表,从快捷菜单中选择Insert,直接在列表中输入限定词和类型 删除限定词 右单击关联规范窗口Key/Qualifier字段列表,从快捷菜单中选择Delete 修改限定词 单击关联规范窗口Key/Qualifier字段列表,直接在列表中编辑限定词和类型。,5 关联规范与应用,(3) 关联的操作 增加关联 改变关系的导航 在要移动的关系端单击右键,在快捷菜单中选择Navigable 删除关联,5 关联规范与应用,5.12 实例图书馆管理系统的类图,7个类:ItemTitleLoanReservationBorrowerAdministratorLibrarian,5.12 图书馆管理系统的类图,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号