第5章类图和对象图解析课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第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、束信息。任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在特性里。在其他对象试图改变属性值时,特性字符串的规则可以保护属性的完整性。特性被表示为“标记定义=标记值”的形式。Event-name:String=no default,Reauired,1.30 chars-startDate:Calendar=no defalut,Required,today-duration_in_days:int=10(6)类作用域的属性大部分属性的拥有者是特定的对象(类实例),这些属性称为实例作用域的属性属性的值被定义和保存在类里,该类的任何对象都可以访问这个值,则称为类作用域的属性,
6、又称为静态属性表示:属性声明的例子+size:Area=(100,100)#visibility:Boolean=false+default-size:Rectangle#maximum-size:Rectangle-xptr:XWindowPtr=no default,requiredColors:Color3points:Point2.*orderedname:String0.13 操作用于修改、检索类的属性或执行某些动作。一个类可以有任意数量的操作或者根本没有操作 返回类型、名称和参数一起被称为特征标记。在同一个类中,操作的名称不必是惟一的,但特征标记必须是惟一的。在UML中,类操作的语
7、法为:可见性可见性 操作名操作名(参数列表参数列表):返回类型返回类型 特性特性在操作分栏的内部,根据操作的用途,可以使用版型将操作分成许多小组。3 操作(1)可见性(2)操作名(3)参数表(4)返回类型(5)特性(6)类作用域的操作(1)可见性类型类型:公有(Public)“”私有(Private)“”受保护(Protected)“”包内公有(Package)“”(2)操作名 用来描述所属类的行为的动词或动词短语。单字操作名小写,如果操作名包含了多个单词,这些单词要合并,并且除了第一个单词外其余单词的首字母要大写。(3)参数表 一些按顺序排列的属性定义了操作的输入。是可选的,即操作不一定必须
8、有参数才行。定义方式:“名称:类型名称:类型”。若存在多个参数,将各个参数用逗号隔开。参数可以具有默认值。(4)返回类型是可选的,即操作不一定必须有返回类型。绝大部分编程语言只支持一个返回值。具体的编程语言一般要加一个关键字void来表示无返回值。(5)特性 在操作的定义中加入一些除了预定义元素之外的信息。(6)类作用域的操作作用域在类之内而不是对象之内的操作,也称为静态操作。操作声明的例子+display():Location+hide()#create()-attachXWindow(xwin:XWindowPtr)4 特性指定关于类的附加信息。这些信息不适宜放在预定义内容中。特性被表示为
9、“标记定义=标记值”的形式。EventAuthor=Tom,Last_updated=09-18-12,Approved5 职责 类或其他元素的契约或义务。自由形式的文本。非形式化的方法。6 约束指定了类所要满足的一个或多个规则。形式化的方法。7 注释注释可以包含图形也可以包含文本。8 用户定义分栏为一些不适合放在预定义分栏里的信息提供了放置空间。EventProject InfoTeam=“alpha”Status=“beta”5.2 类之间的关系 1 关联关系2 聚集关系3 组合关系4 泛化关系5 依赖关系6 实现关系1 关联关系是模型元素间的一种语义联系,他是对具有共同的结构特性、行为特
10、性、关系和语义的链的描述链是关联的实例。一个完整的关联包含三部分:类之间的关联直线和两个关联端点。端点是一个元类,有自己的属性(多重性、约束、角色)。public A public B theB;public B 端点端点名称1 关联关系(1)名称(Name)(2)角色(Role)(3)多重性(Multiplicity)(4)关联类(Association Class)(5)关联的约束(6)限定关联(7)关联的种类(8)导航性(1)名称使用一个动词或动词短语来命名关联。清晰而简洁地说明对象间关系。关联名称并不是必需的,原则是有利于理解模型 可以黑色三角形指引阅读方向,以消除歧义。(2)角色 当
11、需要强调一个类在一个关联中的确切含义时,使用关联角色。角色的名称应该是名词或名词短语,以解释对象是如何参与关系的。角色名称是可以生成代码的,名称必须惟一。public Company public Person employee;(3)多重性 类的多少对象可以参与该关联。可以表达一个取值范围、特定值、无限定的范围或一组离散值。格式:“minimum.maximum”(均为Int型)。0.1 0.*0.n 1 1.*1.n *3,6.9使用ordered表示元素是有序的赋给一个端点的多重性表示该端点可以有多少个对象与另一个端点的一个对象关联。ordered(4)关联类进一步描述关联的属性、操作以
12、及其他信息。public class Company private String companyName;public Person employee;public class Person private String personName;protected Company employer;public class Contract private Double salary;(5)关联的约束关联可以加上一些约束,以加强关联的含义。在关联上使用 表示约束。当多个关联之间存在约束条件时,需要使用UML注释来表示。(6)限定关联带有限定符的关联称为限定关联限定符很像是索引文件的关键字,使用
13、它可以直接找到所需要的对象。一般来说,查询结果会是所有对象的一个子集,而不是整个列表。可把一对多转换为一对一。多重性是指File和(Directory,name)间的关联限定符是关联的属性,而不是类的属性(7)关联的种类自反关联二元关联N元关联自反关联又称递归关联,是一个类与自身的关联,即同一个类的两个对象间的关系。自反关联虽然只有一个类,但有两个关联端,每个关联端的角色不同。public class EnginePart public EnginePart b;public EnginePart a;public EnginePart()二元关联N元关联N元关联是在3个或3个以上类之间的关联
14、N元关联的多重性是指在其他N-1个实例确定的情况下,关联实例的个数。N元关联没有限定符、聚集、组合等Rose中不能直接表示N元关联nnn(8)导航性 如果关联是单向的,则称为导航关联。导航性是指关联关系只在指定方向上成立,或只能从一个方向发送消息。使用导航性可以降低类间的耦合度。识别关联 从问题域与系统责任出发,考虑各类对象之间是否存在着某种静态关系。例,在学籍管理系统中,教师和班级之间存在任课关系,需要在教师、班级和课程之间建立关联关系2 聚集关系 一种特殊类型的关联。表示整体与部分关系的关联。需求分析中的“包含”、“组成”、“分为部分”作为整体方的类的重数不是1,则作为聚集 3 组合关系聚
15、合关系中的一种特殊情况,是更强形式的聚合,又称强聚合整体拥有各个组成部分,部分与整体共存,整体不存在,则部分随之消失。整体不仅控制着部分对象的行为,而且控制着部分对象的创建和解构4 泛化关系存在于一般元素和特殊元素间的分类关系。可以用于类、用例以及其他模型元素。描述了一种“is a kind of”的关系。4 泛化关系描述银行账户的类图描述银行账户的类图使用泛化关系使用泛化关系的银行账户类的银行账户类4 泛化关系泛化主要用途:泛化主要用途:I.多态 II.继承 单继承多重继承5 依赖关系依赖关系代表一种客户/提供者的关系,如果提供者发生变化,那么客户也要做出相应改变。客户以某种形式依赖于提供者
16、。一个是独立的,一个是不独立的。关联、实现和泛化在语义上都是依赖关系。图形表示 用两个模型元素之间带箭头的虚线表示,箭尾处的模型元素(客户)依赖于箭头处的模型元素(提供者)5 依赖关系(1)使用依赖(Usage)(2)抽象依赖(Abstraction)(3)授权依赖(Permission)(4)绑定依赖(Binding)(1)使用依赖 表示客户使用提供者提供的服务以实现它的行为,包括:使用(use)调用(call)参数(parameter)发送(send)实例化(instantiate)(2)抽象依赖表示客户与提供者之间的关系,依赖于在不同抽象层次上的事物,包括:跟踪(trace):是一种历史
17、性的关系,说明随着需求的改变,模型在不停地改进并形成实现版本。精化(refine):是对提供者的改进(增强、合并、改变等)。派生(derive):表示客户方的值由提供者计算得来。(3)授权依赖 表达一个事物访问另一个事物的能力,包括:访问(access):提供者允许客户访问其成员,但受成员的可见性限制。导入(import):提供者允许客户访问其公有成员。友元(friend):提供者授权客户访问其非公有成员。(4)绑定依赖较高级的依赖类型,用于绑定模板以创建新的模型元素,包括:绑定(bind):将模板参数绑定成实际的值以创建一个非参数化的元素。6 实现关系 规格说明和其实现之间的关系。类和接口之
18、间的关系是实现关系,表示类实现接口提供的操作显示一个类引用另一个类。客户必须至少支持提供者的所有操作。泛化和实现都可以将一般描述与具体描述联系起来:泛化将同一语义层上的元素连接起来,并且通常在同一模型内。实现将不同语义层内的元素连接起来,并且通常建立在不同的模型内。类间关系聚合和组合关系表达整体和部分关系泛化关系表达一般和特殊关系依赖、关联表示语义关系在描述语义上相互有联系的类之间的关系时,首先考虑泛化关系和关联关系,当类之间的关系不宜于这两种关系,考虑依赖关系。5.3 派生属性和派生关联是指可以从其他属性和关联计算推演得到的属性和关联。使用他们是为了增强类图的性能,方便于在复杂的类图中寻找所
19、需信息。在属性或关联前加上“/”表示派生关联或派生属性在生成代码时,派生属性和派生关联不产生代码5.4 抽象类、接口和模板类只含义方法声明的类被称为接口。它用于为类或类的集合设定一个外部行为特性的规范。一个类可以实现一个或多个接口。UML的接口与具体语言中的接口有可能有不同点。B类只使用接口中指定的操作5.4 抽象类、接口和模板类抽象类是不能直接产生实例的类。抽象类包含抽象方法。抽象方法不包含具体实现抽象类与接口的区别:接口不包含属性,抽象类可以。接口中声明的所有方法都没有实现部分,而抽象类中可以包含有具体实现的方法5.4 抽象类、接口和模板类模板提供了定制某种类的方法,所以又被称为参数化的类
20、,他定义某种类型的类。参数的格式:名称:数据类型名称:数据类型如果参数的定义中没有类型,则认为参数的名称既是他的类型5.5 边界类、控制类和实体类1 边界类2 实体类3 控制类1 边界类 系统与外界交互的类,如窗体、对话框、报表、表示通讯协议的类。边界类是系统内对象与系统外参与者的联系媒介。图形表示图形表示1 边界类通过用例图可以确定边界类2 实体类实体类保存要放进持久存储体的信息。是问题域中的核心类,从客观世界的实体对象抽象出来的持久存储体就是数据库、文件等可以永久存储数据的介质。实体类可以通过事件流和交互图发现,实体类通常用领域术语命名。通常,每个实体类在数据库中有相应的表,实体类中的属性
21、对于数据库表中的字段。3 控制类用于协调边界类和实体类之间的交互。每个用例通常有一个控制类,控制用例中的事件顺序控制类也可以在多个用例图间共用其他类并不向控制类发送很多消息,而是由控制类发出很多消息。5.6 类图描述类、接口、协作及它们之间关系的图。显示系统中各个类的静态结构。5.6.1 类图的抽象层次3个抽象层次概念层类图:描述应用领域中的概念,通常用在分析阶段。应独立于具体的程序设计语言。说明层类图:描述软件的接口部分,通常用在设计阶段。实现层类图:提供类的实现细节,通常用在实现阶段5.6.2 构造类图寻找类的技巧根据用例描述中的名词确定类的候选者使用CRC(类、职责、协作)分析法寻找类。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 章类图 对象 图解 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内