UML建模技术第5章
UML面向对象分析、建模与设计课件第五章 类图
类——操作
操作是一个可以由类的对象请求以影响其行为的服务的实现,也即 是对一个对象所做的事情的抽象,并且由这个类的所有对象共享。
操作是类的行为特征或动态特征。 操作的语法格式为:
可见性OPT 操作名 ⌊(参数列表)⌋OPT ⌊:返回类型⌋OPT ⌊{特性}⌋OPT
操作名:操作的标识符。在描述操作时,操作名是必须的,其他部 分可选。
Student
+monitor 1
1..*
自关联
类图中的关系——关联关系
关联名称:放在关联路径的旁边,但远离关联端。 角色:放在靠近关联端的部分,表示该关联端连接的类在这一关联
关系中担任的角色。角色名上也可使用可见性修饰符号。 多重性:放在靠近关联端的部分,表示在关联关系中源端的一个对
象可以与目标类的多少个对象之间有关联。 导航性:一个布尔值,用来说明运行时刻是否可能穿越一个关联。 限定符:是二元关联上的属性组成的列表的插槽,其中的属性值用
/WorksForCompany
Department * +department 1 WorksForDepartment
* Person
类图中的关系——泛化关系
泛化关系定义为一个较普通的元素与一个较特殊的元素之间的类元 关系。其中描述一般的元素称为父,描述特殊的元素称为子。
通过泛化对应的继承机制使子类共享父类的属性和操作,小了模型 的规模,同时也防止了模型的更新所导致的定义不一致的意外。
法了,此时称之为N元关联。
类图中的关系——关联关系
class Logical View
ClassA
AssociationName
+rolename 0..*
软件体系结构课件第5章统一建模语言
2:GetPrefSet()
10:PrefSet(date_mg)
1:GetPrefSet()
:MeetingInitiator
第5章 统一建模语言 直接使用UML建模 – 会议安排系统的类图
Person
StronglyConflicts With
Conflicts With
Important Attendee
0..* 0..*
0..* Profers
Attendee
1..* 1..* 0..* 0..*
11 1 1
1
Meeting Initiator
Find.exe
Query .dll
部署图 定义系 统中软 硬件的 物理体
系结构
第5章 统一建模语言 部署图
客户端:个人PC QueryClient.exe
服务器
《TCP/IP》 查询
QueryServer.exe 部署图
定义系
统中软
Find.exe
硬件的
物理体
Query.dll系结构
第5章 统一建模语言
第5章 统一建模语言
直接使用UML建模 – UML中的通用表示
➢ 字符串:表示有关模型的信息; ➢ 名字:表示模型元素; ➢ 标号:不同于编程语言中的标号,是用于表示或说明图形符号的字
符串; ➢ 特殊字符串:表示某一模型元素的特性; ➢ 类型表达式:声明属性、变量及参数,含义同编程语言中的类型表
0
10
20
30s 时间刻度
第5章 统一建模语言 状态图
提交订单 已审核 印前处理
客户付钱
已付款
已处理
进行冲印
冲印中 冲印完成
描述满足 用例要求 所要进行 的活动以 及活动间 的完约成束关 系,有利 于识别并 行活动
第5章 用例图
5.1.4 用例间的关系
扩展关系 扩展用例被定义为基础用例的增量扩展,扩展关系 是把新的行为插入到已有用例中的方法。 基础用例提供扩展点以添加新的行为。 基础用例可以独立于扩展用例单独存在。基础用例 即使没有扩展用例也是完整的,这点与包含关系有 所不同。
<<extend>> 还车 交纳罚金
参与者间的关系
在用例图中,使用泛化 关系来描述多个参与者 之间的公共行为。
参与者间的泛化关系 示例:
职工
教师
机关人员
工人
科员
领导
学校管理系统可能的用户层次
5.1.3 用例
1.用例的概念 外部可见的系统功能单元。 用例的用途是在不揭示系统内部构造的前提下 定义连贯的行为,这些行为不但应包含正常使 用的各种行为,而且应包括非正常使用时的各 种行为。 一个用例代表软件系统功能的划分,代表系统 角色和系统的一次交互。 不是需求或功能的规格说明,但是也展示和体 现其所描述的过程中的需求情况。
5.4一个ATM系统实例
建立一个具有基本功能的ATM机软件
1. 客户可以存钱,取钱
2. 客户可以查询节余
3. 客户可以修改密码
4. 客户可以使用信用卡付帐
5.4一个ATM系统实例
需求分析的第一步是确定系统能够做什么?谁来 使用这个系统? 用例图显示用例(表示系统功能)与角色(表示 提供或者接收系统信息的人或系统)之间的交互。 用户,项目管理员,分析人员,开发人员质保人 员都可以通过用例图了解系统功能。
5.ATM提供以下选项:存钱,取钱,查询 。 6.用户选择取钱选项。 7.ATM提示输入所取金额。 8.用户输入所取金额。 9.ATM确定该帐户是否有足够的金额。如果余额不够,则执行 A2,如果与主机联接有问题,则执行异常事件流E1。 10.ATM从客户帐户中减去所取金额。 11.ATM向客户提供要取的钱。 12.ATM打印清单。 13.ATM退出客户的卡,用例结束。
第五章 类图和对象图(UML)
+
size
:integer
=(100)
9
第 五 章 类 图 和 对 象 图
5.1 类的定义
说明:
3、属性还有取值范围。类型表示该属性的种类。 它可以是基本数据类型,例如整数、实数、布尔 型和枚举型等,也可以是用户自定义的类型。一 般它由所涉及的程序设计语言确定必须为其指定 数据类型。当一个类的属性被完整定义后,它的 任何一个对象的状态都由这些属性的特性值所决 定。
20
第 五 章 类 图 和 对 象 图
5.2 类之间的关系
1、关联
关联是一种结构关系,它指明一个事物的对象与 另一个事物的对象间的联系 例如,一个人为一家公司工作,一家公司有许多办 公室。我们就认为人和公司、公司和办公室之间 存在某种语义上的联系。在分析设计的类图模型 中,则在对应人类和公司类、公司类和办公室类 之间建立关联关系
改变的因素:1.一个类向另一个类发送消息。 2.一个类是另一个类的数据成员类型 3.一个类是另一个类的操作的参数类型 注:如果两个类之间有关联,那么这两个类就有依赖关 系,但是我们一般不标出依赖关系。
37
第 五 章 类 图 和 对 象 图
5.2 类之间的关系
3、泛化(generalization)关系
泛化关系:定义了一般元素和特殊元素之间的分类关系。 也就是一种继承关系。继承是在现有类的基础上定义和 实现一个新类的技术,刻画了类的一般性和特殊性。被 继承的类称为父类或超类,继承的类称为子类。 表示形式:用空心三角箭头实心线表示
25
第 五 章 类 图 和 对 象 图
5.2 类之间的关系
1、关联
角色:当一个类处于关联的某一端时,该类就在 这个关系中扮演着一个特定的角色。角色就是关 联关系中一个类对另一个类所表现的职责
课件—UML系统建模与分析设计(5)
系统设计与对象动态交互模型
动态模型主要描述系统的动态行为和控制结构。动态行 为包括系统中对象生存期内可能的状态以及事件发生时状态 的转移,对象之间动态合作关系,显示对象之间的交互过程 以及交互顺序,同时描述了为满足用例要求所进行的活动以 及活动间的约束关系。 在动态模型中,对象间的交互是通过对象间消息的传递来 完成的。对象通过相互间的通信(消息传递)进行合作,并在其 生命周期中根据通信的结果不断改变自身的状态。
16
5.2.1 一个简单的顺序图例子
17
顺序图有两个坐标: 垂直坐标--时间(从上到下),水平坐标—对象。
对象
生存线
时间
18
激活期
消息
顺序图和用例图、类图的关系
19
5.2.2顺序图的主要元素:
(1)对象:顺序图中所包含的每个对象用一个 对象框(短式)表示,对象名需带下划线。
对象图
(2)生存线:对象框下画的一条垂直虚线,称 为该对象的生存线,表示对象的生存时间。 (3)激活期:对象生存线上的一个细长方形框, 表示该对象的激活时间段,即活动期间。一 个激活的对象要么正在执行自己的代码,要 么等待另一个对象的返回。 (4)消息:对象之间消息的发送和接收用两个 对象生存线(激活期)之间的消息箭头线。
28
5.3
对象之间的同步与异步操作
1.对象之间的同步操作
同步消息的发送者把进程控制传递给消息 的接收者,然后暂停活动,等待消息的接收者 放弃或返回控制; 同步消息的接收者执行所请求的操作,如 果需要的话,可以把控制传递给另一个对象角 色,请求做某个操作,并且当该操作完成后把 控制返回给原来的同步消息的发送者; 同步消息的接收者也可以直接返回或发送 信息给原来的消息发送者。
第5章UML包图
17
5.6.2 调整候选包
在已经识别一组候选包后,减少包间依赖,最小化每个包中public、 protected元素的个数,最大化每个包中private元素的个数。做法如 下。 (1) 在包间移动类。 (2) 添加包、分解包、合并包或删除包。 通常,在分析阶段,将类封装为包模型时,应该尽量使包模型简单。 起初,将类图转换为包图时,不需考虑包间的泛化和依赖关系,仅 当使用诸如包泛化和依赖关系能简化包模型时,才使用这些包整理 技术。 除了保持简单,还应该避免嵌套包。包的嵌套结构越深,模型变得 越难理解。我们曾见过非常深层的嵌套包,而每个包仅包含一个或 两个类。这些模型更像是标准的、自上而下的功能分解,而不是包 模型。 作为经验法则,希望每个包具有4~10个分析类。然而,对于所有的 经验法则,却存在例外,如果打破某个法则使得模型更加清晰,就 采用这个法则。有时,必须引入只带有一个或者两个类的包,因为 需要断开包模型中的循环依赖,在这种情况下是完全合理的。
14
5.5 包的传递性
当客户包与提供者包之间是<<access>>依赖 时,提供者包中的公共元素就成为客户包中的 私有元素,这些私有元素在包外是不可以访问 的。如图5-15所示,Z包中的公共元素成为Y包 的私有元素,而X包只能访问Y包中的公共元素, 因此,X包不能访问Z包中的公共元素。所以, X、Y、Z包间的<<access >>关系不存在传递 性。
22
5.8 小
结
本章首先解释了几种常见的包图表示法, 并通过了一个简单的例子来说明包的可见 性、依赖关系、泛化等概念。其次,概要 地说明了5种包的构造型。 最后说明如何寻找包、确定包之间的依赖 关系,从而绘制出一个表明软件体系结构 的包图,并简要介绍了用包图表示系统体 系结构的建模方法。
UML05用例图模板
⑤ 绘制用例图。
34
5.5 发现用例
发现用例的一般方法:
① 找出系统外部参与者,确定系统边界和范围。 ② 确定各参与者所期望的系统行为。 ③ 把这些系统行为命名为用例。 ④ 确定各用例之间的关系(泛化,包含,扩展)。 ⑤ 绘制用例图。
●
⑥ 编制用例描述。
35
5.5 发现用例
发现用例的一般方法:
出纳员
吃饭
系统需要处理的,由系统生成
44
要点:业务语言而非技术语言
• 用户词汇,而不是技术词汇
– 如:发票,商品,洗衣机 – 而不是:记录,字段,COM,C++等
45
要点:用户观点而非系统观点
订票 旅客 查看今日航班
处理订票
旅客
显示今日航班
用户观点
系统观点
46
思考题:识别用例
• Email客户端(如:outlook express),A在 北京发邮件给上海的B,系统提醒B你有 “新邮件”,B收邮件。
用例描述
用例描述一般包括的内容:
用例的目标 用例是怎么启动的 参与者与用例之间的消息如何传送 用例中除了成功场景外, 其它场景是什么 用例结束后系统的状态 其它需要描述的内容
56
用例阐述文档
• 场景(scenario): 是参与者和被讨论 系统之间的一系列特定活动和交互。每个 用例是一组场景的集合,而每个场景又是 一个步骤序列。 • 用例阐述文档针对每个用例,描述各个场 景
38
5.5.2 获取用例
一旦获取了参与者,就可以对每个参与者提出问题以获取用例。 •执行者要求系统提供哪些功能(执行者需要做什么)? •执行者需要读、产生、删除、修改或存储的信息有哪些类型。 •必须提醒执行者的系统事件有哪些? 或者执行者必须提醒系统 的事件有哪些? 怎样把这些事件表示成用例中的功能? •为了完整地描述用例,还需要知道执行者的某些典型功能能否 被系统自动实现? 还有一些不针对具体参与者问题(即针对整个系统的问题): •系统需要何种输入输出? 输入从何处来? 输出到何处? •当前运行系统(也许是一些手工操作而不是计算机系统)的主要 问题?
面向对象方法与UML
用例之间的泛化关系描述用例的一般与特 殊关系,不同的子用例代表了父用例的不 同实现。
5.3 静态建模机制
• 5.3.2 类图和对象图 类图使用类和对象描述系统的结构,展示了系统中类的
静态结构,即类与类之间的相互关系。类之间有多种联系方 式,如关联(相互连接)、依赖(一个类依赖于或使用另一 个类)、泛化(一个类是另一个类的特殊情况)。一个系统 有多幅类图,一个类也可以出现在几幅类图中。
5.2 统一建模语言UML
• 5.2.1 UML简述
统一建模语言(Unified Modeling Language,UML)是一种通用的可视化建 模语言,可以用来描述、可视化、构造和文档化软件密集型系统的各种工件。它由 信息系统和面向对象领域的三位著名的方法学家Grady Booch、James Rumbaugh 和Ivar Jacobson提出的。它记录了与被构建系统的有关的决策和理解,可用于对 系统的理解、设计、浏览、配置、维护以及控制系统的信息。这种建模语言已经得 到了广泛的支持和应用,并且已被ISO组织发布为国际标准。 UML是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示 UML用来捕获系统静态结构和动态行为的信息 UML是独立于过程的,它适用于各种软件开发方法、软件生命周期的各个阶段、
5.3 静态建模机制
• 类与类之间的关系有关联、依赖、泛化和实现等。
1)关联(Association)表达模型元素间的一种语义关系, 对具有共同的结构特性、行为特性、关系和语义的链的描述。 UML中使用一条直线表示关联关系,直线两端上的数字表示 重数。关联关系还分为二元关联、多元关联、受限关联、聚 集和组合等。
对象图是类图的实例,它展示了系统在某一时刻的快照。 对象图使用与类图相同的符号,只是在对象名下面加上下划 线。
UML第5章 包图
例如,在图5-11中,C包《use》依赖于S包, 因此,C包中的任何元素能访问S包可见性是+的 所有元素。
-
可见性是-的元素,只能被同一个包中的其他元素访问
从表5-1可以看出,包X能否访问包Y中的元素取决于两点: (1)包X与包Y的关系; (2)包Y中元素的可见性;
5.2.3 包的构造型表示法
• 一个包的具体新特征有很多,为了表示包的新特性,UML提供了5种构造型来 描述包的新特征。包的构造型有5种,下面分别说明这5种构造型的语义。
图5-4 包名写在第二栏
• 2.包名称的书写格式
• 包名称的书写格式有两种,即简单名和全名。其中,简单 名仅标识包本身的名字,不列出该包的外围包名字;全名 是用该包的外围包的名字作为前缀,加上包本身的名字。
• 如图5-5所示是同一个包的两种表示格式。在左边的图中, 用简单名UI表示包,在右边的图中,用全名格式 System.Web.UI表示包。System.Web.UI表示包UI包含在 System.Web包中。
5.3 包图实例
•包图就是通过关系将多个包连接在一起构成的图。包间的关系有依赖 关系和泛化关系。
•在企业综合信息管理系统中,可以把系统分为5个子系统,它们是: 经理查询管理子系统、财务管理子系统、生产调度管理子系统、综合 支持管理子系统、进销存管理子系统。可以把每个子系统用一个包来 表示,每个包中又包含多个用例。图5-10就是一个典型的包图,它表 示了综合信息管理系统所包含的子系统组成,以及子系统间的依赖关 系。
5.4.1 依赖关系
• 两个包间的依赖关系又可以细分为4种。包间的 依赖关系用一个虚线箭头表示,在依赖关系中, 把箭尾端的包称为客户包,把箭头端e》关系
• 《use》关系是一种默认的依赖关系,说明客户 包中的元素以某种方式使用提供者包中的公共 元素(元素的可见性是+)。在UML中,如果没 有指明包间的依赖类型,则包间的关系默认为 《use》关系。《use》关系并不指明两个包是 否合并。
UML系统建模基础教程课后习题答案
UML 系统建模基础教程课后答案第一章面向对象设计与UML1.填空题(1)UML(2)封装继承多态(3)继承(4)瀑布模型喷泉模型基于组件的开发模型XP 开发模型2. 选择题(1)C(2)A B C D(3)A B C D(4)A B C(5)A1.试述对象和类的关系。
(1)类是具有相同或相似结构、操作和约束规则的对象组成的集合,而对象是某一类的具体化实例,每一个类都是具有某些共同特征的对象的抽象。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类.类描述了一组有相同特性和相同行为的对象。
第二章UML 通用知识点综述(1)依赖泛化关联实现(2)视图图模型元素(3)实现视图部署视图(4)构造型标记值约束(5)规格说明修饰通用划分2. 选择题(1)D(2)C(3)A(4)A B(5)D(6)1)在UML 中面向对象的事物有哪几种?在UML 中,定义了四种基本的面向对象的事物,分别是结构事物、行为事物、分组事物和注释事物等。
(7)2)请说出构件的种类。
构件种类有:源代码构件、二进制构件和可执行构件。
(8)3)请说出试图有哪些种类。
在UML 中主要包括的视图为静态视图、用例视图、交互视图、实现视图、状态机视图、活动视图、部署视图和模型管理视图。
(9)4)请说出视图和图的关系。
视图和图是包含和被包含的关系。
在每一种视图中都包含一种或多种图。
(10)5)请简述UML 的通用机制。
UML 提供了一些通用的公共机制,使用这些通用的公共机制(通用机制)能够使UML 在各种图中添加适当的描述信息,从而完善UML 的语义表达。
通常,使用模型元素的基本功能不能够完善的表达所要描述的实际信息,这些通用机制可以有效地帮助表达,帮助我们进行有效的UML 建模。
UML 提供的这些通用机制,贯穿于整个建模过程的方方面面。
前面我们提到,UML 的通用机制包括规格说明、修饰和通用划分三个方面。
第三章Rational 统一过程(11)1 )角色活动产物工作流(12)2 )逻辑视图过程视图物理视图开发视图用例视图(13)3)设计开发验证(14)4 )二维(15)5)周期迭代过程里程碑(16) A B C D(17) A C D(18) A C D(19) A B C(20) A B C D(21)1 )请描述迭代过程有几个阶段。
软件工程 第5章--UML统一建模语言
1
概述
软件工程领域在1995年至1997年取得了前所未 有的进展,其成果超过软件工程领域过去15年来的 成就总和。其中最重要的、具有划时代重大意义的 成 果 之 一 就 是 统 一 建 模 语 言 — UML ( Unified Modeling Language)的出现。在世界范围内,至少 在近10年内,UML将是面向对象技术领域内占主 导地位的标准建模语言。
• 2007 UML 2.1 was never released as a formal specification, versions 2.1.1 and 2.1.2 .
• 2009 UML 2.2 . • 2010 UML 2.3 • 2011 UML 2.4.1 • 2012.10 UML 2.5 was released as an "In process"
initializing
Keypress command
Exit
idle
Finished
31
UML事物 — 分组事物
分组(组织)事物(Grouping Things)
组织事物是UML模型中负责分组的部分,可以 把它看作一个个盒子,每个盒子里面的对象 关系相对复杂,而盒子与盒子之间的关系相 对简单。
4
1981 Grady Booch method (OOD) served as Chief Scientist of Rational Software Corporation .
1994 Rational Software Corporation hired James Rumbaugh (OMT/OOA) from General Electric
2
uml 用例分析技术
寻找用于解决某个用例的一组对象
寻找对象的准则
限制每一个分析类(analysis class)的职责 对类和方法采用一致的命名 保持分析类的简单 实体(Entity) 边界(Boundary) 控制(Control)
-35-
寻找Hale Waihona Puke 象的步骤(MVC构架)
准则1:限制职责
SRP(The Single Responsibility Principle):就一个类而言,应该仅有 一个引起它变化的原因
-13-
分析模型与用例模型
用例:外观
类图:内部机理
-14-
如何开始?
从 用 例 开 始!
-15-
从用例开始-1
根据高层用例图和文档来确认需求定义是可靠 的、一致的
可靠的
每个用例都包含对正常事件流和异常事件流的描述 存在备选事件流、异常事件流的描述
如果在分析过程中发现一些新的用例,说明需求是不完备 的,此时应对用例进行重构 在分析过程中,还有可能精化对每一个用例的理解
-27-
经典的三层构架-1
表示层
应用逻辑层
记录销售信息
支付授权
存储层
数据库
-28-
多层体系结构的动机
将应用逻辑作为单独的构件从系统中分离出来, 以便这些构件在其他系统中能得到重用
将各个层次分配到各个不同的物理计算节点, 或者分配给不同的进程。这样可以改善系统性 能、更好地支持客户和服务器系统中的信息共 享和协调 将不同层的开发任务在开发者之间适当地分配, 这可以有效地利用开发人员的专长和开发技巧, 并且能够提高并行开发能力
第5章详细设计之时序图
海软院 软件工程系
3
1.1 时序图的组成
对象(Object) 生命线(Lifeline) 激活(Activation) 消息(Messages)
要记住哦!
海软院 软件工程系
4
1.1.1 对象(Object)
序列图中的对象可以是系统的参与者或者 任何有效的系统对象,是类的实例。
海软院 软件工程系
海软院 软件工程系
12
撤销一个对象,只要在其生命线终止点放置 一个“X”符号即可,撤销一个对象也会同时 回收其拥有的资源。
一个对象可以销毁自己,也可以通过一个对 象发送一条消息来销毁另一个对象。
海软院 软件工程系
13
实例 教师查看学生成绩
海软院 软件工程系
14
1.确定工作流程
基本的工作流程如下:
5
1.1.2 生命线(Lifeline)
生命线(Lifeline)是一条垂直的虚线, 用来表示序列图中的对象在一段时间内的 存在。
对象在生命线上的两种状态:
(1)激活状态 (2)休眠状态
海软院 软件工程系
6
1.1.3 激活(Activation)
激活表示该对象被占用以完成某个任务,一 个对象处于激活期时,表明该对象正在执行 某个动作。
海软院 软件工程系
10
什么情况下同步消息或是异步消息?
同 异步步消消息息,,主要用于过程化的系统流。在控制流 继续之主前要,用消于息控必制须流已在被完接成收前和不完需成要。中该断情的况情下况。 使用同步消息。
海软院 软件工程系
11
1.2 对象的创建和撤销
对象创建
交互开始时创建 位于时序图顶部 交互过程中创建 位置不在时序图顶部
第5章 用例图
用例的识别
识别用例最好的方法就是从分析系统的参 与者开始,考虑每个参与者是如何使用系 统的。 如何识别用例。
用例的粒度
用例的粒度是指用例所包含的系统服务或 功能单元的多少。 用例的粒度越大,用例包含的功能就越多, 反之,则越少。 用例粒度大,用例数会少,反之,用例粒 度小,用例数会多。 用例数目过多会造成用例模型过大和引入 设计困难大大提高;用例数目过少不便于 进一步充分分析。
图5-17 扩展关系示例
扩展关系一般用来处理异常或构建灵活的系统框架。 使用扩展关系可以降低系统的复杂度,有利于系统 的扩展、提高系统的性能。 扩展关系还可用来处理基础用例中的不易描述的问 题,是系统显得清晰、易于理解。
泛化关系
用例的泛化是指一个父用例可以被特化形成多个子用例, 父用例和子用例之间的关系就是泛化。 父用例也可以被特别列举为一个或多个子用例。 子用例表示父用例的特殊形式。 子用例从父用例处继承行为和属性,还可以添加行为或覆 盖、改变继承的行为。
当系统中两个或多个用例在行为、结构和 目的方面存在共性时,就可以使用泛化关 系。
图5-19 泛化关系示例
泛化关系和包含关系都可以用来复用多个用例中 的公共行为。 泛化关系和包含关系的区别: 1、在用例的泛化关系中,所有的子用例都有相似 的目的和结构,注意它们是整体上的相似。 2、在用例的包含关系中,基础用例在目的上可以 完全不同,但是它们都有一段相似的行为,它们 的相似是部分而不是整体。用例的泛化关系类似 于面向对象中的继承,它把多个子用例中的共性 抽象成一个父用例,子用例在继承父用例的基础 上可以进行修改。但子用例之间又是相互独立的, 任何一个子用例的执行不受其他子用例的影响。 而用例的包含关系是把多个基础用例中的共性抽 象为一个被包含用例,可以说被包含用例就是基 础用例中的一部分,基础用例的执行必然引起被 包含用例的执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Figure 5-3. Generalization
5.2.3 Associations
An association is a structural relationship that specifies that objects of one thing are connected to objects of another. It's quite legal to have both ends of an association circle back to the same class. An association that connects exactly two classes is called a binary association. Although it's not as common, you can have associations that connect more than two classes; these are called n-ary associations.
With care, most line crossings can be avoided. If a line crossing is necessary and there is ambiguity about how the paths are connected, a small arc can be used to indicate a line crossing.
Chapter 5. Relationships
Dependency, generalization, and association relationships Modeling simple dependencies Modeling single inheritance Modeling structural relationships Creating webs of relationships
Dependencies Associations Generalizations
5.2 Terms and Concepts
A
relationship is a connection among things. Graphically, a relationship is rendered as a path, with different kinds of lines used to distinguish the kinds of relationships. dependency generalization association
Figure 5-6. Multiplicity
4) Aggregation
This kind of relationship is called aggregation, which represents a "has-a" relationship, meaning that an object of the whole has objects of the part. Aggregation is really just a special kind of association and is specified by adorning a plain association with an unfilled diamond at the whole end, as shown in Figure 5-7.
Graphically, an association is rendered as a solid line connecting the same or different classes.
Figure 5-4. Association Names
1) Name
An association can have a name, and you use that name to describe the nature of the relationship. So that there is no ambiguity about its meaning, you can give a direction to the name by providing a direction triangle that points in the direction you intend to read the name, as shown in Figure 5-4.
Figure 5-7. Aggregation
5.2.4 Other Features
Plain, unadorned dependencies, generalizations, and associations with names, multiplicities, and roles are the most common features you'll need when creating abstractions. Sometimes, however, you'll need to visualize or specify other features, such as composite aggregation, navigation, discriminants, association classes, and special kinds of dependencies and generalizations.
It is written as an expression with a minimum and maximum value, which may be the same; two dots are used to separate the minimum and maximum values. You can show a multiplicity of exactly one (1), zero or one (0..1), many (0..*), or one or more (1..*). You can give an integer range (such as 2..5). You can even state an exact number (for example, 3, which is equivalent to 3..3).
5.2.5 Drawing Styles
Typically, modelers choose one of two styles for drawing lines:
Oblique lines at any angle. Rectilinear lines drawn parallel to the sides of the page.
5.2.1 Dependencies
A dependency is a relationship that states that one thing (for example, class Window) uses the information and services of another thing (for example, class Event), but not necessarily the reverse. Graphically, a dependency is rendered as a dashed directed line, directed to the thing being depended on. Choose dependencies when you want to show one thing using another.
Figure 5-2. Dependencies
5.2.2 Generalizations
A generalization is a relationship between a general kind of thing (called the superclass or parent) and a more specific kind of thing (called the subclass or child). Generalization is sometimes called an "is-akind-of" relationship. Use generalizations when you want to show parent/child relationships.
2) Role
When a class participates in an association, it has a specific role that it plays in that relationship; A role is just the face the class at the far end of the association presents to the class at the near end of the association. The role played by an end of an association is called an end name (in UML1, it was called a role name).
5.1 Getting Started
In the UML, the ways that things can connect to one another, either logically or physically, are modeled as relationships. In object-oriented modeling, there are three kinds of relationships that are most important: