第6章类图和对象图-郭ppt课件.ppt
《第6章类图和对象图-郭ppt课件.ppt》由会员分享,可在线阅读,更多相关《第6章类图和对象图-郭ppt课件.ppt(130页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章 类图和对象图类图和对象图l6.1 类图的概念类图的概念l6.2 类图建模技术类图建模技术l6.3 对象图对象图l6.4 补充:分析类补充:分析类类图类图l类图类图描述系统中类的静态结构,描述系统中的描述系统中类的静态结构,描述系统中的类类及及类之间的关系类之间的关系,还描述类的,还描述类的内部结构内部结构(类(类的属性和操作)。的属性和操作)。l类图类图描述的是一种描述的是一种静态关系静态关系,在系统的整个生,在系统的整个生命期中都是有效的。命期中都是有效的。l对象图对象图是类图的实例,由于对象存在生命周期,是类图的实例,由于对象存在生命周期,所以对象图只能在系统的某一时间存在。所
2、以对象图只能在系统的某一时间存在。类图的地位类图的地位l类图类图是面象对象系统建模中最常用的图。是面象对象系统建模中最常用的图。l类图类图是定义其它图的基础,在类图的基础上,是定义其它图的基础,在类图的基础上,可以使用状态图、协作图、组件图和配置图等可以使用状态图、协作图、组件图和配置图等进一步描述系统其它方面的特征。进一步描述系统其它方面的特征。l类图中的类类图中的类可以直接用某种面向对象编程语言可以直接用某种面向对象编程语言实现。实现。6.1 类图的概念类图的概念l描述类、接口及它们之间关系的图。描述类、接口及它们之间关系的图。l显示系统中各个类的静态结构。显示系统中各个类的静态结构。 6
3、.1.1 概述概述l类图的元素:类图的元素:类(类(Class)接口(接口(Interface)依赖关系(依赖关系(Dependency)泛化关系(泛化关系(Generalization)关联关系(关联关系(Association)实现关系(实现关系(Realization) 6.1.2 类类 l类类是构成类图的基础,也是面向对象系统组织结是构成类图的基础,也是面向对象系统组织结构的核心。构的核心。 l类类是对一组具有相同属性、操作、关系和语义的对是对一组具有相同属性、操作、关系和语义的对象的抽象。象的抽象。l类类包括包括名称部分(名称部分(Name)、属性部分(属性部分(Attribute)
4、和和操作部分(操作部分(Operation)。 lUML规范采用一个具有规范采用一个具有3个分栏的图标表示一个类。个分栏的图标表示一个类。名称分栏必须出现,而属性分栏和操作分栏可名称分栏必须出现,而属性分栏和操作分栏可以出现或不出现。以出现或不出现。当隐藏某个分栏时,并非表明某个分栏不存在。当隐藏某个分栏时,并非表明某个分栏不存在。隐藏操作参数隐藏操作参数隐隐藏藏可可见见性性6.1.2 类类l1 名称名称l2 属性属性l3 操作操作l4 职责职责l5 约束约束l6 注释注释(1)名称)名称 l应该来自系统的问题域。应该来自系统的问题域。 l应该是一个名词。应该是一个名词。 l分为简单名称和路径
5、名称。分为简单名称和路径名称。 (2)属性)属性l描述了类在软件系统中代表的事物(即对象)所具备描述了类在软件系统中代表的事物(即对象)所具备的特性。的特性。 l类可以有任意数目的属性,也可以没有属性。类可以有任意数目的属性,也可以没有属性。 l在在UML中,类属性的语法为:中,类属性的语法为:1. 可见性可见性l可见性描述了该属性对其它类是否可见,以可见性描述了该属性对其它类是否可见,以及是否可以被其它类引用。及是否可以被其它类引用。l类型:类型:公有(公有(Public) “”私有(私有(Private)“”受保护(受保护(Protected)“” 注意:注意:UML未规定默认未规定默认的
6、可见性,如果没的可见性,如果没有给出,表明该属有给出,表明该属性的可见性尚未定性的可见性尚未定义。义。2. 属性名属性名 l每个属性都必须有一个名字以区别于类中的其他每个属性都必须有一个名字以区别于类中的其他属性。属性。 l属性名由描述所属类的特性的名词或名词短语组属性名由描述所属类的特性的名词或名词短语组成。成。 l单字属性名小写,如果属性名包含了多个单词,单字属性名小写,如果属性名包含了多个单词,这些单词要合并,且除了第一个单词外其余单词这些单词要合并,且除了第一个单词外其余单词的首字母要大写。的首字母要大写。 -建议建议3. 类型类型 l简单类型:简单类型:整型整型布尔型布尔型实型实型枚
7、举类型枚举类型l系统中的其他类系统中的其他类 4. 初始值初始值 l目的目的:保护系统的完整性,防止漏掉取值或被非法保护系统的完整性,防止漏掉取值或被非法的值破坏系统的完整性。的值破坏系统的完整性。为用户提供易用性。为用户提供易用性。 5. 属性字符串属性字符串 l属性字符串是用户对该属性性质的一个约束说明。属性字符串是用户对该属性性质的一个约束说明。l例如例如 只读只读这样的特性说明该属性的值不能被修改。这样的特性说明该属性的值不能被修改。l任何希望添加在属性定义字符串值但又没有合适地任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在属性字符串里。方可以加入的规则,都可
8、以放在属性字符串里。 +status:Status=unpaidunpaid,paid +color:Color=redred,green,yellow确定取值范围确定取值范围补充:补充:作用域作用域l作用域(作用域(scope)是与属性和操作相关的一是与属性和操作相关的一个重要概念。个重要概念。l存在两种作用域:存在两种作用域:1.实例(实例(instance)作用域)作用域下,类的每个实例下,类的每个实例对象都有自己的属性值和操作。对象都有自己的属性值和操作。2.分类符(分类符(classifier)作用域)作用域下,一个类的所下,一个类的所有实例只存在一个属性值和操作。分类作用有实例只存
9、在一个属性值和操作。分类作用域的属性和操作名字要带下划线。域的属性和操作名字要带下划线。类的作用域属性:类的作用域属性:l分类作用域的属性,它能被所属类的所分类作用域的属性,它能被所属类的所有对象共享。有对象共享。例如:例如:C+中中的静态的静态成员成员静态属性静态属性属性声明的例子属性声明的例子Points属性的多重性属性的多重性为为2.*,表示该属性,表示该属性值有值有2个或者多个,个或者多个,同时这些值之间是有同时这些值之间是有序的。序的。Name属性的多重性为属性的多重性为0.2,表示,表示该属性值有可能是该属性值有可能是1个或者个或者2个,也个,也可能值为可能值为null。(3)操作
10、)操作l对类的对象所能做的事务的抽象。对类的对象所能做的事务的抽象。l一个类可以有任意数量的操作或者根本没有操一个类可以有任意数量的操作或者根本没有操作。作。 l返回类型、名称和参数一起被称为操作签名。返回类型、名称和参数一起被称为操作签名。 l在在UML中,类操作的语法为:中,类操作的语法为:操作操作l1. 可见性可见性l2. 操作名操作名l3. 参数表参数表l4. 返回类型返回类型l5. 特性字符串特性字符串1. 可见性可见性l类型:类型:公有(公有(Public) “”私有(私有(Private) “”受保护(受保护(Protected) “”包内公有(包内公有(Package) “”包
11、内公有(包内公有(Package)“”包内公有用来描述操作的可访问性的包内公有用来描述操作的可访问性的可见性为包内公有的操作可以被其所在包的对象访问。可见性为包内公有的操作可以被其所在包的对象访问。2. 操作名操作名 l用来描述所属类的行为的动词或动词短语。用来描述所属类的行为的动词或动词短语。l单字操作名小写,如果操作名包含了多个单词,单字操作名小写,如果操作名包含了多个单词,这些单词要合并,并且除了第一个单词外其余这些单词要合并,并且除了第一个单词外其余单词的首字母要大写。单词的首字母要大写。 3. 参数表参数表 l一些按顺序排列的属性定义了操作的输入。一些按顺序排列的属性定义了操作的输入
12、。 l是可选的,即操作不一定必须有参数才行。是可选的,即操作不一定必须有参数才行。 l定义方式:定义方式:“名称:类型名称:类型”。l若存在多个参数,将各个参数用逗号隔开。若存在多个参数,将各个参数用逗号隔开。l参数可以具有默认值。参数可以具有默认值。 4. 返回类型返回类型l是可选的,即操作不一定必须有返回类型。是可选的,即操作不一定必须有返回类型。 l绝大部分编程语言只支持一个返回值。绝大部分编程语言只支持一个返回值。 l具体的编程语言一般要加一个关键字具体的编程语言一般要加一个关键字void来表来表示无返回值。示无返回值。 5. 特性字符串特性字符串 l在操作的定义中加入一些除了预定义元
13、素之外在操作的定义中加入一些除了预定义元素之外的信息的信息。 l例如:例如: query这样的特性说明该操作不会修改系统的这样的特性说明该操作不会修改系统的状态。状态。 update这样的特性说明该操作会修改系统的这样的特性说明该操作会修改系统的状态。状态。(4)职责)职责 (responsibility)l类图标中还可以制定另一类图标中还可以制定另一种类的信息。在操作列表种类的信息。在操作列表框下面的区域,可以用来框下面的区域,可以用来说明类的职责。说明类的职责。l职责描述了职责描述了 类做什么类做什么类的属性和操作能完成什类的属性和操作能完成什么任务。么任务。l例如,一个洗衣机的职责例如,
14、一个洗衣机的职责是将脏衣服作为输入,输是将脏衣服作为输入,输出洗干净的衣服。出洗干净的衣服。职责职责(5)约束)约束l指定了类所要满足的一个或多个规则。指定了类所要满足的一个或多个规则。 l形式化的方法。形式化的方法。 (6)注释)注释l注释可以包含图形也可以包含文本。注释可以包含图形也可以包含文本。 6.1.3 接口和抽象类接口和抽象类-抽象类抽象类l 抽象操作:抽象操作:是指在指定该操作的类中并没有该操作是指在指定该操作的类中并没有该操作的实现方法,而只是显示了操作签名的那种操作的实现方法,而只是显示了操作签名的那种操作。(例如,(例如, C+中的纯虚函数)中的纯虚函数)l抽象类抽象类:至
15、少拥有一个抽象操作的类:至少拥有一个抽象操作的类。l在在UML图中,抽象操作的显示是在操作签名后面用特图中,抽象操作的显示是在操作签名后面用特性字符串性字符串abstract,或者将操作签名用斜体字体方,或者将操作签名用斜体字体方式显示。式显示。l在在UML图中,抽象类的显示是在类名后面用特性字符图中,抽象类的显示是在类名后面用特性字符串串abstract,或者将类名用斜体字体方式显示。,或者将类名用斜体字体方式显示。1.如果一个类继如果一个类继承了抽象类,承了抽象类,该类要么必须该类要么必须实现所有的抽实现所有的抽象操作称为具象操作称为具体类,要么该体类,要么该类也称为另一类也称为另一个抽象
16、类。个抽象类。2.抽象类是不能抽象类是不能产生实例的。产生实例的。抽象类名抽象类名用斜体用斜体l接口是一组没有相应方法实现的描述。接口是一组没有相应方法实现的描述。l接口通常被描述抽象操作,即之用操作名、参数接口通常被描述抽象操作,即之用操作名、参数表和返回类型说明接口行为,而操作的实现部分表和返回类型说明接口行为,而操作的实现部分将出现在实现该接口的元素中。将出现在实现该接口的元素中。l使用接口可以很好地将类所需要的行为与该行为使用接口可以很好地将类所需要的行为与该行为如何被实现完全分开。如何被实现完全分开。l在进行系统建模时,接口起来十分重要的作用,在进行系统建模时,接口起来十分重要的作用
17、,因为模型元素之间的协作是通过接口进行的。因为模型元素之间的协作是通过接口进行的。 6.1.3 接口和抽象类接口和抽象类-接口接口 (interface) 6.1.3 接口和抽象类接口和抽象类-接口接口 (interface)luml中接口通常只包含操作不包含属性。中接口通常只包含操作不包含属性。l接口不能实例化为对象。接口不能实例化为对象。l一个类可以实现一个或多个接口。一个类可以实现一个或多个接口。l如果类实现了接口,但未实现该接口中的所有操如果类实现了接口,但未实现该接口中的所有操作,那么此类必须声明为抽象的。作,那么此类必须声明为抽象的。与与java中接口中接口的概念稍有不的概念稍有不
18、同。同。接口与抽象类的区别接口与抽象类的区别l一般接口不含有属性,抽象类可以含有属性。一般接口不含有属性,抽象类可以含有属性。l接口中声明的方法都没有实现部分,而抽象类中接口中声明的方法都没有实现部分,而抽象类中的某些方法可以有具体实现。的某些方法可以有具体实现。l使用接口比使用抽象类安全,可以避免许多因为使用接口比使用抽象类安全,可以避免许多因为多继承产生的问题。多继承产生的问题。6.1.4 类之间的关系类之间的关系 1.关联(关联(association)2.聚合(聚合(aggregation)和组合()和组合(composition)3.泛化泛化 (generalization)4.实现
19、(实现(realization)5.依赖依赖 (dependenc)1.关联关系关联关系当类之间在概念上有连接关系时,这种关系叫做当类之间在概念上有连接关系时,这种关系叫做关联关联(association)。l名称(名称(Name)l角色(角色(Role)l多重性(多重性(Multiplicity)l限定关联限定关联l自反关联自反关联l关联上的约束关联上的约束l派生关联派生关联l关联类关联类l导航性(导航性(Navigation)l聚合关系(聚合关系(Aggregation)l组合关系(组合关系(Composition(1) 名称名称l关联名来描述关联的作用,清晰而简洁地说明对关联名来描述关联
20、的作用,清晰而简洁地说明对象间关系。使用一个动词或动词短语来命名关联。象间关系。使用一个动词或动词短语来命名关联。l关联的名称并不是必需的。关联的名称并不是必需的。 l可以前缀或后缀一个指引阅读方向的可以前缀或后缀一个指引阅读方向的方向指示符方向指示符,以消除歧义。以消除歧义。 一个关联一个关联队员和球队之间的关联。可以用一个队员和球队之间的关联。可以用一个短语短语“队员为篮球队效力队员为篮球队效力(plays on)”来刻划这个来刻划这个关联。关联。关联的导航型关联的导航型l单向关联单向关联:关联是单向的,从一个类的对象:关联是单向的,从一个类的对象可以找到另一个,反过来却不可。可以找到另一
21、个,反过来却不可。l双向关联双向关联:关联是双向的,如果一个对象和:关联是双向的,如果一个对象和另一个对象关联,那么这两个对象都互相知道另一个对象关联,那么这两个对象都互相知道对方。对方。(2) 角色角色 当一个类和另一个类发生关联时,每个类通常当一个类和另一个类发生关联时,每个类通常在关联中部扮演着某种角色。一个类对另一个在关联中部扮演着某种角色。一个类对另一个类所表现出来的职责。类所表现出来的职责。l在队员和球队的关联中,如果球队是职业篮球在队员和球队的关联中,如果球队是职业篮球队,那么它就是队员的雇主队,那么它就是队员的雇主(Employer),队员,队员就是球队的雇员就是球队的雇员(E
22、mployee)。l角色名不是类的组成部分,一个类可以在不同角色名不是类的组成部分,一个类可以在不同的关联中扮演不同的角色。的关联中扮演不同的角色。l由于角色名称和关联名称都被用来描述关系的由于角色名称和关联名称都被用来描述关系的目的,所以角色名称可以代替关联名称,或者目的,所以角色名称可以代替关联名称,或者两者同时使用。两者同时使用。l与关联名称不同,角色名可以生成代码。(使与关联名称不同,角色名可以生成代码。(使用用Rose工具可以直接生成代码)工具可以直接生成代码)l角色本身也具有可见性。(角色本身也具有可见性。(UML2.0 不在提倡不在提倡使用角色本身的可见性)使用角色本身的可见性)
23、private class Person private String personName; protected Company employer; /* * */ public Person() public class Company private String companyName; public Person employee; /* * */ public Company() private class Password /* * */ public Password() public class Id public Password thePassword; /* * */
24、public Id() 单向关联单向关联(3) 多重性多重性l关联的多重性指某个类有多少个对象可以和另一关联的多重性指某个类有多少个对象可以和另一个类的单个对象关联。个类的单个对象关联。l表示多重性的方法是在参与关联的类附近的关联表示多重性的方法是在参与关联的类附近的关联线上注名多重性数值。可以表达一个取值范围、线上注名多重性数值。可以表达一个取值范围、特定值、无限定的范围或一组离散值。特定值、无限定的范围或一组离散值。 l格式:格式:“minimum.maximum” (均为(均为Int型)。型)。(3) 多重性多重性n UML使用星号使用星号(*)来代表许多来代表许多(more)和多个和多
25、个(many)。n 在一种语境中,两点代表在一种语境中,两点代表or(或或)关系,例如关系,例如“1.*”代表一个或者多个代表一个或者多个n 在另一种语境中,在另一种语境中,or关系用逗号来表示,例如关系用逗号来表示,例如“5,10”代表代表5或者或者10。l如果没有明确标识多重性,就意味着如果没有明确标识多重性,就意味着1。思考思考:多重性:多重性 3,6.9 表示什么?表示什么?(4)限定关联()限定关联(qualified association)l带有限定符的关联称为带有限定符的关联称为限定关联限定关联(受限关联受限关联)。l限定关联用于限定关联用于一对多或多对多关一对多或多对多关联联
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 章类图 对象 ppt 课件
限制150内