首先,这篇文章是转的,点击查看原文。原文中引用了百度的图片,所以后半部分图挂了,这里重新把图传到了iteye供大家参考
巩固一下UML的定义:
Grady Booch的描述对象集合和它们之间的关系的方法。James Rumbaugh的对象建模技术(OMT)。Ivar Jacobson的包括用例方法的方式。还有其他一些想法也对UML起到了作用,UML是Booch, Rumbaugh, Jacobson。UML已经被对象管理组织(OMG)接受为标准,这个组织还制定了通用对象请求代理体系结构(CORBA),是分布式对象编程行业的领头羊。计算机辅助软件工程(CASE)产品的供应商也支持UML,并且它基本上已经被所有的软件开发产品制造商所认可,这其中包括IBM和微软(用于它的VB环境)。
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 )。更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个局部变量,对通过方法调用而获得的一个对象的引用(如下例所示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。也可利用“依赖”来表示包和包之间的关系。由于包中含有类,所以你可根据那些包中的各个类之间的关系,表示出包和包的关系。
图D
关联(Association)
实体之间的一个结构化关系表明对象是相互连接的。箭头是可选的,它用于指定导航能力。如果没有箭头,暗示是一种双向的导航能力。在Java中,关联(图E )转换为一个实例作用域的变量,就像图E的“Java”区域所展示的代码那样。可为一个关联附加其他修饰符。多重性(Multiplicity)修饰符暗示着实例之间的关系。在示范代码中,Employee可以有0个或更多的TimeCard对象。但是,每个TimeCard只从属于单独一个Employee。
图E
聚合(Aggregation)
聚合(图F )是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。聚合也转换成Java中的一个实例作用域变量。
关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。
图F
合成(Composition)
合成 (图G )是聚合的一种特殊形式,暗示“局部”在“整体”内部的生存期职责。合成也是非共享的。所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局部的存活状态,要么负责将其销毁。局部不可与其他整体共享。但是,整体可将所有权转交给另一个对象,后者随即将承担生存期职责。
Employee和TimeCard的关系或许更适合表示成“合成”,而不是表示成“关联”。
图G
泛化(Generalization)
泛化(图H )表示一个更泛化的元素和一个更具体的元素之间的关系。泛化是用于对继承进行建模的UML元素。在Java中,用extends 关键字来直接表示这种关系。
图H
实现(Realization)
实例(图I )关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。对Java应用程序进行建模时,实现关系可直接用implements 关键字来表示。
图I
类之间的关系
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角色与它本身相关。当一个类关联到它本身时,这并不意味着类的实例与它本身相关,而是类的一个实例与类的另一个实例相关。
相关推荐
下面我们将详细解释UML类图中各符号的含义。 1. 类(Class):在UML类图中,类通常用三层矩形表示。第一层写类的名称,如果类是抽象的,则名称以斜体显示。第二层列出类的属性(fields)和字段,第三层列出类的方法...
本文档将对一些常见的UML符号进行详细介绍,并解释它们的具体含义和应用场景。 #### 二、UML符号详解 ##### 1. 开始和结束的标志 **符号**: 椭圆形 **含义**: 表示一个过程的开始或结束。通常在椭圆形内会标注...
UML符号是UML中用于描绘系统组件、关系和行为的关键元素,帮助开发者、分析师和项目团队理解系统的设计和结构。以下是一些常见的UML符号及其详细解释: 1. Package:包是一种组织机制,用于将相关的模型元素(如类...
本文将详细解析UML类图中各符号的含义。 首先,类图的基本符号包括虚线、箭头、实线、空心右三角、实心右三角、空心菱形和实心菱形。这些符号组合起来表示类与类之间的关系,耦合度从左到右逐渐增强。 1. **依赖...
### UML类图符号及其含义详解 #### 一、概述 统一建模语言(UML)是一种广泛应用于软件工程领域的图形化规范,用于描述系统的结构和行为。UML类图是其中最重要的组成部分之一,用于可视化地展示系统中的类、接口以及...
### UML符号详解 #### 一、包 (Package) **符号**:[pic] **说明**:包是用来聚集和组织模型中的一个部分(Use Case,类等)。在面向对象的设计中,通过使用包来管理复杂的系统结构是非常重要的。包不仅有助于...
四、图的含义分析 1. 用例图表示参与者(如学生)能够使用系统执行的各种操作(用例)。 2. 类图揭示了不同实体(如班级、教师和教材)之间的静态结构和关系,如继承或关联。 3. 序列图描绘了系统中一系列事件的顺序...
1. **UML图类型全面**:包括类图、对象图、用例图、序列图、协作图、状态图、活动图等,覆盖了UML的主要图表类型,满足各种建模需求。 2. **图形化拖拽编辑**:用户可以通过直观的拖拽方式添加和连接元素,减少手动...
在设计模式中,这些符号也有特殊含义,如继承、接口实现、关联和聚合等。例如,虚线箭头表示类实例化,实线箭头表示相识或引用,带有菱形的箭头表示聚合或组成关系。抽象类和操作通常以斜体显示。通过这种方式,UML...
UML表示法定义了UML符号的表示方式,为开发者或开发工具提供了标准,以便使用图形符号和文本语法对系统建模。UML图形则直观地展示了UML模型中事物和关系的可视化表示。 UML模型由四种基本事物构成:构件事物、行为...
学习UML,首先要理解各种图形的含义和使用场景,然后通过实践练习绘制和解读UML图。同时,熟悉RUP或其他软件开发框架,可以更好地利用UML进行实际项目开发。这份"UML建模ppt资料"应包含详细的解释和实例,有助于初学...
- **简答题**:要求解释UML元素的含义或用途,如“简述UML中的关联和依赖有何区别?” - **分析设计题**:可能要求绘制UML图,或者根据业务场景分析应使用何种UML视图。 3. **UML图例子** - **UML图例子.chm**:...
这可能是一份详细的UML图例文档,包含了所有UML图形符号及其含义的说明。通过学习图例,读者能够准确理解和绘制各种UML图表,提升建模能力。 5. **Java虚拟机**: 虽然与UML直接关系不大,但Java虚拟机(JVM)的...
UML的图形符号包括矩形(代表类或组件)、椭圆(代表用例)、箭头(表示关系)、泳道(在协作图中表示角色)等,每个符号都有其特定的含义。 **3. UML在软件开发中的应用** - **需求分析**:用例图和活动图帮助...
8. **UML的语法和语义**:书中会详细介绍UML符号的含义和使用规则,确保读者能够正确地绘制和理解UML图表。 9. **UML在敏捷开发中的应用**:随着敏捷方法的普及,UML如何适应快速迭代和迭代开发的环境也是书中可能...
符号在现在,组件图符号集使它成为最容易画的 UML 图之一。在 UML 1.4 中,用一个大方块,并且在它的左边有两个凸出的小方块,来表示组件。在 UML 2 中,一个组件被画成堆积着可选择小块的一个立着的长方形。组件...
这些模板包含了UML2.2的符号库和样式,使得用户能够轻松绘制出各种UML图,如用例图(描述用户与系统交互)、类图(表示类之间的关系)、序列图(展示对象间的时间顺序)等。 3. **模板使用指南**: - `UML 2.2 ...
通过学习这个PPT,你可以深入理解每个图的绘制规则、符号含义以及如何根据项目需求选择合适的图进行建模。熟练掌握UML图能够提高软件开发过程中的沟通效率,减少误解,确保项目的顺利进行。无论你是初学者还是经验...
8. **UML的符号和约定**:了解每个图中的各种形状、连接线、注释等元素的含义,是理解和创建UML模型的基础。 9. **UML在软件开发中的应用**:UML可以应用于需求分析、系统设计、编码指导、测试计划等多个阶段,是...
1. **UML图的种类**:UML包含多种类型的图,如用例图、类图、对象图、序列图、协作图、状态图、活动图、组件图和部署图等。每种图都有其特定的用途,如用例图用于描绘用户与系统之间的交互,类图则展示类与类之间的...