UML类图的各符号含义
UML科普文,一篇文章掌握14种UML图
UML科普⽂,⼀篇⽂章掌握14种UML图前⾔上⼀篇⽂章写了⼀篇建造者模式,其中有⼏个UML类图,有的读者反馈看不懂了,我们今天就来解决⼀哈。
什么是UML?UML是Unified Model Language的缩写,中⽂是统⼀建模语⾔,是由⼀整套图表组成的标准化建模语⾔。
为什么要⽤UML?通过使⽤UML使得在软件开发之前,对整个软件设计有更好的可读性,可理解性,从⽽降低开发风险。
同时,也能⽅便各个开发⼈员之间的交流。
UML提供了极富表达能⼒的建模语⾔,可以让软件开发过程中的不同⼈员分别得到⾃⼰感兴趣的信息。
Page-Jones 在《Fundamental Object-Oriented Design in UML》⼀书中总结了UML的主要⽬的,如下:1. 为⽤户提供现成的、有表现⼒的可视化建模语⾔,以便他们开发和交换有意义的模型。
2. 为核⼼概念提供可扩展性 (Extensibility) 和特殊化 (Specialization) 机制。
3. 独⽴于特定的编程语⾔和开发过程。
4. 为了解建模语⾔提供⼀个正式的基础。
5. ⿎励⾯向对象⼯具市场的发展。
6. ⽀持更⾼层次的开发概念,如协作,框架,模式和组件。
7. 整合最佳的⼯作⽅法 (Best Practices)。
UML图有哪些?UML图分为结构图和⾏为图。
结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。
⾏为图⼜分活动图、⽤例图、状态机图和交互图。
交互图⼜分为序列图、时序图、通讯图、交互概览图。
UML图概览什么是类图?【概念】类图是⼀切⾯向对象⽅法的核⼼建模⼯具。
类图描述了系统中对象的类型以及它们之间存在的各种静态关系。
【⽬的】⽤来表⽰类、接⼝以及它们之间的静态结构和关系。
在类图中,常见的有以下⼏种关系。
泛化(Generalization)【泛化关系】是⼀种继承关系,表⽰⼦类继承⽗类的所有特征和⾏为。
【箭头指向】带三⾓箭头的实线,箭头指向⽗类。
UML类图各符号含义
UML类图各符号含义类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形。
由这些基本的图形进行组合构成了类图的基本符号。
这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程度。
越向右耦合度越高。
其中虚线+箭头是表示即依赖的关系,实线+箭头表示关联的关系,虚线+空心右三角表示implements,实线+空心右三角表示的是泛化,即类的继承关系。
实线+空心菱形表示的是聚合的关系,实线+实心菱形则表示组合的关系。
另外一点是在看类图的时候要注意。
类图的思想其实也还没有脱离面向对象的思想,以某个类为中心,有些线是射入的而有些线是射出的。
射入的线表示的是这个类被哪些类所调用而射出的线则表示该类调用了哪些类,包括泛化,关联,依赖,聚合和组合四种关系。
这类似于离散数学中有关图部分的描述。
1. 类(Class):使用三层矩形框表示。
第一层显示类的名称,如果是抽象类,则就用斜体显示。
第二层是字段和属性。
第三层是类的方法。
注意前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。
2. 接口:使用两层矩形框表示,与类图的区别主要是顶端有<<interface>>显示。
第一行是接口名称。
第二行是接口方法。
3. 继承类(extends):用空心三角形+实线来表示。
4. 实现接口(implements):用空心三角形+虚线来表示5. 关联(Association):用实线箭头来表示,例如:燕子与气候6. 聚合(Aggregation):用空心的菱形+实线箭头来表示聚合:表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分,例如:公司和员工组合(Composition):用实心的菱形+实线箭头来表示组合:部分和整体的关系,并且生命周期是相同的。
例如:人与手7. 依赖(Dependency):用虚线箭头来表示,例如:动物与氧气8. 基数:连线两端的数字表明这一端的类可以有几个实例,比如:一个鸟应该有两只翅膀。
uml组合关系的符号
uml组合关系的符号
UML(统一建模语言)中的组合关系使用一个实心菱形表示。
这个实心菱形位于表示整体的类和表示部分的类之间,整体类的一端连接着菱形,而部分类的一端连接着菱形。
这种关系表示整体对象拥有部分对象,部分对象的生命周期依赖于整体对象。
在UML类图中,组合关系通常用于表示强的关联关系,即部分对象不能独立存在,它们只能作为整体对象的一部分存在。
需要注意的是,组合关系是一种较为强烈的关联关系,它意味着整体对象负责部分对象的创建和销毁。
因此,当整体对象被销毁时,部分对象也会被销毁。
这种关系常常用于描述不同类之间的包含关系,例如汽车和发动机之间的关系,发动机是汽车的一部分,没有汽车发动机就不能单独存在。
总之,在UML中,组合关系的符号是一个实心菱形,它表示了整体对象和部分对象之间的强关联关系,其中部分对象的生命周期依赖于整体对象。
这种关系在类图中常常用于描述整体-部分关系,强调了部分对象不能独立存在,它们只能作为整体对象的一部分存在。
activity diagram中的符号含义
activity diagram中的符号含义Activity diagram是一种UML(Unified Modeling Language)图表,用于描述系统中的活动流程和交互。
在Activity diagram中,使用了一些特定的符号来表示不同的元素和关系。
下面是一些常见的Activity diagram符号及其含义:1. 顺序流(Sequence Flow):用箭头表示活动之间的顺序关系。
箭头从一个活动指向下一个活动,表示活动的执行顺序。
2. 决策(Decision):用菱形表示决策点,根据某个条件的结果来选择不同的路径。
通常用条件语句或布尔表达式来表示条件。
3. 合并(Merge):用菱形表示多个活动的合并点,表示活动的合并。
4. 初始节点(Initial Node):用空心圆表示活动流程的开始点,表示活动的起始处。
5. 终止节点(Final Node):用实心圆表示活动流程的结束点,表示活动的结束处。
6. 活动(Activity):用矩形表示一个活动,表示系统中的一个具体操作。
7. 并发(Fork):用垂直的虚线表示活动的并行执行。
活动可以分成多个并行的子活动。
8. 同步(Join):用垂直的虚线表示并行活动的同步点。
在同步点之前的并行子活动都执行完毕后,才能继续往下执行。
9. 延迟(Delay):用带有延迟时间标识符的小竖线表示活动的延迟执行。
10. 细化(Partition):用水平的虚线将活动分割成不同的分区,表示不同的执行上下文或责任。
11. 行为标记(Action Pin):用小圆圈表示活动中的输入、输出或中间结果。
12. 泳道(Swimlane):用水平矩形表示参与活动的不同角色、系统或组织单元。
每个泳道可以包含多个活动。
这些符号的组合和连接方式可以描述活动之间的顺序、并行、选择和合并。
在Activity diagram中,可以使用不同的颜色或文本标签来更加直观地表示活动的优先级、资源分配或业务规则。
UML类图关系大全(经典)
UML类图关系大全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之关系详解(类图)
UML之关系详解(类图)关联、依赖、聚合、组合、泛化、实现简单解释:关联:连接模型元素及链接实例,用一条实线来表示;依赖:表示一个元素以某种方式依赖于另一个元素,用一条虚线加箭头来表示;聚合:表示整体与部分的关系,用一条实线加空心菱形来表示;组成:表示整体与部分的有一关系,用一条实线加实心菱形来表示;泛化(继承):表示一般与特殊的关系,用一条实线加空心箭头来表示;实现:表示类与接口的关系,用一条虚线加空心箭头来表示;注意:泛化关系和实现关系又统称为一般关系;总之:一般关系表现为继承或实现(is a);关联关系、聚合关系、合成(聚合)/组合关系表现为成员变量(has a),依赖关系表现为函数中的参数(use a);二、类与类之间的关系一般关系:泛化、实现特殊关系:由弱到强是: 没关系 > 依赖 > 关联 > 聚合 > 组合。
UML中讲到类之间的关系:•依赖关系:类之间使用关系•泛化关系:类之间一般/特殊关系•关联关系:对象之间结构关系•实现关系:类中规格说明和实现之间关系三、关系详解(1)聚合与组合首先说明一下不容易混淆的概念:聚合(Aggregation)•一种特殊类型的关联。
•表示整体与部分关系的关联。
•描述了“has a”的关系。
•部分事物的对象可以属于多个聚合对象。
部分事物的对象与聚合对象的生存期无关,删除了它的聚合对象,不一定就随即删除了代表部分事物的对象。
组合(Composite)•聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合。
•成员对象的生命周期取决于组合的生命周期。
•组合不仅控制着成员对象的行为,而且控制着成员对象的创建和解构。
(2)依赖依赖(dependency):指一个模型元素的变化必影响到另一个模型元素的变化。
可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method 方法中使用(使用依赖之参数传递)。
UML的9种图例的定义、用途、画法总结
1UML 的9种图例的总结一、 用例图1、 定义用例定义:用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。
(这是UML 对用例的正式定义,可以这样去理解,用例是参与者想要系统做的事情,用例在画图中用椭圆来表示,椭圆下面附上用例名称)。
用例图定义:由参与者(Actor )、用例(Use Case )以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。
2、 用途用例图(User Case )是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
用例图主要的作用有三个:(1)获取需求;(2)指导测试;(3)还可在整个过程中的其它工作流起到指导作用。
3、 组成元素以及元素之间的关系说明用例图由参与者(Actor )、用例(Use Case )、系统边界(用矩形表示—注明系统名称)、箭头组成,用画图的方法来完成。
参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。
因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。
还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。
系统边界是用来表示正在建模系统的边界。
边界内表示系统的组成部分,边界外表示系统外部。
系统边界在画图中用方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。
因为系统边界的作用有时候不是很明显,所以我个人理解,在画图时可省略。
箭头用来表示参与者和系统通过相互发送信号或消息进行交互的关联关系。
箭头尾部用来表示启动交互的一方,箭头头部用来表示被启动的一方,其中用例总是要由参与者来启动。
元素之间的关系:用例图中包含的元素除了系统边界、角色和用例,另外就是关系。
关系包括用例之间的关系,角色之间的关系,用例和角色之间的关系。
角色之间的关系:角色之间的关系。
UML类图的各符号含义
UML类图的各符号含义类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形。
由这些基本的图形进行组合构成了类图的基本符号。
这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程度。
越向右耦合度越高。
其中虚线+箭头是表示即依赖的关系,实线+箭头表示关联的关系,虚线+空心右三角表示implements,实线+ 空心右三角表示的是泛化,即类的继承关系。
实线+空心菱形表示的是聚合的关系,实线+实心菱形则表示组合的关系。
另外一点是在看类图的时候要注意。
类图的思想其实也还没有脱离面向对象的思想,以某个类为中心,有些线是射入的而有些线是射岀的。
射入的线表示的是这个类被哪些类所调用而射岀的线则表示该类调用了哪些类,包括泛化,关联,依赖,聚合和组合四种关系。
这类似于离散数学中有关图部分的描述。
1. 类(Class ):使用三层矩形框表示。
第一层显示类的名称,如果是抽象类,则就用斜体显示。
第二层是字段和属性。
第三层是类的方法。
注意前面的符号,’表示PUbliC,-表示PriVate, '表示ProteCted 。
2. 接口:使用两层矩形框表示,与类图的区别主要是顶端有VVinteface>>显示。
第一行是接口名称。
第二行是接口方法。
3. 继承类(extends ):用空心三角形+实线来表示。
4. 实现接口( implements ):用空心三角形+虚线来表示5. 关联(ASSOCiatiOn ):用实线箭头来表示,例如:燕子与气候6. 聚合(AggregatiOn ):用空心的菱形+实线箭头来表示聚合:表示一种弱的拥有'关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分,例如:公司和员工组合(Composition ):用实心的菱形+实线箭头来表示组合:部分和整体的关系,并且生命周期是相同的。
例如:人与手7. 依赖(DePendenCy ):用虚线箭头来表示,例如:动物与氧气8. 基数:连线两端的数字表明这一端的类可以有几个实例,比如:一个鸟应该有两只翅膀。
UML类图中箭头和线条的含义和用法
UML类图中箭头和线条的含义和⽤法UML类图中箭头和线条的含义和⽤法在学习UML过程中,你经常会遇到UML类图关系,这⾥就向⼤家介绍⼀下UML箭头、线条代表的意义,相信通过本⽂的介绍你对UML中箭头、线条的意义有更明确的认识。
AD:本节向⼤家学习⼀下UML箭头、线条代表的意义,UML中关系主要有依赖,聚合,合成,泛化和实现等,下⾯就让我们来看⼀下这些关系如何⽤UML箭头和线条来实现。
UML箭头、线条程序关系后⾯的例⼦将针对某个具体⽬的来独⽴地展⽰各种关系。
虽然语法⽆误,但这些例⼦可进⼀步精炼,在它们的有效范围内包括更多的语义。
依赖(Dependency)实体之间⼀个“使⽤”关系暗⽰⼀个实体的规范发⽣变化后,可能影响依赖于它的其他实例(图D)。
更具体地说,它可转换为对不在实例作⽤域内的⼀个类或对象的任何类型的引⽤。
其中包括⼀个局部变量,对通过⽅法调⽤⽽获得的⼀个对象的引⽤(如下例所⽰),或者对⼀个类的静态⽅法的引⽤(同时不存在那个类的⼀个实例)。
也可利⽤“依赖”来表⽰包和包之间的关系。
由于包中含有类,所以你可根据那些包中的各个类之间的关系,表⽰出包和包的关系。
图D关联(Association)实体之间的⼀个结构化关系表明对象是相互连接的。
UML箭头是可选的,它⽤于指定导航能⼒。
如果没有箭头,暗⽰是⼀种双向的导航能⼒。
在Java 中,关联(图E)转换为⼀个实例作⽤域的变量,就像图E的“Java”区域所展⽰的代码那样。
可为⼀个关联附加其他修饰符。
多重性(Multiplicity)修饰符暗⽰着实例之间的关系。
在⽰范代码中,Employee可以有0个或更多的TimeCard对象。
但是,每个 TimeCard只从属于单独⼀个Employee。
图E聚合(Aggregation)聚合(图F)是关联的⼀种形式,UML箭头代表两个类之间的整体/局部关系。
聚合暗⽰着整体在概念上处于⽐局部更⾼的⼀个级别,⽽关联暗⽰两个类在概念上位于相同的级别。
UML类图各符号含义
UML类图各符号含义类图基本符号可拆分为虚线,箭头,实线,空⼼右三⾓,实⼼右三⾓,空⼼菱形和实⼼菱形。
由这些基本的图形进⾏组合构成了类图的基本符号。
这⾥要注意这⼏个符号的顺序,代表了类与类之间关系的耦合程度。
越向右耦合度越⾼。
其中虚线+箭头是表⽰即依赖的关系依赖关系: 是⼀种使⽤的关系, 即⼀个类的实现需要另⼀个类的协助, 所以要尽量不使⽤双向的互相依赖.指C5可能要⽤到C6的⼀些⽅法,也可以这样说,要完成C5⾥的所有功能,⼀定要有C6的⽅法协助才⾏。
C5依赖于C6的定义,⼀般是在C5类的头⽂件中包含了C6的头⽂件。
ROSE对依赖关系不产⽣属性。
形式上⼀般是A中的某个⽅法把B的对象作为参数使⽤(假设A依赖于B)。
实线+箭头表⽰关联的关系关联关系: 是⼀种拥有的关系, 可以分为双向关联, 单向关联和⾃⾝关联.双向关联是指双⽅都拥有对⽅的引⽤, 都可以调⽤对⽅的公共属性和⽅法.单向关联是指只有某⼀⽅拥有另⼀⽅的引⽤, 这样只有拥有对⽅者可以调⽤对⽅的公共属性和⽅法.⾃⾝关联是指拥有⼀个⾃⾝的引⽤.C3->C4:表⽰相识关系,指C3知道C4,C3可以调⽤C4的公共属性和⽅法。
没有⽣命期的依赖。
⼀般是表⽰为⼀种引⽤。
实线+空⼼右三⾓表⽰的是泛化,即类的继承关系。
如果两个类存在泛化的关系时就使⽤,例如⽗和⼦,动物和⽼虎,植物和花等。
泛化关系: 是⼀种继承关系, 表⽰⼀般与特殊的关系, 它指定了⼦类如何特化⽗类的所有特征和⾏为.实现(Realization)实现关系: 是⼀种类与接⼝的关系, 表⽰类是接⼝所有特征和⾏为的实现泛化和实现的区别就在于⼦类是否继承了⽗类的实现, 如有继承则关系为泛化, 反之为实现.实线+空⼼菱形表⽰的是聚合的关系聚合:表⽰C9聚合C10,但是C10可以离开C9⽽独⽴存在(独⽴存在的意思是在某个应⽤的问题域中这个类的存在有意义。
)实线+实⼼菱形则表⽰组合的关系组合(也有⼈称为包容):⼀般是实⼼菱形加实线箭头表⽰,如上图所⽰,表⽰的是C8被C7包容,⽽且C8不能离开C7⽽独⽴存在。
uml关系箭头
UML类图符号各种关系说明以及举例UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等。
∙依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。
uml中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素。
∙泛化(Generalization):通常所说的继承(特殊个体 is kind of 一般个体)关系,不必多解释了。
uml中用带空心箭头的实线线表示Generalization关系,箭头指向一般个体。
∙实现(Realize):元素A定义一个约定,元素B实现这个约定,则B和A的关系是Realize,B realize A。
这个关系最常用于接口。
uml中用空心箭头和虚线表示Realize关系,箭头指向定义约定的元素。
∙关联(Association):元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。
uml中用实线表示Association关系,箭头指向被依赖元素。
∙聚合(Aggregation):关联关系的一种特例,表示部分和整体(整体 hasa 部分)的关系。
uml中用带空心菱形头的实线表示Aggregation关系,菱形头指向整体。
∙组合(Composition):组合是聚合关系的变种,表示元素间更强的组合关系。
如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。
uml中用带实心菱形头的实线表示Composition关系,菱形头指向整体。
其中依赖(Dependency)的关系最弱,而关联(Association),聚合(Aggregation),组合(Composition)表示的关系依次增强。
UML类图符号各种关系说明以及举例
UML类图符号各种关系说明以及举例UML中描述对象和类之间相互关系的⽅式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等。
依赖(Dependency):元素A的变化会影响元素B,但反之不成⽴,那么B和A的关系是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的⽤途,所以被单独描述。
uml中⽤带箭头的虚线表⽰Dependency关系,箭头指向被依赖元素。
泛化(Generalization):通常所说的继承(特殊个体 is kind of ⼀般个体)关系,不必多解释了。
uml中⽤带空⼼箭头的实线线表⽰Generalization关系,箭头指向⼀般个体。
实现(Realize):元素A定义⼀个约定,元素B实现这个约定,则B和A的关系是Realize,B realize A。
这个关系最常⽤于接⼝。
uml 中⽤空⼼箭头和虚线表⽰Realize关系,箭头指向定义约定的元素。
关联(Association):元素间的结构化关系,是⼀种弱关系,被关联的元素间通常可以被独⽴的考虑。
uml中⽤实线表⽰Association 关系,箭头指向被依赖元素。
聚合(Aggregation):关联关系的⼀种特例,表⽰部分和整体(整体 has a 部分)的关系。
uml中⽤带空⼼菱形头的实线表⽰Aggregation关系,菱形头指向整体。
组合(Composition):组合是聚合关系的变种,表⽰元素间更强的组合关系。
如果是组合关系,如果整体被破坏则个体⼀定会被破坏,⽽聚合的个体则可能是被多个整体所共享的,不⼀定会随着某个整体的破坏⽽被破坏。
uml中⽤带实⼼菱形头的实线表⽰Composition关系,菱形头指向整体。
1.1.1 依赖(Dependency):虚线箭头表⽰1、依赖关系也是类与类之间的联结2、依赖总是单向的。
第4章 UML的符号
20
状态: 状态: 历史状态
Recording start H Pause pause Pre-process Sampling
Compress stop Store
21
状态: 状态:并发子状态
22
跃迁
跃迁是两个状态间的一种关系,它表示对象在第一个 状态将执行某些动作,当规定的事件发生或满足规定 的条件时,对象进入第二个状态。 跃迁表示了从活动(或动作)到活动(或动作)的控 制流的传递。 跃迁由以下部分组成:
<<interface>> Interface Interface
Interface
14
接口
接口与类之间的关系
KeyListener
UserInterface MouseListener
HandleEvent
ActionListener
15
包
包是一个用来将模型单元分组的通用机制。 包可以用在任何一个UML图中,但一般多用于 用例图和类图,它就象文件夹一样,可以将模 型元素分组隐藏,从而简化UML图,使得UML 图更易理解。
ClassName attribute : AttributeType = initialValue operation(arg : ArgumentType) : ReturnType
7
类
边界类
边界类处理系统环境与系统内部之间的通信,边界 类为用户或另一个系统(即参与者)提供了接口。 边界类的UML符号表示
<<boundary>> Class Class
Class
8
类
实体类
实体类是模拟必须被存储的信息和其关联行为的类。 实体类的UML符号表示
类的uml基本表示_概述及解释说明
类的uml基本表示概述及解释说明1. 引言概述:在软件开发中,类图是一种常用的UML(Unified Modeling Language,统一建模语言)工具,它以图形化的方式描述了系统中的类、属性、操作和关系等元素。
类图帮助开发人员更好地理解和设计软件系统,提供了一种可视化的方法来展示面向对象的概念、结构和行为。
文章结构:本文将围绕"类的UML基本表示"这一主题展开讨论。
文章分为五个部分:引言、类的UML基本表示、解释说明、示例分析和结论。
引言部分将介绍文章内容和目的,为读者提供一个整体了解。
接下来,我们将详细解释类的UML基本表示,包括定义、类图元素和关系类型等方面内容。
然后,我们将进一步解释说明类的表示方式、属性和操作的表示方式以及继承和关联关系的表示方式。
随后,通过实际案例进行示例分析,展示如何使用类图描述系统设计中的对象关系、进行软件架构分析以及在代码实现中应用类图。
最后,在结论部分对全文进行总结,并探讨类图在实践中的应用价值以及未来发展趋势。
目的:本文旨在帮助读者深入了解类的UML基本表示,并通过解释说明和示例分析让读者掌握如何使用类图进行软件系统设计与开发。
同时,我们也将探讨类图在实践中的应用价值,希望能激发读者对于面向对象建模的兴趣和思考,并展望类图在未来的发展方向。
以上是关于"1. 引言"部分内容的详细描述,希望能够满足您所需。
2. 类的UML基本表示2.1 定义类的UML基本表示是指使用统一建模语言(Unified Modeling Language,UML)来描述和表示系统中的类及其相关信息的方法。
UML是一种图形化的建模语言,常用于软件工程领域,它可以帮助开发人员更好地理解系统设计,并进行系统分析、架构设计和代码实现。
2.2 类图元素在类图中,类被表示为一个矩形框,框内包含类名。
除了类名外,还可以在矩形框内部显示其他关键信息,比如类的属性(Attributes)和操作(Operations)。
UML图 符号的意义
UML图符号的含义类(Class)类(图A)是对象的蓝图,其中包含3个组成部分。
第一个是Java中定义的类名。
第二个是属性(attributes)。
第三个是该类提供的方法。
属性和操作之前可附加一个可见性修饰符。
加号(+)表示具有公共可见性。
减号(-)表示私有可见性。
#号表示受保护的可见性。
省略这些修饰符表示具有package(包)级别的可见性。
如果属性或操作具有下划线,表明它是静态的。
在操作中,可同时列出它接受的参数,以及返回类型,如图A的“Java”区域所示。
图A包(Package)包(图B)是一种常规用途的组合机制。
UML中的一个包直接对应于Java中的一个包。
在Java中,一个包可能含有其他包、类或者同时含有这两者。
进行建模时,你通常拥有逻辑性的包,它主要用于对你的模型进行组织。
你还会拥有物理性的包,它直接转换成系统中的Java包。
每个包的名称对这个包进行了惟一性的标识。
图B接口(Interface)接口(图C)是一系列操作的集合,它指定了一个类所提供的服务。
它直接对应于Java中的一个接口类型。
接口既可用图C的那个图标来表示,也可由附加了<<interface>>的一个标准类来表示。
通常,根据接口在类图上的样子,就能知道与其他类的关系。
图C关系后面的例子将针对某个具体目的来独立地展示各种关系。
虽然语法无误,但这些例子可进一步精炼,在它们的有效范围内包括更多的语义。
依赖(Dependency)实体之间一个“使用”关系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例(图D)。
更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。
其中包括一个局部变量,对通过方法调用而获得的一个对象的引用(如下例所示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。
也可利用“依赖”来表示包和包之间的关系。
由于包中含有类,所以你可根据那些包中的各个类之间的关系,表示出包和包的关系。
UML关系类图
UML关系类图在UML类图中,常见的有以下⼏种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)1. 泛化(Generalization)【泛化关系】:是⼀种继承关系,表⽰⼀般与特殊的关系,它指定了⼦类如何特化⽗类的所有特征和⾏为。
例如:⽼虎是动物的⼀种,即有⽼虎的特性也有动物的共性。
【箭头指向】:带三⾓箭头的实线,箭头指向⽗类2. 实现(Realization)【实现关系】:是⼀种类与接⼝的关系,表⽰类是接⼝所有特征和⾏为的实现.【箭头指向】:带三⾓箭头的虚线,箭头指向接⼝3. 关联(Association)【关联关系】:是⼀种拥有的关系,它使⼀个类知道另⼀个类的属性和⽅法;如:⽼师与学⽣,丈夫与妻⼦关联可以是双向的,也可以是单向的。
双向的关联可以有两个箭头或者没有箭头,单向的关联有⼀个箭头。
【代码体现】:成员变量【箭头及指向】:带普通箭头的实⼼线,指向被拥有者上图中,⽼师与学⽣是双向关联,⽼师有多名学⽣,学⽣也可能有多名⽼师。
但学⽣与某课程间的关系为单向关联,⼀名学⽣可能要上多门课程,课程是个抽象的东西他不拥有学⽣。
下图为⾃⾝关联:4. 聚合(Aggregation)【聚合关系】:是整体与部分的关系,且部分可以离开整体⽽单独存在。
如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合关系是关联关系的⼀种,是强的关联关系;关联和聚合在语法上⽆法区分,必须考察具体的逻辑关系。
【代码体现】:成员变量【箭头及指向】:带空⼼菱形的实⼼线,菱形指向整体5. 组合(Composition)【组合关系】:是整体与部分的关系,但部分不能离开整体⽽单独存在。
如公司和部门是整体和部分的关系,没有公司就不存在部门。
组合关系是关联关系的⼀种,是⽐聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的⽣命周期。
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角色与它本身相关。
当一个类关联到它本身时,这并不意味着类的实例与它本身相关,而是类的一个实例与类的另一个实例相关。
软件工程12-1UML类图
生成代码如下: 代码如下: class C9 { public C10 theC10; };
class C10 { }; 可以看到,代码和聚合是一样的。具体如何区别,可能 就只能用语义来区分了。
3、依赖
C5
……………………………
C6
依赖: 指C5可能要用到C6的一些方法,也可以这样说,要完成 C5里的所有功能,一定要有C6的方法协助才行。C5依 赖于C6的定义。注意,要避免双向依赖。一般来说,不 应该存在双向依赖。
使用C# 生成的代码是这样的: class C1 { public C2 theC2; }; class C2 { public C1 theC1; }; 双向关联在代码的表现为双方都拥有对方的一个指针, 当然也可以是引用或者是值。
单向关联:
C3 C4
C3->C4:表示相识关系,指C3知道C4,C3可以调用C4 的公共属性和方法。一般是表示为一种引用。
关联是类之间的一种关系例如老师教学生这种关系是非常明显的在问题领域中通过分析直接就能得依赖是一种弱关联只要一个类用到另一个类但是和另一个类的关系不是太明显的时候可以说是uses了那个类就可以把这种关系看成是依赖依赖也可说是一种偶然的关系而不是必然的关系就是我在某个方法中偶然用到了它但在现实中我和它并没多大关系
1、关联 C1(类名) F(字段) M(方法)
C2 (类名) F2(字段) M2(方法)
双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公 共属性和方法。 在GOF的设计模式书上是这样描述的:虽然在分析阶段 这种关系是适用的,但我们觉得它对于描述设计模式内的 类关系来说显得太抽象了,因为在设计阶段关联关系必须 被映射为对象引用或指针。对象引用本身就是有向的,更 适合表达我们所讨论的那种关系。所以这种关系在设计的 时候比较少用到,关联一般都是有向的。
uml类图总结
6. 依赖(Dependency) 【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使 用双向的互相依赖. 【代码表现】:局部变量、方法的参数或者对静态方法的调用 【箭头及指向】:带箭头的虚线,指向被使用者
各种关系的强弱顺序: 泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖 下面这张UML图,比较形象地展示了各种类图关系:
UML类图中,常见的有以下几种关系: 泛化(Generaliza���on), 实现(Realiza���on),关联 (Associa���on),聚合(Aggrega���on)பைடு நூலகம்组合(Composi���on),依赖(Dependency) 1. 泛化(Generaliza���on) 【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所 有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。 【箭头指向】:带三角箭头的实线,箭头指向父类
2. 实现(Realiza���on) 【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现. 【箭头指向】:带三角箭头的虚线,箭头指向接口
3. 关联(Associa���on) 【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学 生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有 箭头,单向的关联有一个箭头。 【代码体现】:成员变量 【箭头及指向】:带普通箭头的实心线,指向被拥有者
【箭头及指向】:带空心菱形的实心线,菱形指向整体
5. 组合(Composi���on) 【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整 体和部分的关系,没有公司就不存在部门。
UML中的类的可见性修饰符解析
UML中的类的可见性修饰符解析在软件开发中,UML(统一建模语言)是一种常用的图形化建模语言,用于描述和设计软件系统的结构、行为和交互。
在UML中,类是一种重要的概念,用于表示对象的属性和行为。
而类的可见性修饰符则决定了类的成员(属性和方法)对外部的可见程度。
本文将对UML中的类的可见性修饰符进行解析。
1. 公有(Public)可见性修饰符公有可见性修饰符表示类的成员对外部完全可见,任何类都可以访问和使用这些成员。
在UML中,用"+"符号表示公有可见性修饰符。
例如,如果一个类的成员被标记为公有,那么其他类可以直接访问该成员,无需任何限制。
2. 私有(Private)可见性修饰符私有可见性修饰符表示类的成员对外部完全不可见,只有类本身内部可以访问和使用这些成员。
在UML中,用"-"符号表示私有可见性修饰符。
例如,如果一个类的成员被标记为私有,那么其他类无法直接访问该成员,只有该类内部的其他成员可以访问。
3. 受保护(Protected)可见性修饰符受保护可见性修饰符表示类的成员对外部不可见,但对于该类的子类是可见的。
在UML中,用"#"符号表示受保护可见性修饰符。
例如,如果一个类的成员被标记为受保护,那么其他类无法直接访问该成员,但该类的子类可以访问。
4. 包(Package)可见性修饰符包可见性修饰符表示类的成员对同一包内的其他类可见,但对于不同包的类是不可见的。
在UML中,用"~"符号表示包可见性修饰符。
例如,如果一个类的成员被标记为包可见性,那么同一包内的其他类可以访问该成员,但不同包的类无法访问。
类的可见性修饰符在软件开发中起着重要的作用。
通过合理使用可见性修饰符,可以控制类的成员对外部的可见程度,提高代码的封装性和安全性。
例如,将敏感信息的成员标记为私有,可以防止外部类直接访问和修改这些信息,从而保护数据的安全性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UML类图的各符号含义
类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形。
由这些基本的图形进行组合构成了类图的基本符号。
这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程
度。
越向右耦合度越高。
其中虚线+箭头是表示即依赖的关系,实线+箭头表示关联的关系,虚线+空心右三角表示implements,实线+空心右三角表示的是泛化,即类的继承关系。
实线+空心菱形表示的是聚合的关系,实线+实心菱形则表示
组合的关系。
另外一点是在看类图的时候要注意。
类图的思想其实也还没有脱离面向对象的思想,以某个类为中心,有些线是射入的而有些线是射出的。
射入的线表示的是这个类被哪些类所调用而射出的线则表示该类调用了哪些类,包括泛化,关联,依赖,聚合和组合四种关系。
这类似于离散数学中有关图部分的描述。
1. 类(Class):使用三层矩形框表示。
第一层显示类的名称,如果是抽象类,则就用斜体显示。
第二层是字段和属性。
第三层是类的方法。
注意前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。
2. 接口:使用两层矩形框表示,与类图的区别主要是顶端有<<interface>>显示。
第一行是接口名称。
第二行是接口方法。
3. 继承类(extends):用空心三角形+实线来表示。
4. 实现接口(implements):用空心三角形+虚线来表示
5. 关联(Association):用实线箭头来表示,例如:燕子与气候
6. 聚合(Aggregation):用空心的菱形+实线箭头来表示
聚合:表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分,例如:
公司和员工
组合(Composition):用实心的菱形+实线箭头来表示
组合:部分和整体的关系,并且生命周期是相同的。
例如:人与手
7. 依赖(Dependency):用虚线箭头来表示,例如:动物与氧气
8. 基数:连线两端的数字表明这一端的类可以有几个实例,比如:一个鸟应该有两只翅膀。
如果一个类
可能有无数个实例,则就用‘n’来表示。
关联、聚合、组合是有基数的。
类之间的关系
UML把类之间的关系分为以下5种.
● 关联:类A与类B的实例之间存在特定的对应关系
● 依赖:类A访问类B提供的服务
● 聚集:类A为整体类,类B为局部类,类A的对象由类B的对象组合而成
● 泛化:类A继承类B
● 实现:类A实现了B接口
关联(Association)
关联指的是类之间的特定对应关系,在UML中用带实线的箭头表示。
按照类之间的数量对比,关联
可以分为以下三种:
● 一对一关联
● 一对多关联
● 多对多关联
注意:关联还要以分为单向关联和双向关联
依赖(Dependency)
依赖指的是类之间的调用关系,在UML中用带虚线的箭头表示。
如果类A访问类B 的属性或者方法,
或者类A负责实例化类B,那么可以说类A依赖类B。
和关联关系不同,无须在类A 中定义类B类型的属性。
聚集(Aggregation)
聚集指的是整体与部分之间的关系,在UML中用带实线的菱形箭头表示。
聚集关系还可以分为两种类型:
● 被聚集的子系统允许被拆卸和替换,这是普通聚集关系。
● 被聚集的子系统不允许被拆卸和替换,这种聚集称为强聚集关系,或者组成关系。
注:强聚集(组成)可用带实线的实心菱形箭头表示。
泛化(Generalization)
泛化指的是类之间的继承关系,在UML中用带实线的三角形箭头表示。
实现(Realization)
实现指的是类与接口之间的关系,在UML中用带虚线的三角形箭头表示。
以下是GOF设计模式中的描述:
箭头和三角表示子类关系。
虚箭头线表示一个类实例化另一个类的对象,箭头指向被实例化的对象的类。
普通的箭头线表示相识(acquaintance也叫关联或者引用),意味着一个对象仅仅知道另一个对象。
相识的对象可能请求彼此的操作,但他们不为对方负责,它只标示了对象间较松散的耦合关系。
尾部带有菱形的箭头线表示聚合(aggregation),意味着一个对象拥有另一个对象或者对另一个对象负责。
一般我们称一个对象包含另一个对象,或者是另一个对象的一部分。
聚合意味着聚合对象和其所有者具有相同的生命周期。
抽象类名以斜体表示,抽象操作也以斜体表示。
图中可以包括实现操作的伪代码,代码将出现在带有褶角的框中,并用虚线将该褶角框与代码所实现的操作相连。
图一:
此实线箭头表示, 继承, 从一个非接口类的继承.
图二:
那条连线表示双向关联:
看左边, Flight扮演assignedFights角色, 有0到1个Plane跟他关联(一个航班要么取消了没有飞机,要么只能对应一架飞机)
看右边, Plane扮演着assignedPlane角色, 有0到多个Flight跟他关联(一个飞机可以参与多个航班, 也可以停在仓库里面烂掉)
图三:
那条连线表示单向关联:
基本的意义跟上面的是一样的, 唯一不同的是, 右边的类对左边的类是一无所知的. 图四:
那个大的包围的框叫软件包, 名字为Account, 就一些可以归类的类包装起来.
图五:
如此虚线的箭头表示实现一个接口.
图六:
水平的连线还是表示上面所说的关联, 但从关联连线中引伸出来的虚线, 这意味当Flight类的一个实例关联到FrequentFlyer 类的一个实例时,将会产生MileageCredit 类的一个实例.
图七:
带菱形的箭头表示基本聚合, 由上图知道, Wheel类扮演wheels角色, 聚合4个到Car对象里面去,
空心的菱形表示Wheel对象并不随Car的创建而创建,销毁而销毁.
图八:
意义和上面类似, 唯一不同的是, 实心菱形表示Department对象随Company对象的创建而创建,销毁而销毁.
图九:
表示反射关联, 显示一个Employee类如何通过manager / manages角色与它本身相关。
当一个类关联到它本身时,这并不意味着类的实例与它本身相关,而是类的一个实例与类的另一个实例相关。