ROSE画图--UML类图关系大全
RationalRose简明实用教程
RationalRose简明实用教程UML中各种图形概要:图名对照说明用例图use casediagram 用例图表明系统做什么,与谁交互。
用例是系统提供的功能,参与者是系统与谁交互,参与者可以是人、系统或其他实体。
一个系统可以创建一个或多个用例图。
用例use case参考者actor关联关系unidirectional association泛化关系(继承)generalization活动图activitydiagram 活动图显示了从活动到活动的流。
活动图可以在分析系统业务时用来淙业务流,也可以在收集系统需求的时候显示一个用例中的事件流。
活动图显示了系统中某个业务或者某个用例中,要经历哪些活动,这些活动按什么顺序发生。
泳道swimlane活动activitystate transition同步synchronization决策点decision类图classdiagram类图显示系统之中类与类之间的交互类class方法Operation属性Attribute序列图sequencediagram序列图显示用例中的功能流程协作图collaboration diagram状态图statechart diagram构件图componentdiagram 构件图显示模型的物理视图,也显示系统中的软件构件及其相互关系,模型中的每个类映射代码构件,一旦创建构件,就加进构件图中,然后画出构件之间的相关性。
构件间的相关性包括编译相关性和运行相关性。
实施图deploymentdiagram 实施图是显示网络的物理布局,系统中涉及的处理器、设备、连接和过程。
一个项目中有一个实施图。
Rose模型(包括所有框图、对象和其他模型元素)都保存在一个扩展名为.mdl的文件中。
1.环境简介 1.1 Rational Rose可视化环境组成Rose界面的五大部分是浏览器、文档工具、工具栏、框图窗口和日志。
1、浏览器:用于在模型中迅速漫游。
UML之关系详解(类图)
UML之关系详解(类图)关联、依赖、聚合、组合、泛化、实现简单解释:关联:连接模型元素及链接实例,用一条实线来表示;依赖:表示一个元素以某种方式依赖于另一个元素,用一条虚线加箭头来表示;聚合:表示整体与部分的关系,用一条实线加空心菱形来表示;组成:表示整体与部分的有一关系,用一条实线加实心菱形来表示;泛化(继承):表示一般与特殊的关系,用一条实线加空心箭头来表示;实现:表示类与接口的关系,用一条虚线加空心箭头来表示;注意:泛化关系和实现关系又统称为一般关系;总之:一般关系表现为继承或实现(is a);关联关系、聚合关系、合成(聚合)/组合关系表现为成员变量(has a),依赖关系表现为函数中的参数(use a);二、类与类之间的关系一般关系:泛化、实现特殊关系:由弱到强是: 没关系 > 依赖 > 关联 > 聚合 > 组合。
UML中讲到类之间的关系:•依赖关系:类之间使用关系•泛化关系:类之间一般/特殊关系•关联关系:对象之间结构关系•实现关系:类中规格说明和实现之间关系三、关系详解(1)聚合与组合首先说明一下不容易混淆的概念:聚合(Aggregation)•一种特殊类型的关联。
•表示整体与部分关系的关联。
•描述了“has a”的关系。
•部分事物的对象可以属于多个聚合对象。
部分事物的对象与聚合对象的生存期无关,删除了它的聚合对象,不一定就随即删除了代表部分事物的对象。
组合(Composite)•聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合。
•成员对象的生命周期取决于组合的生命周期。
•组合不仅控制着成员对象的行为,而且控制着成员对象的创建和解构。
(2)依赖依赖(dependency):指一个模型元素的变化必影响到另一个模型元素的变化。
可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method 方法中使用(使用依赖之参数传递)。
跟我学UML静态建模——在Rational Rose工具中设计实现UML类图的应用示例(第1部分)
1.1跟我学UML静态建模——在Rational Rose工具中设计实现UML类图的应用示例(第1部分)1.1.1UML类图1、UML类图(1)类图类是面向对象模型的最基本的模型元素。
类图表达为了实现某一用例中的一组对象类之间的静态结构,以及它们之间的联系和交互。
(2)类图的作用主要体现在描述结构和联系:类图描述系统中类的静态结构,它不仅定义系统中的类,表示类之间的联系(关联、依赖、聚合等),还包括类的内部结构(类的属性和操作)。
(3)类与类之间的联系类与类之间的联系可以分为两种:结构性联系(静态联系)和行为性联系(动态联系)。
1)结构性联系指类的继承与派生、父类与子类间的聚合、组合、泛化/特化等。
2)行为性联系指类之间可以通过消息联系,通过系统预定义或用户自定义的语义联系。
(4)类的UML的图示类是对象的集合,这些对象有共同的结构特征、行为特征、联系和语义;在UML中类的图形表示为实线矩形框。
但要注意的是:在类图中不一定要列出全部的成员内容。
如在建立分析模型或设计模型时,可以只列出类名,在图中着重表达类间联系;在建立实现模型时,再在图中给出属性和操作等详细内容。
如:(5)类中的属性成员及其UML的图示●属性(成员变量)属性是类的命名的性质,在类图中用文字串说明。
其表示为:可视性属性名(多重性):类型=初始值其中:可视性用可视性标记表示:公共(+)、保护(#)、私有(-)类型(即数据类型)依赖于选择的工具语言。
例如,+年龄:integer=25●类的static成员属性所应该注意的是,对类的成员属性也就是 static成员属性在类图中的表示为带下划线的形式。
如下面的“货单个数”的类的成员属性的表示方式。
abstract class Computer{private CPU intelCPU;private HDDisk oneHDDisk;private Printer hpPrinter;Computer oneUserInfo;String bingPai="联想计算机";abstract public boolean calculateDate(Data oneDate) throws DataException;}(6)类中的方法成员及其UML的图示●类中的操作(成员方法)操作是类的行为特征或动态特征,用于对服务或实体相关的操作建模。
UML(ROSE)综合实验报告(包括用例图、类图、组件图等等)
计算机科学与技术专业实验报告 课程名称:UML 统一建模语言……………………………………………装……………………………………订……………………………………线……………………………………………………………图图2-4(Ⅱ)按系统的重要模块细分系统设置模块:设置系统基本信息,由系统管理员操控;如图统计管理模块:统计分析营业状况,由财务管理员操控;如图图2-5图2-7图2-8图2-9⑶组件图:描述软件组件以及组件之间的关系,组件本身是代码的物理模块,则显示了代码的结构。
组件图中通常包括:组件、接口和关系。
在系统建模中建立组件图的用途有:能帮助客户理解最终的系统结构;工作有一个明确的目标;有助于工作组的其他人员理解系统;有利于软件系统的组件重用。
以下图2-10是对该软件系统进行组件图建模图2-10图2-123、系统的行为模型动态模型描述了系统随时间变化的行为,这些行为是用从静态视图中抽取的系统的瞬间值的变化来描述的。
在UML的表现上,动态模型主要是建立系统的交互图和行为图。
交互图包括时序图和协作图;行为图则包括状态图和活动图。
(1)时序图:时序图用来显示对象之间的关系,并强调对象之间消息的时间顺序,同时显示对象之间的交互,它可以与时序图互换。
包括了4个元素,分别是对象、生图3-1图3-3图3-5图3-6图3-7活动图是一种特殊形式的状态机,用于对计算流程和工作流程建模。
可以算是状态的一种扩展方式。
活动图与状态图不同,它除了描述对象状态之外,突出了它的活动。
活动图包括动作状态和活动状态。
对象的动作状态是活动图最小单位的构造块,表示原子动作。
动作状态表示状态的入口动作。
对象的活动状态可以被理解成一个组合,它的控制流由其他活动状态或动作状态组成。
用rose画UML图(用例图,活动图)
⽤rose画UML图(⽤例图,活动图)
⽤rose画UML图(⽤例图,活动图)
⾸先,安装rose2003,电脑从win8升到win10以后,发现win10并不⽀持rose2003的安装,换了rose2007以后,发现也不可以。
解决途径:在虚拟机中安装(我装的是win xp的系统,安装的是rose2003)。
如果需要安装包,可以联系我。
此外,还有Visio2013的安装包等。
都有⽤过,不过还是觉得rose最好⽤了。
然后开始贴图吧!毕设做的电商购物系统的UML设计图。
⽤例图:
1.⽤户⽤例模型
2.系统管理员⽤例模型
3.订单⽤例模型
4.产品⽤例模型
5.⽹站管理⽤例模型
6.⽤户信息⽤例模型
7.分类⽤例模型
8.留⾔⽤例模型
活动图:
1.管理员⽂章管理活动图
1.⽤户获取商品活动图
时序图:
系统业务模块流程图:。
跟我学UML静态建模——在Rational Rose工具中设计实现UML类图的应用示例(第2部分)
(4)抽象类的表示形式 抽象类或抽象操作的名字用斜体字表示。关键字 abstract 可以放置在位于名称下面或 后面的特性表中,如 Account{abstract} 5、依赖(Dependency) (1)依赖(实体之间一个“使用-----调用关系”关系) 特定事物的改变有可能会影响到使用该事物的事物,反之不成立。在你想显示一个事 物使用另一个事物时使用依赖关系。 通常情况下,依赖关系体现在目标类的对象出现在局部变量或者方法的参数中以及静 态方法的调用-----依赖与关联不同,首先依赖性总是单向的。 (2)代码示例 class A{ } class B{ public void method(){ A a = new A(); ...
也可以将几个实心菱形合并为一个,用直线分支地连接到各个部分类,构成一个树状 结构。
再比如, 前面的 Employee 和 TimeCard 的关系或许更适合表示成 “合成” , 而不是表示成 “关 联” 。
“一对一”的组合关系的代码示例
表达 Class2 是 Class1 的一部分,而且是一个 Class1 拥有一个 Class2。 class Class1{ private Class2 obj; } class Class2{ }
杨教授大学堂,版权所有,盗版必究。 5/9 页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
“一对多”的组合关系的代码示例
下面的例子表明,Class1 可以包容 0 到任意数量的 Class2,而当 Class1 包容 Class2 的 时候,Class2 可以被 0 或者 1 个 Class1 包容。 为了实现“一对多”的组合关系的这种包容,可以使用集合来保留这些类。 class Class1{ private ArrayList class2Obj ; } public class Class2{ } 4、泛化与特化 泛化与特化是现实世界中一般性实体与特殊性实体之间的关系,一般性实体是特殊性 实体的泛化,特殊性实体是一般性实体的特化。类与其子类便具有这样的关系。如,学生, 大学生,研究生等。
UML05-2-Rose与关系分析
表示
16 of 70
版权所有:理学院
Java&UML
UML
关联示例——聚合关系 类图含义:A聚合B,B可以离开A。
17 of 70
版权所有:理学院
Java&UML
UML
关联示例——聚合关系 代码含义:双方都拥有对方的一个指针,当然 也可以是应用或者是值。
18 of 70
版权所有:理学院
Java&UML
Java&UML 教程
பைடு நூலகம்
UML
Rose与关系分析
使用Rose分析学习过的各种关系
授课:刘松华
版权所有:江西理工大学理学院
Java&UML
UML
课程要点
5.1 回顾关系 5.2 Rose图
2 of 70
版权所有:理学院
Java&UML
UML
1.依赖的含义
回顾:依赖(dependency): 表示两个元素X、Y,如 果X的变化必然导致Y的变化,则称Y依赖X。 注意:依赖关系不仅限于类,用例、包、构件之间 都可以存在依赖关系。 回顾:在UML中,依赖用一个从客户指向提供者的 虚箭头表示。
7 of 70
版权所有:理学院
Java&UML
UML
泛化的表示
表示
例子
8 of 70
版权所有:理学院
Java&UML
UML
泛化示例—— 类图含义:E可以使用F的公共属性和方法。
9 of 70
版权所有:理学院
Java&UML
UML
泛化示例—— 代码含义:E从F继承而来,Java用extends关 键字表示继承关系。
UML与ROSE建模基础时序图协作图等
主要内容
1. 协作图的组成 2. 运用协作图 3. 实例图与一般图 4. 对象的创建与销毁 5. 其他概念
14
1.2.1 协作图的组成
协作图由下列图形元素构成:对象、关联线、导航箭线和 消息。 (1)对象:一般只给出名称,其命名规则与在对象图中相 同。可以使用匿名对象。 (2)关联线:表示在对象之间存在交互协作的关系。 (3)导航箭线:指出消息传递的方向和消息的类型。 (4)消息:表示对象之间的通讯。消息的含义与格式跟顺 序图中相同。 序号[保护条件] *[循环]返回表:=操作名(参数 表)
16
1.2.2 协作图[2] 协作图
1: Keystroke
: GUI
2: notify(keystroke) 7: feedback() 4: update(keystroke) : OperatingSystem
: Monitor
3: notify(keystroke) 6: display(keystroke)
源对象 Simple Message
目标对象
7
1.1.1 顺序图的组成 顺序图的组成[3]
消息内容: 消息内容
序号[保护条件 循环]返回表 操作名( 序号 保护条件]*[循环 返回表 操作名(参数表) 保护条件 循环 返回表:=操作名 参数表) 为消息在整个交互中的顺序号,可缺省。 序号 为消息在整个交互中的顺序号,可缺省。 保护条件 在方括号中,含有一个布尔表达式,只有当条件满足时 在方括号中,含有一个布尔表达式, 才能发送该消息。当缺省时,表示该消息是无条件发送的。 才能发送该消息。当缺省时,表示该消息是无条件发送的。 *[循环 循环] “*”表示该消息重复发送。循环说明发送的重复次数, 表示该消息重复发送。 循环 表示该消息重复发送 循环说明发送的重复次数, 缺省表示次数未规定。 缺省表示次数未规定。 操作名(参数表) 操作名或是一般消息名, 操作名(参数表) 操作名或是一般消息名,或是接受该消息对象 中的操作名。参数表是一个以逗号分隔的实在参数表,实在参数的 中的操作名。参数表是一个以逗号分隔的实在参数表, 次序、个数、类型必须与该操作的形式参数一致。 次序、个数、类型必须与该操作的形式参数一致。 返回表: 返回表是一个以逗号分隔的名字列表, 返回表:= 返回表是一个以逗号分隔的名字列表,这些名字代表 后面跟的操作所返回的值。 后面跟的操作所返回的值。
建模工具Rose简介
建模工具Rose简介在这个面向对象应用程序开发不断变化的时代,在合理时间内开发和管理高质量应用程序变得越来越困难。
为了面对这种挑战,制定出每个公司都能使用的通用对象模型语言,统一建模语言(UML)。
UML是信息技术行业的蓝图,是详细描述系统结构的方法。
利用这个蓝图,我们越来越容易建立和维护系统,保证系统能适应需求的改变。
一个系统的模型建得好,就为满足用户需求、保证系统的稳定性和质量、提高系统的扩展性打下了良好的基础。
ROSE是用UML快速开发应用程序的工具之一,它是一个面向对象的建模工具。
软件工程概述软件开发是一套关于软件开发各阶段的定义、任务、作用的建立在理论上的一门工程学科。
它为解决软件危机,指导人们利用科学、有效的方法来开发软件,提高及保证软件开发的效率和质量取到了一定的作用。
软件开发过程:需求分析(开始阶段)--概要设计(静态结构)--详细设计(动态结构) --编码-测试-维护结构化模型设计方法A.E-R图(实体关系图)实体:客观存在并可区分的事物。
属性:实体所具有的某种特性,一个实体可以有多个属性。
关系:实体之间的对应关系,可分为1:1联系、1:n联系、m:n联系B.数据流图C.功能模块图结构化模型的不足传统的结构化模型的设计所建立的模型不能反应源代码,与程序设计脱节。
模型与代码几乎没什么关系。
这样的模型不能生成代码,代码更不能生成模型,模型大多是画给领导看或拿出作掩盖。
所以不能保证软件的质量,更不易软件的维护,没什么约束力也没有检测的标准,它的弊端是显于易见的。
面向对象的模型设计方法定义:利用面向对象方法,把应用程序分成许多小块(对象),这些对象是独立的,然后组合这些对象,建立程序。
特点:包装、继承、多态。
常用的建模工具:Rational ROSE/XDE, Computer Association BPWin/ERWin, Oracle Designer/2000, Sybase PowerDesigner, PlayCaseUML统一建模语言定义:一种面向对象的统一建模语言。
UML.ROSE类图符号说明
图一:此实线箭头表示, 继承, 从一个非接口类的继承.图二:那条连线表示双向关联:看左边, Flight扮演assignedFights角色, 有0到1个Plane跟他关联(一个航班要么取消了没有飞机,要么只能对应一架飞机)看右边, Plane扮演着assignedPlane角色, 有0到多个Flight跟他关联(一个飞机可以参与多个航班, 也可以停在仓库里面烂掉)图三:那条连线表示单向关联:基本的意义跟上面的是一样的, 唯一不同的是, 右边的类对左边的类是一无所知的. 图四:那个大的包围的框叫软件包, 名字为Account, 就一些可以归类的类包装起来.图五:如此虚线的箭头表示实现一个接口.图六:水平的连线还是表示上面所说的关联, 但从关联连线中引伸出来的虚线, 这意味当Flight 类的一个实例关联到FrequentFlyer 类的一个实例时,将会产生MileageCredit 类的一个实例.图七:带菱形的箭头表示基本聚合, 由上图知道, Wheel类扮演wheels角色, 聚合4个到Car 对象里面去,空心的菱形表示Wheel对象并不随Car的创建而创建,销毁而销毁.图八:意义和上面类似, 唯一不同的是, 实心菱形表示Department对象随Company对象的创建而创建,销毁而销毁.图九:表示反射关联, 显示一个Employee类如何通过manager / manages角色与它本身相关。
当一个类关联到它本身时,这并不意味着类的实例与它本身相关,而是类的一个实例与类的另一个实例相关总黄酮生物总黄酮是指黄酮类化合物,是一大类天然产物,广泛存在于植物界,是许多中草药的有效成分。
在自然界中最常见的是黄酮和黄酮醇,其它包括双氢黄(醇)、异黄酮、双黄酮、黄烷醇、查尔酮、橙酮、花色苷及新黄酮类等。
简介近年来,由于自由基生命科学的进展,使具有很强的抗氧化和消除自由基作用的类黄酮受到空前的重视。
类黄酮参与了磷酸与花生四烯酸的代谢、蛋白质的磷酸化、钙离子的转移、自由基的清除、抗氧化活力的增强、氧化还原作用、螯合作用和基因的表达。
Rose类图及其应用.
《Rational Rose 2003基础教程》
配套电子教案
内 容
基本概念 类图操作 类规范与类的应用 属性规范与应用 操作规范与应用 关联规范与应用 泛化规范与应用 依赖规范与应用 聚合规范与应用 逻辑包规范与应用
引 言
类图是逻辑视图的重要组成部分,用于对 系统的静态结构建模,涉及到具体的实现细节。 在系统分析阶段,类图主要用于显示角色 和提供系统行为的实体的职责;在系统设计阶 段,类图主要用于捕捉组成系统体系结构的类 结构;在系统编码阶段,根据类图中的类及它 们之间的关系实现系统的功能。
– [可见性]属性名[多重性][:类型]=[初值][{特殊串}]
– 操作
• 操作是与类相关联的行为,表示类提供的服务 • 完整的语法表示
– [可见性] 操作名[(参数表)][:返回类型] [{特殊串}]
1 基本概念
1.1 类
– 对象
• 对象是一个类的实例,对象的每 一个属性都有具体的值 • 图形表示 • 对象在交互图和状态机中使用
5 操作规范与应用
5.1 操作规范
– 1)General标签
• 返回值的类型(Return) • 构造型(Stereotype) • 输出控制(Export Control)
可见性 Pulic Protected Private Implemented
含义 操作可以被其它类访问。 操作可以被子类、友元类或本身访问 操作可以被友元类或本身访问 操作是公开的,但只被同一包中的类访问
3 类规范与类的应用
3.2 类的操作
– 添加一个类
• 单击工具箱中的类图标; • 在模型图任一位置单击,新类取名为NewClass; • 输入新的类名。
ROSE画图--UML类图关系大全
UML类图关系大全(ROSE画图)1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。
在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。
对象引用本身就是有向的,更适合表达我们所讨论的那种关系。
所以这种关系在设计的时候比较少用到,关联一般都是有向的。
使用ROSE 生成的代码是这样的:class C1...{public:C2* theC2;};class C2...{public:C1* theC1;};双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。
单向关联:C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。
没有生命期的依赖。
一般是表示为一种引用。
生成代码如下:class C3...{public:C4* theC4;};class C4...{};单向关联的代码就表现为C3有C4的指针,而C4对C3一无所知。
自身关联(反身关联):自己引用自己,带着一个自己的引用。
代码如下:class C14...{public:C14* theC14;};就是在自己的内部有着一个自身的引用。
2、聚合/组合当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。
聚合:表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。
这句话怎么解,请看下面组合里的解释)。
代码如下:class C9...{public:C10 theC10;};class C10...{};组合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7包容,而且C8不能离开C7而独立存在。
但这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。
UML与Rose建模第四章 静态视图
• 步骤6.设各类的构造类型(以读者信息类为例)。
HSTC
精练
• 请您根据本节所学的知识解决项目中的任务2。
– 分析:由前面章节对图书馆管理系统中的书籍管理功能可知, 该模块是由书籍信息类、书目类、新增书籍界面类、修改书 籍界面类、删除书籍界面类和书籍管理类6个类组成。 – 请您根据分析使用Rose图绘制类信息。
HSTC
类图的地位和作用
HSTC
类
• 类图由系统中使用的类以及它们之间的关系组成,是构建其它图的基础。分 为长式和短式。 • 类的名称:均用英文大写字母开头,属性及 操作名为小写字母开头。分为简单名称和路 径名称。 • 常见类型有:Char, Boolean, Double, Float, Integer, Object, Short, String等。 • 对象是对象类的实例, 用对象图来描述。 • 属性(attribute):用来描述类的特征,表示需要处理的数据,可以任意多个, 也可没有,属性名优短名词或名词短语构成。 – 属性定义:可见性 属性名:类型=缺省值{约束特性} – 可见性(visibility)表示该属性对类外的元素是否可见。分为: • public(+)private(-) protected(#)package(~)不确定 – 约束特性:可变(changeable):对修改属性的值没有约束。 • 只增(addOnly):对于多重性大于1的属性,可以增加附加值,但一 旦被创建,就不可对值进行消除或改变。 • 冻结(frozen):在初始化对象后,就不允许改变属性值。
HSTC
任务解决-分析
• 图书馆业务功能主要由借书、还书、预约和取消预约四个主要功 能,这四种功能是由三层组成,即:界面、控制和相应的书籍信 息表。因此,本功能模块可以抽象出如下类: – 书实体类(Book):描述书籍信息,书名、作者、出版社、ISBN号等 – 读者实体类(Reader):描述读者信息,读者姓名、年龄、性别和编号 – 借书操作界面类(LendFrame ):描述操作借书的操作界面,边界类 – 还书操作界面类(ReturnFrame) :描述还书的操作界面,边界类
UML类图关系
UML类图关系1、类类图是⾯向对象系统建模中最常⽤和最重要的图,是定义其它图的基础。
类图主要是⽤来显⽰系统中的类、接⼝以及它们之间的静态结构和关系的⼀种静态模型。
类图的3个基本组件:类名、属性、⽅法。
2、泛化generalization(继承)表⽰is-a的关系,是对象之间耦合度最⼤的⼀种关系,⼦类继承⽗类的所有细节。
直接使⽤语⾔中的继承表达。
在类图中使⽤带三⾓箭头的实线表⽰,箭头从⼦类指向⽗类。
3、实现(Realization)在类图中就是接⼝和实现的关系。
在类图中使⽤带三⾓箭头的虚线表⽰,箭头从实现类指向接⼝。
4、依赖(Dependency)对象之间最弱的⼀种关联⽅式,是临时性的关联。
代码中⼀般指由局部变量、函数参数、返回值建⽴的对于其他对象的调⽤关系。
⼀个类调⽤被依赖类中的某些⽅法⽽得以完成这个类的⼀些职责。
在类图使⽤带箭头的虚线表⽰,箭头从使⽤类指向被依赖的类。
5、关联(Association)对象之间⼀种引⽤关系,⽐如客户类与订单类之间的关系。
这种关系通常使⽤类的属性表达。
关联⼜分为⼀般关联、聚合关联与组合关联。
5.1、⼀般关联在类图使⽤带箭头的实线表⽰,箭头从使⽤类指向被关联的类。
可以是单向和双向。
5.2、聚合(Aggregation)表⽰has-a的关系,是⼀种不稳定的包含关系。
较强于⼀般关联,有整体与局部的关系,并且没有了整体,局部也可单独存在。
如公司和员⼯的关系,公司包含员⼯,但如果公司倒闭,员⼯依然可以换公司。
在类图使⽤空⼼的菱形表⽰。
5.3、组合(Composition)表⽰contains-a的关系,是⼀种强烈的包含关系。
组合类负责被组合类的⽣命周期。
是⼀种更强的聚合关系。
部分不能脱离整体存在。
如公司和部门的关系,没有了公司,部门也不能存在了。
在类图使⽤实⼼的菱形表⽰。
5.4、多重性(Multiplicity)通常在关联、聚合、组合中使⽤。
就是代表有多少个关联对象存在。
使⽤数字..星号(数字)表⽰。
ROSE绘制UML图的步骤
一使用ROSE绘制用例图的步骤1.创建用例图一般情况下,用例图是UML中要绘制的第一个图。
在用RATIONAL ROSE创建所用的模型之前,首先要新建一个工程。
新建工程可以点击【File->New】菜单项,选项卡【New】如图所示,用来选择新建模型时采用的摸板。
在此我们暂时不用摸板,选择Cancel。
要建立新的用例图,可以右键单击“Use Case View”节点,在弹出的菜单中选择【New->Use Case Diagram】菜单项,如下图所示。
此时,在“Use Case Diagram”树形结构下多了一个名为“NewDiagram”的图标,这个图标就是新建的用例图标。
右键单击次图标,在弹出菜单中选择【Rename】菜单项,可以为用例图重新命名。
最好为用例图模型取一个有意义的名字。
双击用例图标,出现用例图的编辑区和编辑工具栏,如图所示,左边是用例图的编辑工具栏,右边是用例图的编辑区2.用例图工具栏按纽简介选择一项添加文本框添加注释将图中的元素与注释连接起来包用例参与者关联关系依赖和实例化泛化关系3.工具栏的定制用户可以根据需要自行定制和添加工具栏中的图标,操作方法如下:右键单击工具箱的空白处(注意不要点到图标按纽),在弹出的菜单中选择【Customsize】菜单项后出现“自定义工具栏”对话框4.添加参与者与用例(1)绘制参与者和用例,参与者和用例的绘制方法相同,首先点击工具栏中的图标按纽,然后在编辑区要绘制的地方单击鼠标左键,如下说示显示了一个参与者和一个用例(2)设置用例的属性。
在用例上双击,弹出用例属性设置对话框,如图所示。
在对话框的“General”选项卡中可是设置用例的名称“name”,用例的类型“Stereotype”,用例的层次“rank”,以及对用例的问档说明“documentation”。
(3)设置参与者的属性。
参与者的属性设置跟用例的设置一样。
5.添加参与者与用例的关系参与者与用例的关系为关联关系,要绘制关联关系。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UML类图关系大全(ROSE画图)1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。
在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。
对象引用本身就是有向的,更适合表达我们所讨论的那种关系。
所以这种关系在设计的时候比较少用到,关联一般都是有向的。
使用ROSE 生成的代码是这样的:class C1...{public:C2* theC2;};class C2...{public:C1* theC1;};双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。
单向关联:C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。
没有生命期的依赖。
一般是表示为一种引用。
生成代码如下:class C3...{public:C4* theC4;};class C4...{};单向关联的代码就表现为C3有C4的指针,而C4对C3一无所知。
自身关联(反身关联):自己引用自己,带着一个自己的引用。
代码如下:class C14...{public:C14* theC14;};就是在自己的内部有着一个自身的引用。
2、聚合/组合当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。
聚合:表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。
这句话怎么解,请看下面组合里的解释)。
代码如下:class C9...{public:C10 theC10;};class C10...{};组合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7包容,而且C8不能离开C7而独立存在。
但这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。
但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的,这就可以用聚合了。
在《敏捷开发》中还说到,A组合B,则A需要知道B的生存周期,即可能A负责生成或者释放B,或者A通过某种途径知道B 的生成和释放。
他们的代码如下:class C7...{public:C8 theC8;};class C8...{};可以看到,代码和聚合是一样的。
具体如何区别,可能就只能用语义来区分了。
3、依赖依赖:指C5可能要用到C6的一些方法,也可以这样说,要完成C5里的所有功能,一定要有C6的方法协助才行。
C5依赖于C6的定义,一般是在C5类的头文件中包含了C6的头文件。
ROSE 对依赖关系不产生属性。
注意,要避免双向依赖。
一般来说,不应该存在双向依赖。
ROSE生成的代码如下:// C5.h#include "C6.h"class C5...{// C6.h#include "C5.h"class C6...{};虽然ROSE不生成属性,但在形式上一般是A中的某个方法把B的对象作为参数使用(假设A 依赖于B)。
如下:#include "B.h"class A...{void Func(B &b);}那依赖和聚合\组合、关联等有什么不同呢?关联是类之间的一种关系,例如老师教学生,老公和老婆,水壶装水等就是一种关系。
这种关系是非常明显的,在问题领域中通过分析直接就能得出。
依赖是一种弱关联,只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候(可以说是“uses”了那个类),就可以把这种关系看成是依赖,依赖也可说是一种偶然的关系,而不是必然的关系,就是“我在某个方法中偶然用到了它,但在现实中我和它并没多大关系”。
例如我和锤子,我和锤子本来是没关系的,但在有一次要钉钉子的时候,我用到了它,这就是一种依赖,依赖锤子完成钉钉子这件事情。
组合是一种整体-部分的关系,在问题域中这种关系很明显,直接分析就可以得出的。
例如轮胎是车的一部分,树叶是树的一部分,手脚是身体的一部分这种的关系,非常明显的整体-部分关上述的几种关系(关联、聚合/组合、依赖)在代码中可能以指针、引用、值等的方式在另一个类中出现,不拘于形式,但在逻辑上他们就有以上的区别。
这里还要说明一下,所谓的这些关系只是在某个问题域才有效,离开了这个问题域,可能这些关系就不成立了,例如可能在某个问题域中,我是一个木匠,需要拿着锤子去干活,可能整个问题的描述就是我拿着锤子怎么钉桌子,钉椅子,钉柜子;既然整个问题就是描述这个,我和锤子就不仅是偶然的依赖关系了,我和锤子的关系变得非常的紧密,可能就上升为组合关系(让我突然想起武侠小说的剑不离身,剑亡人亡...)。
这个例子可能有点荒谬,但也是为了说明一个道理,就是关系和类一样,它们都是在一个问题领域中才成立的,离开了这个问题域,他们可能就不复存在了。
4、泛化(继承)泛化关系:如果两个类存在泛化的关系时就使用,例如父和子,动物和老虎,植物和花等。
ROSE生成的代码很简单,如下:#include "C11.h"class C12 : public C11...{};5、这里顺便提一下模板上面的图对应的代码如下:template<int>class C13...{};这里再说一下重复度,其实看完了上面的描述之后,我们应该清楚了各个关系间的关系以及具体对应到代码是怎么样的,所谓的重复度,也只不过是上面的扩展,例如A和B有着“1对多”的重复度,那在A中就有一个列表,保存着B对象的N个引用,就是这样而已。
好了,到这里,已经把上面的类图关系说完了,希望你能有所收获了,我也费了不少工夫啊(画图、生成代码、截图、写到BLOG上,唉,一头大汗)。
不过如果能让你彻底理解UML类图的这些关系,也值得了。
:)++++++++++++++++++++++++++++++++++++++++++++++++++ +++在UML建模中,对类图上出现元素的理解是至关重要的。
开发者必须理解如何将类图上出现的元素转换到Java中。
以java为代表结合网上的一些实例,下面是个人一些基本收集与总结:基本元素符号:1. 类(Classes)类包含3个组成部分。
第一个是Java中定义的类名。
第二个是属性(attributes)。
第三个是该类提供的方法。
属性和操作之前可附加一个可见性修饰符。
加号(+)表示具有公共可见性。
减号(-)表示私有可见性。
#号表示受保护的可见性。
省略这些修饰符表示具有package(包)级别的可见性。
如果属性或操作具有下划线,表明它是静态的。
在操作中,可同时列出它接受的参数,以及返回类型,如下图所示:2. 包(Package)包是一种常规用途的组合机制。
UML中的一个包直接对应于Java中的一个包。
在Java中,一个包可能含有其他包、类或者同时含有这两者。
进行建模时,你通常拥有逻辑性的包,它主要用于对你的模型进行组织。
你还会拥有物理性的包,它直接转换成系统中的Java包。
每个包的名称对这个包进行了惟一性的标识。
3. 接口(Interface)接口是一系列操作的集合,它指定了一个类所提供的服务。
它直接对应于Java中的一个接口类型。
接口既可用下面的那个图标来表示(上面一个圆圈符号,圆圈符号下面是接口名,中间是直线,直线下面是方法名),也可由附加了<<interface>>的一个标准类来表示。
通常,根据接口在类图上的样子,就能知道与其他类的关系。
关系:1. 依赖(Dependency)实体之间一个“使用”关系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例。
更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。
其中包括一个局部变量,对通过方法调用而获得的一个对象的引用(如下例所示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。
也可利用“依赖”来表示包和包之间的关系。
由于包中含有类,所以你可根据那些包中的各个类之间的关系,表示出包和包的关系。
2. 关联(Association)实体之间的一个结构化关系表明对象是相互连接的。
箭头是可选的,它用于指定导航能力。
如果没有箭头,暗示是一种双向的导航能力。
在Java中,关联转换为一个实例作用域的变量,就像图E的“Java”区域所展示的代码那样。
可为一个关联附加其他修饰符。
多重性(Multiplicity)修饰符暗示着实例之间的关系。
在示范代码中,Employee可以有0个或更多的TimeCard对象。
但是,每个TimeCard只从属于单独一个Employee。
3. 聚合(Aggregation)聚合是关联的一种形式,代表两个类之间的整体/局部关系。
聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。
聚合也转换成Java中的一个实例作用域变量。
关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。
聚合还暗示着实例图中不存在回路。
换言之,只能是一种单向关系。
4. 合成(Composition)合成是聚合的一种特殊形式,暗示“局部”在“整体”内部的生存期职责。
合成也是非共享的。
所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局部的存活状态,要么负责将其销毁。
局部不可与其他整体共享。
但是,整体可将所有权转交给另一个对象,后者随即将承担生存期职责。
Employee和TimeCard的关系或许更适合表示成“合成”,而不是表示成“关联”。
5. 泛化(Generalization)泛化表示一个更泛化的元素和一个更具体的元素之间的关系。
泛化是用于对继承进行建模的UML元素。
在Java中,用extends关键字来直接表示这种关系。
6. 实现(Realization)实例关系指定两个实体之间的一个合同。
换言之,一个实体定义一个合同,而另一个实体保证履行该合同。
对Java应用程序进行建模时,实现关系可直接用implements关键字来表示。
像聚合还分为:非共享聚合、共享聚合、复合聚合等。
以及其它内容,下次再补充。