第6章类图和对象图-郭ppt课件

上传人:2127513****773577... 文档编号:240638803 上传时间:2024-04-26 格式:PPT 页数:130 大小:2.89MB
收藏 版权申诉 举报 下载
第6章类图和对象图-郭ppt课件_第1页
第1页 / 共130页
第6章类图和对象图-郭ppt课件_第2页
第2页 / 共130页
第6章类图和对象图-郭ppt课件_第3页
第3页 / 共130页
资源描述:

《第6章类图和对象图-郭ppt课件》由会员分享,可在线阅读,更多相关《第6章类图和对象图-郭ppt课件(130页珍藏版)》请在装配图网上搜索。

1、第第6章章 类图和对象图类图和对象图6.1 类图的概念类图的概念6.2 类图建模技术类图建模技术6.3 对象图对象图6.4 补充:分析类补充:分析类第6章 类图和对象图6.1 类图的概念1类图类图l类图类图描述系统中类的静态结构,描述系统中的描述系统中类的静态结构,描述系统中的类类及及类之间的关系类之间的关系,还描述类的,还描述类的内部结构内部结构(类(类的属性和操作)。的属性和操作)。l类图类图描述的是一种描述的是一种静态关系静态关系,在系统的整个生,在系统的整个生命期中都是有效的。命期中都是有效的。l对象图对象图是类图的实例,由于对象存在生命周期,是类图的实例,由于对象存在生命周期,所以对

2、象图只能在系统的某一时间存在。所以对象图只能在系统的某一时间存在。类图类图描述系统中类的静态结构,描述系统中的类及类之间的关系2类图的地位类图的地位l类图类图是面象对象系统建模中最常用的图。是面象对象系统建模中最常用的图。l类图类图是定义其它图的基础,在类图的基础上,是定义其它图的基础,在类图的基础上,可以使用状态图、协作图、组件图和配置图等可以使用状态图、协作图、组件图和配置图等进一步描述系统其它方面的特征。进一步描述系统其它方面的特征。l类图中的类类图中的类可以直接用某种面向对象编程语言可以直接用某种面向对象编程语言实现。实现。类图的地位类图是面象对象系统建模中最常用的图。36.1 类图的

3、概念类图的概念l描述类、接口及它们之间关系的图。描述类、接口及它们之间关系的图。l显示系统中各个类的静态结构。显示系统中各个类的静态结构。6.1 类图的概念描述类、接口及它们之间关系的图。46.1.1 概述概述l类图的元素:类图的元素:类(类(Class)接口(接口(Interface)依赖关系(依赖关系(Dependency)泛化关系(泛化关系(Generalization)关联关系(关联关系(Association)实现关系(实现关系(Realization)6.1.1 概述类图的元素:56.1.2 类类 l类类是构成类图的基础,也是面向对象系统组织结是构成类图的基础,也是面向对象系统组织

4、结构的核心。构的核心。l类类是对一组具有相同属性、操作、关系和语义的对象是对一组具有相同属性、操作、关系和语义的对象的抽象。的抽象。l类类包括包括名称部分(名称部分(Name)、属性部分(属性部分(Attribute)和和操作部分(操作部分(Operation)。lUML规范采用一个具有规范采用一个具有3个分栏的图标表示一个类。个分栏的图标表示一个类。名称分栏必须出现,而属性分栏和操作分栏可名称分栏必须出现,而属性分栏和操作分栏可以出现或不出现。以出现或不出现。当隐藏某个分栏时,并非表明某个分栏不存在。当隐藏某个分栏时,并非表明某个分栏不存在。6.1.2 类 类是构成类图的基础,也是面向对象系

5、统组织结6隐藏操作参数隐藏操作参数隐隐藏藏可可见见性性隐藏操作参数隐藏可见性7第6章类图和对象图-郭ppt课件86.1.2 类类l1 名称名称l2 属性属性l3 操作操作l4 职责职责l5 约束约束l6 注释注释6.1.2 类1 名称9(1)名称)名称 l应该来自系统的问题域。应该来自系统的问题域。l应该是一个名词。应该是一个名词。l分为简单名称和路径名称。分为简单名称和路径名称。(1)名称 应该来自系统的问题域。10(2)属性)属性l描述了类在软件系统中代表的事物(即对象)所具备描述了类在软件系统中代表的事物(即对象)所具备的特性。的特性。l类可以有任意数目的属性,也可以没有属性。类可以有任

6、意数目的属性,也可以没有属性。l在在UML中,类属性的语法为:中,类属性的语法为:(2)属性描述了类在软件系统中代表的事物(即对象)所具备的特111.可见性可见性l可见性描述了该属性对其它类是否可见,以可见性描述了该属性对其它类是否可见,以及是否可以被其它类引用。及是否可以被其它类引用。l类型:类型:公有(公有(Public)“”私有(私有(Private)“”受保护(受保护(Protected)“”注意:注意:UML未规定默认未规定默认的可见性,如果没的可见性,如果没有给出,表明该属有给出,表明该属性的可见性尚未定性的可见性尚未定义。义。1.可见性可见性描述了该属性对其它类是否可见,以及是否

7、可122.属性名属性名 l每个属性都必须有一个名字以区别于类中的其他每个属性都必须有一个名字以区别于类中的其他属性。属性。l属性名由描述所属类的特性的名词或名词短语组属性名由描述所属类的特性的名词或名词短语组成。成。l单字属性名小写,如果属性名包含了多个单词,单字属性名小写,如果属性名包含了多个单词,这些单词要合并,且除了第一个单词外其余单词这些单词要合并,且除了第一个单词外其余单词的首字母要大写。的首字母要大写。-建议建议2.属性名 每个属性都必须有一个名字以区别于类中的其他属133.类型类型 l简单类型:简单类型:整型整型布尔型布尔型实型实型枚举类型枚举类型l系统中的其他类系统中的其他类

8、3.类型 简单类型:144.初始值初始值 l目的目的:保护系统的完整性,防止漏掉取值或被非法保护系统的完整性,防止漏掉取值或被非法的值破坏系统的完整性。的值破坏系统的完整性。为用户提供易用性。为用户提供易用性。4.初始值 目的:155.属性字符串属性字符串 l属性字符串是用户对该属性性质的一个约束说明。属性字符串是用户对该属性性质的一个约束说明。l例如例如 只读只读这样的特性说明该属性的值不能被修改。这样的特性说明该属性的值不能被修改。l任何希望添加在属性定义字符串值但又没有合适地任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在属性字符串里。方可以加入的规则,都可以放在

9、属性字符串里。+status:Status=unpaidunpaid,paid +color:Color=redred,green,yellow确定取值范围确定取值范围5.属性字符串 属性字符串是用户对该属性性质的一个约束说16补充:补充:作用域作用域l作用域(作用域(scope)是与属性和操作相关的一是与属性和操作相关的一个重要概念。个重要概念。l存在两种作用域:存在两种作用域:1.实例(实例(instance)作用域)作用域下,类的每个实例下,类的每个实例对象都有自己的属性值和操作。对象都有自己的属性值和操作。2.分类符(分类符(classifier)作用域)作用域下,一个类的所下,一个类

10、的所有实例只存在一个属性值和操作。分类作用有实例只存在一个属性值和操作。分类作用域的属性和操作名字要带下划线。域的属性和操作名字要带下划线。补充:作用域作用域(scope)是与属性和操作相关的一个重要17类的作用域属性:类的作用域属性:l分类作用域的属性,它能被所属类的所有分类作用域的属性,它能被所属类的所有对象共享。对象共享。例如:例如:C+中中的静态的静态成员成员类的作用域属性:分类作用域的属性,它能被所属类的所有对象共18静态属性静态属性静态属性19属性声明的例子属性声明的例子Points属性的多重性属性的多重性为为2.*,表示该属性,表示该属性值有值有2个或者多个,个或者多个,同时这些

11、值之间是有同时这些值之间是有序的。序的。Name属性的多重性为属性的多重性为0.2,表示,表示该属性值有可能是该属性值有可能是1个或者个或者2个,也个,也可能值为可能值为null。属性声明的例子Points属性的多重性为2.*,表示该属性20(3)操作)操作l对类的对象所能做的事务的抽象。对类的对象所能做的事务的抽象。l一个类可以有任意数量的操作或者根本没有操一个类可以有任意数量的操作或者根本没有操作。作。l返回类型、名称和参数一起被称为操作签名。返回类型、名称和参数一起被称为操作签名。l在在UML中,类操作的语法为:中,类操作的语法为:(3)操作对类的对象所能做的事务的抽象。21操作操作l1

12、.可见性可见性l2.操作名操作名l3.参数表参数表l4.返回类型返回类型l5.特性字符串特性字符串操作1.可见性221.可见性可见性l类型:类型:公有(公有(Public)“”私有(私有(Private)“”受保护(受保护(Protected)“”包内公有(包内公有(Package)“”包内公有(包内公有(Package)“”包内公有用来描述操作的可访问性的包内公有用来描述操作的可访问性的可见性为包内公有的操作可以被其所在包的对象访问。可见性为包内公有的操作可以被其所在包的对象访问。1.可见性类型:包内公有(Package)“”232.操作名操作名 l用来描述所属类的行为的动词或动词短语。用来

13、描述所属类的行为的动词或动词短语。l单字操作名小写,如果操作名包含了多个单词,单字操作名小写,如果操作名包含了多个单词,这些单词要合并,并且除了第一个单词外其余这些单词要合并,并且除了第一个单词外其余单词的首字母要大写。单词的首字母要大写。2.操作名 用来描述所属类的行为的动词或动词短语。243.参数表参数表 l一些按顺序排列的属性定义了操作的输入。一些按顺序排列的属性定义了操作的输入。l是可选的,即操作不一定必须有参数才行。是可选的,即操作不一定必须有参数才行。l定义方式:定义方式:“名称:类型名称:类型”。l若存在多个参数,将各个参数用逗号隔开。若存在多个参数,将各个参数用逗号隔开。l参数

14、可以具有默认值。参数可以具有默认值。3.参数表 一些按顺序排列的属性定义了操作的输入。254.返回类型返回类型l是可选的,即操作不一定必须有返回类型。是可选的,即操作不一定必须有返回类型。l绝大部分编程语言只支持一个返回值。绝大部分编程语言只支持一个返回值。l具体的编程语言一般要加一个关键字具体的编程语言一般要加一个关键字void来表来表示无返回值。示无返回值。4.返回类型是可选的,即操作不一定必须有返回类型。265.特性字符串特性字符串 l在操作的定义中加入一些除了预定义元素之外在操作的定义中加入一些除了预定义元素之外的信息的信息。l例如:例如:query这样的特性说明该操作不会修改系统的这

15、样的特性说明该操作不会修改系统的状态。状态。update这样的特性说明该操作会修改系统的这样的特性说明该操作会修改系统的状态。状态。5.特性字符串 在操作的定义中加入一些除了预定义元素之外27(4)职责)职责(responsibility)l类图标中还可以制定另一类图标中还可以制定另一种类的信息。在操作列表种类的信息。在操作列表框下面的区域,可以用来框下面的区域,可以用来说明类的职责。说明类的职责。l职责描述了职责描述了 类做什么类做什么类的属性和操作能完成什类的属性和操作能完成什么任务。么任务。l例如,一个洗衣机的职责例如,一个洗衣机的职责是将脏衣服作为输入,输是将脏衣服作为输入,输出洗干净

16、的衣服。出洗干净的衣服。职责职责(4)职责(responsibility)类图标中还可以制28(5)约束)约束l指定了类所要满足的一个或多个规则。指定了类所要满足的一个或多个规则。l形式化的方法。形式化的方法。(5)约束指定了类所要满足的一个或多个规则。29(6)注释)注释l注释可以包含图形也可以包含文本。注释可以包含图形也可以包含文本。(6)注释注释可以包含图形也可以包含文本。306.1.3 接口和抽象类接口和抽象类-抽象类抽象类l 抽象操作:抽象操作:是指在指定该操作的类中并没有该操作的是指在指定该操作的类中并没有该操作的实现方法,而只是显示了操作签名的那种操作实现方法,而只是显示了操作签

17、名的那种操作。(例。(例如,如,C+中的纯虚函数)中的纯虚函数)l抽象类抽象类:至少拥有一个抽象操作的类:至少拥有一个抽象操作的类。l在在UML图中,抽象操作的显示是在操作签名后面用特图中,抽象操作的显示是在操作签名后面用特性字符串性字符串abstract,或者将操作签名用斜体字体方,或者将操作签名用斜体字体方式显示。式显示。l在在UML图中,抽象类的显示是在类名后面用特性字符图中,抽象类的显示是在类名后面用特性字符串串abstract,或者将类名用斜体字体方式显示。,或者将类名用斜体字体方式显示。6.1.3 接口和抽象类-抽象类 抽象操作:是指在指定311.如果一个类继如果一个类继承了抽象类

18、,承了抽象类,该类要么必须该类要么必须实现所有的抽实现所有的抽象操作称为具象操作称为具体类,要么该体类,要么该类也称为另一类也称为另一个抽象类。个抽象类。2.抽象类是不能抽象类是不能产生实例的。产生实例的。如果一个类继承了抽象类,该类要么必须实现所有的抽象操作称为具32抽象类名抽象类名用斜体用斜体抽象类名用斜体33l接口是一组没有相应方法实现的描述。接口是一组没有相应方法实现的描述。l接口通常被描述抽象操作,即之用操作名、参数接口通常被描述抽象操作,即之用操作名、参数表和返回类型说明接口行为,而操作的实现部分表和返回类型说明接口行为,而操作的实现部分将出现在实现该接口的元素中。将出现在实现该接

19、口的元素中。l使用接口可以很好地将类所需要的行为与该行为使用接口可以很好地将类所需要的行为与该行为如何被实现完全分开。如何被实现完全分开。l在进行系统建模时,接口起来十分重要的作用,在进行系统建模时,接口起来十分重要的作用,因为模型元素之间的协作是通过接口进行的。因为模型元素之间的协作是通过接口进行的。6.1.3 接口和抽象类接口和抽象类-接口接口(interface)接口是一组没有相应方法实现的描述。6.1.3 接口和抽象34 6.1.3 接口和抽象类接口和抽象类-接口接口(interface)luml中接口通常只包含操作不包含属性。中接口通常只包含操作不包含属性。l接口不能实例化为对象。接

20、口不能实例化为对象。l一个类可以实现一个或多个接口。一个类可以实现一个或多个接口。l如果类实现了接口,但未实现该接口中的所有操如果类实现了接口,但未实现该接口中的所有操作,那么此类必须声明为抽象的。作,那么此类必须声明为抽象的。与与java中接口中接口的概念稍有不的概念稍有不同。同。6.1.3 接口和抽象类-接口(interface35接口与抽象类的区别接口与抽象类的区别l一般接口不含有属性,抽象类可以含有属性。一般接口不含有属性,抽象类可以含有属性。l接口中声明的方法都没有实现部分,而抽象类中接口中声明的方法都没有实现部分,而抽象类中的某些方法可以有具体实现。的某些方法可以有具体实现。l使用

21、接口比使用抽象类安全,可以避免许多因为使用接口比使用抽象类安全,可以避免许多因为多继承产生的问题。多继承产生的问题。接口与抽象类的区别一般接口不含有属性,抽象类可以含有属性。366.1.4 类之间的关系类之间的关系 1.关联(关联(association)2.聚合(聚合(aggregation)和组合()和组合(composition)3.泛化泛化(generalization)4.实现(实现(realization)5.依赖依赖(dependenc)6.1.4 类之间的关系 关联(association)371.关联关系关联关系当类之间在概念上有连接关系时,这种关系叫做当类之间在概念上有连接

22、关系时,这种关系叫做关联关联(association)。l名称(名称(Name)l角色(角色(Role)l多重性(多重性(Multiplicity)l限定关联限定关联l自反关联自反关联l关联上的约束关联上的约束l派生关联派生关联l关联类关联类l导航性(导航性(Navigation)l聚合关系(聚合关系(Aggregation)l组合关系(组合关系(Composition1.关联关系当类之间在概念上有连接关系时,这种关系叫做关联38(1)名称名称l关联名来描述关联的作用,清晰而简洁地说明对象关联名来描述关联的作用,清晰而简洁地说明对象间关系。使用一个动词或动词短语来命名关联。间关系。使用一个动词

23、或动词短语来命名关联。l关联的名称并不是必需的。关联的名称并不是必需的。l可以前缀或后缀一个指引阅读方向的可以前缀或后缀一个指引阅读方向的方向指示符方向指示符,以消除歧义。以消除歧义。(1)名称关联名来描述关联的作用,清晰而简洁地说明对象间39 一个关联一个关联队员和球队之间的关联。可以用一个队员和球队之间的关联。可以用一个短语短语“队员为篮球队效力队员为篮球队效力(plays on)”来刻划这个来刻划这个关联。关联。一个关联队员和球队之间的关联。可以用一个短语“队员为篮40关联的导航型关联的导航型l单向关联单向关联:关联是单向的,从一个类的对象:关联是单向的,从一个类的对象可以找到另一个,反

24、过来却不可。可以找到另一个,反过来却不可。l双向关联双向关联:关联是双向的,如果一个对象和:关联是双向的,如果一个对象和另一个对象关联,那么这两个对象都互相知道另一个对象关联,那么这两个对象都互相知道对方。对方。关联的导航型单向关联:关联是单向的,从一个类的对象可以找到另41(2)角色角色 当一个类和另一个类发生关联时,每个类通常当一个类和另一个类发生关联时,每个类通常在关联中部扮演着某种角色。一个类对另一个在关联中部扮演着某种角色。一个类对另一个类所表现出来的职责。类所表现出来的职责。在队员和球队的关联中,如果球队是职业篮球在队员和球队的关联中,如果球队是职业篮球队,那么它就是队员的雇主队,

25、那么它就是队员的雇主(Employer),队员,队员就是球队的雇员就是球队的雇员(Employee)。(2)角色 当一个类和另一个类发生关联时,每个类通常在关42l角色名不是类的组成部分,一个类可以在不同角色名不是类的组成部分,一个类可以在不同的关联中扮演不同的角色。的关联中扮演不同的角色。l由于角色名称和关联名称都被用来描述关系的由于角色名称和关联名称都被用来描述关系的目的,所以角色名称可以代替关联名称,或者目的,所以角色名称可以代替关联名称,或者两者同时使用。两者同时使用。l与关联名称不同,角色名可以生成代码。(使与关联名称不同,角色名可以生成代码。(使用用Rose工具可以直接生成代码)工

26、具可以直接生成代码)l角色本身也具有可见性。(角色本身也具有可见性。(UML2.0 不在提倡不在提倡使用角色本身的可见性)使用角色本身的可见性)角色名不是类的组成部分,一个类可以在不同的关联中扮演不同的角43private class Person private String personName;protected Company employer;/*/public Person()public class Company private String companyName;public Person employee;/*/public Company()private class

27、Person public cl44private class Password /*/public Password()public class Id public Password thePassword;/*/public Id()单向关联单向关联private class Password public 45(3)多重性多重性l关联的多重性指某个类有多少个对象可以和另一关联的多重性指某个类有多少个对象可以和另一个类的单个对象关联。个类的单个对象关联。l表示多重性的方法是在参与关联的类附近的关联表示多重性的方法是在参与关联的类附近的关联线上注名多重性数值。可以表达一个取值范围、线上注名多

28、重性数值。可以表达一个取值范围、特定值、无限定的范围或一组离散值。特定值、无限定的范围或一组离散值。l格式:格式:“minimum.maximum”(均为(均为Int型)。型)。(3)多重性关联的多重性指某个类有多少个对象可以和另一个46(3)多重性多重性nUML使用星号使用星号(*)来代表许多来代表许多(more)和多个和多个(many)。n在一种语境中,两点代表在一种语境中,两点代表or(或或)关系,例如关系,例如“1.*”代表一个或者多个代表一个或者多个n在另一种语境中,在另一种语境中,or关系用逗号来表示,例如关系用逗号来表示,例如“5,10”代表代表5或者或者10。(3)多重性UML

29、使用星号(*)来代表许多(more)和47第6章类图和对象图-郭ppt课件48l如果没有明确标识多重性,就意味着如果没有明确标识多重性,就意味着1。思考思考:多重性:多重性 3,6.9 表示什么?表示什么?如果没有明确标识多重性,就意味着1。思考:多重性 3,649(4)限定关联()限定关联(qualified association)l带有限定符的关联称为带有限定符的关联称为限定关联限定关联(受限关联受限关联)。l限定关联用于限定关联用于一对多或多对多关一对多或多对多关联联这种情况。这种情况。l限定符的作用就是给定关联一端限定符的作用就是给定关联一端的一个对象和限定符以后,可确的一个对象和限

30、定符以后,可确定另一端的一个对象和对象集。定另一端的一个对象和对象集。(4)限定关联(qualified association50l一个一个customer可以在可以在bank中有多个中有多个account,但给定,但给定了一个了一个account值后,就可值后,就可以对应一个以对应一个customer,或,或者没有。因为多重性为者没有。因为多重性为0.1。l这里的多重性表示的是这里的多重性表示的是customer和(和(bank,account)之间的关系。)之间的关系。(bank,account)0,1 customerCustomer-多个(多个(bank,account)一个cust

31、omer可以在bank中有多个account,但51l限定符指定了如何标识一对多关联或多对多关联中限定符指定了如何标识一对多关联或多对多关联中的的多端对象集中的一个特定对象多端对象集中的一个特定对象,并且可以将其看,并且可以将其看做是区分这种关联中所有对象的一种做是区分这种关联中所有对象的一种关键字关键字。l限定关联把模型从一对多关联简化为一对一关联。限定关联把模型从一对多关联简化为一对一关联。l限定符是关联线的一个附加信息,而不是类的。限定符是关联线的一个附加信息,而不是类的。限定符指定了如何标识一对多关联或多对多关联中的多端对象集中的52限定符限定符针对于学生端的针对于学生端的针对于关联针

32、对于关联限定符针对于学生端的针对于关联53l限定符这个概念在设计软件时非常有用,如果一限定符这个概念在设计软件时非常有用,如果一个应用系统需要根据关键字对一个数据集做查询个应用系统需要根据关键字对一个数据集做查询操作,则经常会用到限定关联。操作,则经常会用到限定关联。l引入限定符的一个目的就是把多重性从引入限定符的一个目的就是把多重性从n降到降到1或或0.1,这样如果做查询操作,则返回的对象至多是,这样如果做查询操作,则返回的对象至多是一个,而不会是一个对象集。如果查询操作的结一个,而不会是一个对象集。如果查询操作的结果是单个对象,则这个查询操作的效率会较高。果是单个对象,则这个查询操作的效率

33、会较高。l所以在使用限定符时,如果限定符另一端的多重所以在使用限定符时,如果限定符另一端的多重性仍为性仍为n,则引入这个限定符的作用就不是很大。,则引入这个限定符的作用就不是很大。因为查询结果任然还是结果集,所以也可以根据因为查询结果任然还是结果集,所以也可以根据多重性来判断一个限定符的设计是否合理。多重性来判断一个限定符的设计是否合理。限定符这个概念在设计软件时非常有用,如果一个应用系统需要根据54(5)自反关联)自反关联l一个类可能与它自己发生关一个类可能与它自己发生关联,这样的关联被称为自身联,这样的关联被称为自身关联。关联。l当一个类的对象可以充当多当一个类的对象可以充当多种角色时,自

34、身关联就可能种角色时,自身关联就可能发生。发生。lCarOccupant(车上的人车上的人)既可能是一个司机既可能是一个司机(driver)也可能是一个乘客也可能是一个乘客(passenger)。(5)自反关联一个类可能与它自己发生关联,这样的关联被称为自55第6章类图和对象图-郭ppt课件56(6)关联上的约束)关联上的约束l两个类之间的一个关联有一个规则约束。两个类之间的一个关联有一个规则约束。有序关联有序关联或关联或关联(6)关联上的约束两个类之间的一个关联有一个规则约束。有序关57第6章类图和对象图-郭ppt课件58(7)派生属性和派生关联派生属性和派生关联l派生属性(派生属性(der

35、ived attribute)和派生关联)和派生关联(derived association)是指可以从其他属性和)是指可以从其他属性和关联计算推演得到的属性和关联。关联计算推演得到的属性和关联。l派生属性和派生关联的名字前需要加一个斜杠派生属性和派生关联的名字前需要加一个斜杠“/”。l在生成代码时,派生属性和派生关联都不产生相在生成代码时,派生属性和派生关联都不产生相应的代码。应的代码。(7)派生属性和派生关联派生属性(derived attri59第6章类图和对象图-郭ppt课件60(8)关联类)关联类l和类一样,关联也可以有自己的属性和操作。此和类一样,关联也可以有自己的属性和操作。此时

36、,这个关联实际上是个关联类。时,这个关联实际上是个关联类。l关联类的可视化表示方式与一般的类相同,但是关联类的可视化表示方式与一般的类相同,但是要用一条虚线把关联类和对应的关联线连接起来,要用一条虚线把关联类和对应的关联线连接起来,来标识关联的一些附加信息。来标识关联的一些附加信息。l关联类也可以与其他类关联。关联类也可以与其他类关联。(8)关联类和类一样,关联也可以有自己的属性和操作。此时,这61第6章类图和对象图-郭ppt课件62关联类关联类关联类63private class Person private String personName;protected Company emplo

37、yer;/public class Company private String companyName;public Person employee;/private class Contract private Double salary;/*/public Contract()多重性多重性private class Person private c64 下图是下图是player类和类和Team类之间的类之间的Plays on关关联对应的关联类:联对应的关联类:Contract(契约契约)关联类。关联类。它又同时和它又同时和GeneralManager(总经理总经理)类发类发生关联。生关联

38、。关联类也可以关联类也可以与其他类关联与其他类关联 下图是player类和Team类之间的Plays on关联652.聚合关系聚合关系 l一种特殊类型的关联。一种特殊类型的关联。l表示整体与部分关系表示整体与部分关系的关联。的关联。l描述了描述了“由由构成构成”、“包含包含”、“是是的的一部分一部分”的关系。的关系。2.聚合关系 一种特殊类型的关联。66共享聚合共享聚合l如果聚合关系中的处于部分方的对象同时参与了多个如果聚合关系中的处于部分方的对象同时参与了多个处于整体方对象的构成,则该聚合称为共享聚合。处于整体方对象的构成,则该聚合称为共享聚合。l例如:一个球队(整体方)由多个球员(部分方)

39、组例如:一个球队(整体方)由多个球员(部分方)组成,但是一个球员还可能参加多个球队,球队和球员成,但是一个球员还可能参加多个球队,球队和球员的这种关系就是共享聚合。的这种关系就是共享聚合。l共享聚合关系可以通过聚合的多重性反应出来。如果共享聚合关系可以通过聚合的多重性反应出来。如果作为整体方的类的多重性不是作为整体方的类的多重性不是1,该聚合就是共享聚合。,该聚合就是共享聚合。共享聚合如果聚合关系中的处于部分方的对象同时参与了多个处于整67可以在可以在聚合关系聚合关系 上建立约束上建立约束可以在聚合关系 上建立约束682.组合关系组合关系l聚合关系中的一种特殊情况,是更强形式的聚合关系中的一种

40、特殊情况,是更强形式的聚合,又称强聚合。聚合,又称强聚合。l成员对象的生命周期取决于聚合的生命周期。成员对象的生命周期取决于聚合的生命周期。l部分类完全隶属于整体类。部分类完全隶属于整体类。l聚合不仅控制着成员对象的行为,而且控制聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和解构。着成员对象的创建和解构。2.组合关系聚合关系中的一种特殊情况,是更强形式的聚合,69第6章类图和对象图-郭ppt课件70聚合和组合的两端也可以添加角色和多重性。聚合和组合的两端也可以添加角色和多重性。组合的实现方组合的实现方式一般是将部式一般是将部分类中的对象分类中的对象作为整体类的作为整体类的成员对象,将

41、成员对象,将部分类封装在部分类封装在整体类中。整体类中。聚合和组合的两端也可以添加角色和多重性。组合的实现方式一般是71聚合和组合的区别聚合和组合的区别l聚合关系表示事物的整体聚合关系表示事物的整体/部分关系的较弱的情况,组合部分关系的较弱的情况,组合关系表示事物的整体关系表示事物的整体/部分关系的较强的情况。部分关系的较强的情况。l在聚集关系中,代表部分事物的对象可以属于多个聚集在聚集关系中,代表部分事物的对象可以属于多个聚集对象,可以为多个聚集对象所共享,而且可以随时改变对象,可以为多个聚集对象所共享,而且可以随时改变它所从属的聚集对象。代表部分事物的对象与代表聚集它所从属的聚集对象。代表

42、部分事物的对象与代表聚集事物的对象的生存期无关,一旦删除了聚集对象,不一事物的对象的生存期无关,一旦删除了聚集对象,不一定也随即删除代表部分事物的对象。定也随即删除代表部分事物的对象。l在组合关系中,代表整体事物的对象负责创建和删除代在组合关系中,代表整体事物的对象负责创建和删除代表部分事物的对象,代表部分事物的对象只属于一个组表部分事物的对象,代表部分事物的对象只属于一个组合对象。一旦删除了组合对象,也就随即删除了相应的合对象。一旦删除了组合对象,也就随即删除了相应的代表部分事物的对象。代表部分事物的对象。聚合和组合的区别聚合关系表示事物的整体/部分关系的较弱的情况723.泛化关系泛化关系l

43、存在于存在于一般元素和特殊元素一般元素和特殊元素间的分类关系。间的分类关系。l可以用于类、用例以及其他模型元素。可以用于类、用例以及其他模型元素。l描述了一种描述了一种“is a kind of”的关系。的关系。3.泛化关系存在于一般元素和特殊元素间的分类关系。73l类的泛化关系可以是多层的。类的泛化关系可以是多层的。类的泛化关系可以是多层的。74ROSE中,中,只有父类只有父类的共有的共有(public)和保护和保护(protect)成员会被成员会被子类继承。子类继承。ROSE中,只有父类的共有(public)和保护(prote75泛化的好处泛化的好处l把一般的公共信息放在一般元素中,处理某

44、个具体特把一般的公共信息放在一般元素中,处理某个具体特殊情况时只需定义该情况的个别信息,公共信息从一殊情况时只需定义该情况的个别信息,公共信息从一般元素中继承得到,增强了系统的灵活性、易维护性般元素中继承得到,增强了系统的灵活性、易维护性和可扩充性。(继承性)和可扩充性。(继承性)l程序员只要定义新扩充或更改的信息就可以了,旧的程序员只要定义新扩充或更改的信息就可以了,旧的信息完全不必修改(仍可以继续使用),大大缩短了信息完全不必修改(仍可以继续使用),大大缩短了维护系统的时间。维护系统的时间。l可实现多态。一般元素出现的地方都可以用特殊元素可实现多态。一般元素出现的地方都可以用特殊元素来代替

45、。(子类代替父类)来代替。(子类代替父类)l多态技术利用抽象类定义操作,而用子类实现该操作多态技术利用抽象类定义操作,而用子类实现该操作的方法,达到单一接口,多种功能的目的。的方法,达到单一接口,多种功能的目的。泛化的好处把一般的公共信息放在一般元素中,处理某个具体特殊情76l人人“驾驶驾驶”交通工具这个交通工具这个关联关系。当人执行(调关联关系。当人执行(调用)用)drive()操作时,如操作时,如果当时可用的对象是汽车,果当时可用的对象是汽车,那么汽车轮子将被转动;那么汽车轮子将被转动;如果当时可用的对象是船,如果当时可用的对象是船,那么螺旋桨就会动起来,那么螺旋桨就会动起来,这种就是在运

46、行时可能执这种就是在运行时可能执行的多种情况,称为行的多种情况,称为“多多态态”。lC+中,多态利用虚函数中,多态利用虚函数或纯虚函数实现。(使用或纯虚函数实现。(使用指向基类的指针进行函数指向基类的指针进行函数调用)调用)人“驾驶”交通工具这个关联关系。当人执行(调用)drive(77l替换原则:父类出现的任何地方都可以用子类代替。替换原则:父类出现的任何地方都可以用子类代替。替换原则:父类出现的任何地方都可以用子类代替。78泛化关系上的约束泛化关系上的约束-受限泛化受限泛化UML预定义的泛化约束有:多重,不相交,完全,不完全预定义的泛化约束有:多重,不相交,完全,不完全受限泛化的表示形式:

47、受限泛化的表示形式:泛化关系上的约束-受限泛化UML预定义的泛化约束有:多重79l1.多重继承多重继承:子类的子类可以同时继承多个上一级子类。:子类的子类可以同时继承多个上一级子类。l例如:水陆两用继承了交通工具两次。例如:水陆两用继承了交通工具两次。l2.不相交继承:不相交继承:与多重继承对立,一个子类不能同时继承多个上一级与多重继承对立,一个子类不能同时继承多个上一级子类。如果不做特别声明,一般的继承都是不相交继承(默认的继承子类。如果不做特别声明,一般的继承都是不相交继承(默认的继承标准)。上例如果没有多重约束,则不允许水陆两用类多重继承,只标准)。上例如果没有多重约束,则不允许水陆两用

48、类多重继承,只允许继承其中之一。允许继承其中之一。分辨器:把一般类和具体类划分分辨器:把一般类和具体类划分开的依据。开的依据。1.多重继承:子类的子类可以同时继承多个上一级子类。分辨器:80l3.完全继承完全继承指父类的所有子类都被穷举完毕,不可能再指父类的所有子类都被穷举完毕,不可能再有其它的未列出的子类存在。有其它的未列出的子类存在。l4.非完全继承非完全继承与完全继承相反,父类的子类并不是都列与完全继承相反,父类的子类并不是都列出来了,而是随着问题的不断解决,不断的补充和完善,出来了,而是随着问题的不断解决,不断的补充和完善,也正是这一点为日后系统的扩充和维护带来极大的方便。也正是这一点

49、为日后系统的扩充和维护带来极大的方便。(是默认的继承标准)。(是默认的继承标准)。3.完全继承指父类的所有子类都被穷举完毕,不可能再有其它的未814.实现关系实现关系l一个元素完成另一个元素的操作功能。(实现是规一个元素完成另一个元素的操作功能。(实现是规格说明和其实现之间的关系。)格说明和其实现之间的关系。)l如接口类及其实现:接口没有属性,只有声明的操如接口类及其实现:接口没有属性,只有声明的操作方法(对方法没有实现部分),而由其实现类具作方法(对方法没有实现部分),而由其实现类具体定义实现部分。体定义实现部分。l如用例以及实现该用例的协作之间也是实现关系。如用例以及实现该用例的协作之间也

50、是实现关系。4.实现关系一个元素完成另一个元素的操作功能。(实现是规格说82泛化关系和实现关系的异同点泛化关系和实现关系的异同点l泛化和实现关系都可以将一般描述与具体描述联泛化和实现关系都可以将一般描述与具体描述联系起来。系起来。l泛化将同一语义层上的元素连接起来,并且通常泛化将同一语义层上的元素连接起来,并且通常在同一个模型内。在同一个模型内。l实现关系则将不同语义层内的元素连接起来,通实现关系则将不同语义层内的元素连接起来,通常建立在不同模型内。在不同发展阶段可能有两常建立在不同模型内。在不同发展阶段可能有两个或多个类等级存在,这些类等级的元素通过实个或多个类等级存在,这些类等级的元素通过

51、实现关系联系在一起。现关系联系在一起。泛化关系和实现关系的异同点泛化和实现关系都可以将一般描述与具835.依赖关系依赖关系l关联、实现和泛化都是依赖关系。但它们有更特别的语义,关联、实现和泛化都是依赖关系。但它们有更特别的语义,所以在所以在UML中被分离出来作为独立的关系。中被分离出来作为独立的关系。5.依赖关系关联、实现和泛化都是依赖关系。但它们有更特别的语84基本的依赖关系基本的依赖关系在依赖关系上可以用在依赖关系上可以用构造型构造型来更具体化依赖的种类。来更具体化依赖的种类。l1.使用依赖(使用依赖(Usage)l2.抽象依赖(抽象依赖(Abstraction)l3.授权依赖(授权依赖(

52、Permission)l4.绑定依赖(绑定依赖(Binding)基本的依赖关系在依赖关系上可以用构造型来更具体化依赖的种类。851.使用依赖使用依赖-最常使用的依赖最常使用的依赖l表示一种元素表示一种元素(客户客户)使用其它元素使用其它元素(提供者提供者)提供的服务以实现它的行为,包括:提供的服务以实现它的行为,包括:使用(使用(use)调用(调用(call)参数(参数(parameter)发送(发送(send)实例化(实例化(instantiate)1.使用依赖-最常使用的依赖表示一种元素(客户)86使用使用use:声明使用一个模型元素需要用声明使用一个模型元素需要用到已存在的另一个模型元素

53、,这样才能实现到已存在的另一个模型元素,这样才能实现使用者的功能(包括调用、实例化、参数、使用者的功能(包括调用、实例化、参数、发送)。发送)。调用调用call:声明一个类调用其他类的操声明一个类调用其他类的操作的方法。作的方法。参数参数parameter:声明一个操作和它的声明一个操作和它的参数之间的关系。参数之间的关系。发送发送send:声明信号发送者和信号接声明信号发送者和信号接受者之间的关系。(受者之间的关系。(例如遥控器和电视机例如遥控器和电视机)实例化实例化instantiate:声明一个类的方法声明一个类的方法创建了另一个类的实例。创建了另一个类的实例。使用use:声明使用一个模

54、型元素需要用到已存在的另一个模87注意:注意:与关联关系不一样的是,依赖关系本身不生成与关联关系不一样的是,依赖关系本身不生成专门的实现代码。专门的实现代码。注意:882.抽象依赖抽象依赖l表示客户与提供者之间的关系,依赖于在不表示客户与提供者之间的关系,依赖于在不同抽象层次上的事物,包括:同抽象层次上的事物,包括:跟踪(跟踪(trace)精化(精化(refine)派生(派生(derive)2.抽象依赖表示客户与提供者之间的关系,依赖于在不同抽象89跟踪跟踪trace:表示两个元素代表的是不同模型中的同:表示两个元素代表的是不同模型中的同一个概念。通常这些模型分属于开发过程中不同阶段。一个概念

55、。通常这些模型分属于开发过程中不同阶段。精化精化refine:表示位于不同的开发阶段或处于不同的:表示位于不同的开发阶段或处于不同的抽象层次中的一个概念的两种形式之间的映射关系。并不抽象层次中的一个概念的两种形式之间的映射关系。并不意味这两种形式会在最后的模型中共存,它们中一个通常意味这两种形式会在最后的模型中共存,它们中一个通常是另一个的未完善形式。是另一个的未完善形式。设计类将设计类将refine在分析过程在分析过程中描述的类。中描述的类。派生派生derive:声明一个实例可以从另一个实例导出。声明一个实例可以从另一个实例导出。可以根据提供方的信息计算出客户方。可以根据提供方的信息计算出客

56、户方。跟踪trace:表示两个元素代表的是不同模型中的同一个概903.授权依赖授权依赖 l表达一个事物访问另一个事物的能力,被依表达一个事物访问另一个事物的能力,被依赖元素通过规定依赖元素的权限,可以控制赖元素通过规定依赖元素的权限,可以控制和限制对其进行访问的方法。包括:和限制对其进行访问的方法。包括:访问(访问(access)导入(导入(import)友元(友元(friend)3.授权依赖 表达一个事物访问另一个事物的能力,被依赖元91访问访问access:允许一个包访问另一个包:允许一个包访问另一个包的内容。(的内容。(必须使用路径名称访问必须使用路径名称访问)导入导入import:允许

57、一个包访问另一个包:允许一个包访问另一个包的内容,并为被访问的包的组成部分增加别的内容,并为被访问的包的组成部分增加别名。名。友元友元friend:允许一个元素访问另一个:允许一个元素访问另一个元素,不管被访问的元素是否具有可见性。元素,不管被访问的元素是否具有可见性。访问access:允许一个包访问另一个包的内容。(必须使92第6章类图和对象图-郭ppt课件934.绑定依赖绑定依赖l较高级的依赖类型,用于绑定模板以创建新的较高级的依赖类型,用于绑定模板以创建新的模型元素,包括:模型元素,包括:l绑定(绑定(bind)例如:例如:C+中的函数模板、类模板中的函数模板、类模板 与具体函数与具体函

58、数和具体类之间的关系。和具体类之间的关系。4.绑定依赖较高级的依赖类型,用于绑定模板以创建新的模型94类模板(带参数的类类模板(带参数的类parameterized class)lUML中,类矩形框右上角挂着一个小的虚线框,中,类矩形框右上角挂着一个小的虚线框,框中是为了生成具体类所需要指值的参数列表。框中是为了生成具体类所需要指值的参数列表。当为这些参数指定值时,就说这些参数被绑定到当为这些参数指定值时,就说这些参数被绑定到这些值上。这些值上。l右上角虚线框中的右上角虚线框中的“T”是一个分类,它说明这个是一个分类,它说明这个类是创建其他类的模板。类是创建其他类的模板。类模板(带参数的类pa

59、rameterized class)U95C+提供模板机制,提供模板机制,java中没有与此等价的语法结构中没有与此等价的语法结构类模板类模板C+代码代码#include using namespace std;template /声明一个模板,虚拟类型名为声明一个模板,虚拟类型名为Tclass Compare /类模板名为类模板名为Comparepublic:Compare(T a,T b)/构造函数构造函数 x=a;y=b;T max()return(xy)?x:y;T min()return(xy)?x:y;private:T x,y;C+提供模板机制,java中没有与此等价的语法结构类

60、模96int main()Compare cmp1(3,7);/定义对象定义对象cmp1,用于两个整数的比较,用于两个整数的比较coutcmp1.max()“is the Maximum of two integer numbers.”endl;coutcmp1.min()“is the Minimum of two integer numbers.”endlendl;Compare cmp2(45.78,93.6);/定义对象定义对象cmp2,用于两个浮点数的,用于两个浮点数的比较比较coutcmp2.max()“is the Maximum of two float numbers.”en

61、dl;coutcmp2.min()“is the Minimum of two float numbers.”endlendl;Compare cmp3(a,A);/定义对象定义对象cmp3,用于两个字符的比较,用于两个字符的比较coutcmp3.max()“is the Maximum of two characters.”endl;coutcmp3.min()“is the Minimum of two characters.”endl;return 0;运行结果运行结果7 is the Maximum of two integers.3 is the Minimum of two int

62、egers.93.6 is the Maximum of two float numbers.45.78 is the Minimum of two float numbers.a is the Maximum of two characters.A is the Minimum of two characters.int main()运行结果97两种表示参数化类的方法两种表示参数化类的方法l1.显式绑定(显式绑定(explicit binding):):明确显示出明确显示出生成的类和参数化类之间的依赖关系,并提供生成的类和参数化类之间的依赖关系,并提供生成类的名字。生成类的名字。两种表示参数

63、化类的方法98l2.隐式绑定(隐式绑定(implicit binding):):不显示出不显示出依赖关系,绑定参数出现在产生的类名后面,依赖关系,绑定参数出现在产生的类名后面,并用尖括号括起来。并用尖括号括起来。2.隐式绑定(implicit binding):不显示出99第6章类图和对象图-郭ppt课件100第6章类图和对象图-郭ppt课件1016.2 类图的绘制类图的绘制6.2 类图的绘制102类图的抽象层次类图的抽象层次l在软件开发的不同阶段,使用的类图具有不同的在软件开发的不同阶段,使用的类图具有不同的抽象层次。抽象层次。类图的类图的3个个层次之间没层次之间没有一个很清有一个很清晰的界

64、限,晰的界限,类图从概念类图从概念层到实现层层到实现层的过度是一的过度是一个渐进的过个渐进的过程。程。类图的抽象层次在软件开发的不同阶段,使用的类图具有不同的抽象103第6章类图和对象图-郭ppt课件104第6章类图和对象图-郭ppt课件1056.3 对象图对象图6.3 对象图106对象和类的关系对象和类的关系对象和类的关系107第6章类图和对象图-郭ppt课件108链链l对象是类的实例,链是类图中关联的实例。对象是类的实例,链是类图中关联的实例。l链连接的是对象,可以有链名,和对象名一样都要加链连接的是对象,可以有链名,和对象名一样都要加下划线。下划线。注意:注意:链可以有名称、链可以有名称

65、、角色、但没有多角色、但没有多重性,所有的链重性,所有的链都是一对一的关都是一对一的关系。系。链对象是类的实例,链是类图中关联的实例。注意:109对象图对象图l对象是类的实例,对象图也可看作是类图的实例。对象是类的实例,对象图也可看作是类图的实例。l对象图描述了参与交互的各个对象在交互过程中对象图描述了参与交互的各个对象在交互过程中某一时刻的状态。可以认为对象图是类图在某一某一时刻的状态。可以认为对象图是类图在某一时刻的实例。时刻的实例。类对象:只有两栏对象图对象是类的实例,对象图也可看作是类图的实例。类对象:只110类图和对象图类图和对象图类图和对象图111第6章类图和对象图-郭ppt课件1

66、12类图和对象图的区别类图和对象图的区别 类图类图 对象图对象图 类具有三个分栏:名称、属性和操作类具有三个分栏:名称、属性和操作对象只有两个分栏:名称和属性对象只有两个分栏:名称和属性在类的名称分栏中只有类名在类的名称分栏中只有类名对象的名称形式为对象的名称形式为“对象名:类名对象名:类名”,匿名对象的名称形式为,匿名对象的名称形式为“:类名:类名”类中列出了操作类中列出了操作对象图中不包含操作,因为对于属于对象图中不包含操作,因为对于属于同一个类的对象而言,其操作是相同同一个类的对象而言,其操作是相同的的类使用关联连接,关联使用名称、角类使用关联连接,关联使用名称、角色、多重性以及约束等特征定义。类色、多重性以及约束等特征定义。类代表的是对对象的分类,所以必须说代表的是对对象的分类,所以必须说明可以参与关联的对象的数目明可以参与关联的对象的数目对象使用链连接,链拥有名称、角色,对象使用链连接,链拥有名称、角色,但是没有多重性。对象代表的是单独但是没有多重性。对象代表的是单独的实体,所有的链都是一对一的,因的实体,所有的链都是一对一的,因此不涉及到多重性此不涉及到多重性类的属性分栏定

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!