精华内容
下载资源
问答
  • 统一建模语言

    2013-12-16 11:20:59
    统一建模语言
  • 统一建模语言统一建模语言统一建模语言统一建模语言统一建模语言统一建模语言统一建模语言统一建模语言
  • 统一建模语言教程,UML教程.zip UML是软件设计中的必修技能之一,不会UML的程序员不可能是架构师
  • UML 统一建模语言

    千次阅读 多人点赞 2020-02-29 19:34:42
    UML 统一建模语言,被广泛认可的图形化建模标准,它可以帮助开发人员在面向对象设计(OOAD)过程中标识元素、构建模块、分析过程,并可以通过文档来注明系统中的重要细节 ...

    1. UML是什么

    UML,统一建模语言,是被广泛认可的图形化建模标准,它可以帮助开发人员在面向对象设计(OOAD)过程中标识元素、构建模块、分析过程,并可以通过文档来注明系统中的重要细节。

    2. UML的适用领域

    UM适用于系统开发过程中从需求规格描述到系统完成后测试的不同阶段。

    • 需求分析。用例图描写叙述需求,用类图描写叙述静态结构,采用顺序图、合作图、活动图、状态图描述动态行为
    • 设计。采用类图、包,对类的接口进行设计
    • 编码。将类用某现象对象语言实现
    • 测试。按类图、测试用例图对软件进行测试
    • 部署。按照部署图进行部署

    3. UML中的四种主要关系

    1. 关联关系(Association)
    2. 依赖关系(Dependency)
    3. 泛化(一般化)关系(Generalization)
      泛化指的是类之间的继承关系
    4. 聚集关系(Aggregation)
      聚集指的是整体与部分之间的关系,在实体域对象之间很常见

    4. UML中的两类九种图

    静态模型图:描述系统的结构

    1、 类图;2、对象图;3、组件图;4、部署图

    动态模型图:描述系统的行为
    1、用例图;2、活动图;3、时序图;4、协作图;5、状态图
    在这里插入图片描述

    4.1. 用例图

    用例图是从软件需求分析到最终实现的第一步,它是从客户的角度来描述系统功能,让不懂技术细节的客户能够直观的理解系统的功能。

    所谓用例,就是系统的一个功能,如下例所示,该用例图显示了该系统有两个参与者(客户、管理员)和三个用例(登录、查询、修改)。用例图中的箭线则是参与者与用例之间的关系,下图中的关系表示了:客户可以使用登录和程序用例,管理员可以使用登录、程序和修改用例。
    在这里插入图片描述

    一张用例图通常包含三个基本组件:

    1. 参与者(Actor)
      与系统打交道的人或其他系统即使用该系统的人或事物。在UML中参与者用人形图标表示
    2. 用例(Use Case)
      代表系统的某项完整的功能。在UML中使用一个椭圆来表示
    3. 关系
      定义用例之间的关系。在UML中使用各种不同样式的线条来表示。虽然关系有三种不同的类型(包含关系 Include,扩展关系 Extend,泛化关系 Generalization),但它们的共性都是从现有的用例中抽取出共同的信息,组成一个可重用的单独用例。

    4.1.1. 用例与用例之间的关系

    4.1.1.1 包含关系

    将一组跨越多个用例的相似功能包含用例进行封装,以便多个基用例进行复用。包含关系可以用编程时的函数调用来类比。在UML中包含关系用虚线箭头加“<<include>>",箭头指向被包含的用例。

    如下图所示,该用例图中的“查询”、“登录”用例都涉及查询数据库,因此封装一个“数据库查询操作”用例供“查询”和“登录”两个用例包含;“修改”、“删除”用例都涉及修改数据库,因此封装一个“数据库修改操作”用例供“修改”和“删除”用例包含
    在这里插入图片描述

    4.1.1.2. 扩展关系

    将基用例中一段相对独立的非必需功能扩展用例进行封装,从而使基用例行为更简练和流程更集中。扩展用例为基用例添加新的行为。在UML中扩展关系用虚线箭头加"<<extend>>",箭头指向被扩展的用例。

    如下图所示,该用例图中“查询”用例是基本用例,而“打印”和“导出”用例是相对独立的非必需功能,也即,客户在查询时可以选择打印和导出,也可以不选择打印和导出。因此我们将“打印”和“导出”用例视为“查询”用例的扩展用例
    在这里插入图片描述

    4.1.1.3. 泛化关系(继承关系)

    泛化关系可以类比面向对象语言中的类继承来理解。即子用例和父用例相似,但表现出更特别的行为,子用例将继承父用例的所有结构、行为和关系,可以使用父用例的一段行为,也可以重写它。在UML中,泛化关系用一个实线空心三角箭头从子用例指向父用例。

    如下图所示,参与者“管理员”可以使用“客户注册审批”用例和“客户注销审批”用例,这两个用例都可以由一个父用例泛化而来,因此将“客户注册审批”用例、“客户注销审批”用例与“审批”用例之间的关系称作泛化关系
    在这里插入图片描述

    4.1.2. 用例规约

    所谓用例规约,就是用例的使用文档,可以当做测试用例或者用作用户说明书,通常用一个表格来展示

    一个典型的用例规约结构如下表所示

    XXX系统XXX功能用例规约
    用例名称
    参与者
    简单描述
    前置条件
    主要事件流参与者动作系统的响应结果
    次要事件流触发的动作系统的响应结果
    后置条件

    主要事件流描述的是实现功能的过程中,参与者和系统之间的交互过程;系统响应结果讲的是最终展示给用户的结果,而不是处理数据的细节。

    次要事件流起源于主事件流某个步骤,矫正后,又会回到主事件流的某个步骤

    例如,后台管理系统用户登录功能用例规约

    后台管理系统用户登录功能用例规约
    用例名称用户登录
    参与者系统所有用户
    简单描述系统用户输入账号等信息,系统验证用户身份
    前置条件该用户已经注册
    主要事件流 1、系统用户点击“登录”按钮
    2、系统随机生成一个验证码,显示“登录表单”页面
    3、系统用户在表单中填写数据:账号,密码,验证码,勾选记住我,提交
    4、系统检查验证码是否正确,系统检查账号是否存在和检查密码是否一致,账号存在并且密码正确,显示登录成功
    次要事件流 4A、第4步,检查到验证码不一致
    4A1、系统发现验证码不一致,重新显示“登录表单”页面,原来填写的账号等数据需要显示,显示错误信息“验证码不一致”
    4A2、处理流程重回主事件流3
    4B、在事件流第4步中:账号不存在,密码正确;账号存在,密码错误;账号不存在且密码错误
    4B1、 系统发现上述问题,重新显示“登录表单”页面,原来填写的账号等数据需要显示,显示错误信息“账号不存在或者密码错误”
    4B2、处理流程重回主事件流3
    后置条件系统暂时保存用户身份信息

    4.2. 类图

    类图是面向对象系统建模中最常用的图,是定义其他图的基础,主要是用来显示系统中的类、接口以及它们之间的关系。

    其包含的主要元素有类、接口和关系(关联关系、泛化关系、依赖关系、实现关系)。在类图中也可以包含注释和约束。

    4.2.1. 类图的图符

    图符 名称 描述
    在这里插入图片描述 三栏从上往下依次用来表示类的名称、属性和操作
    在这里插入图片描述在这里插入图片描述 接口 接口表示对类操作的抽象(两种表示形式含义一致)
    在这里插入图片描述 包用来表示一个类图的集合
    在这里插入图片描述 对象 对象表示类的一个实例
    在这里插入图片描述 关联 关联用于表示类之间的联系,其特殊形式有:组成关联和聚集关联
    在这里插入图片描述 组成关联 组成关联表示类之间是整体与部分的关系,且整体与部分共存亡
    在这里插入图片描述 聚集关联 聚集关联表示类之间是整体与部分的关系
    在这里插入图片描述 链接 链接用于表示类之间关联关系的一个实例
    在这里插入图片描述 泛化关系 泛化关系(继承关系)用来表示一般元素与抽象元素之间的分类关系
    在这里插入图片描述 依赖关系 依赖关系用来说明一个类或包的变化会引起依赖其的类或包的变化
    在这里插入图片描述 注释体 注释体用于对UML实体进行文字说明
    在这里插入图片描述 注释链接 注释链接用于链接注释体和其注释的UML实体

    4.2.2. 类的表示

    类是类图的主要组件,由“类名”、“属性”和“方法”组成,用三联矩阵表示

    数据类型

    符号 表示
    + public
    - private
    # protected
    ~ package(可以理解为静态类型)

    如下例所示类图:
    在这里插入图片描述
    用Java代码可以实现为:

    package com.test.test;
    
    public class Person {
    	public int id;
    	protected String name;
    	private int age;
    	static String address;
    	 
    	public String getName(int id) {return null;}
    	 
    	public void show() {}
    	
    }
    

    4.2.3. 类与类之间的关系

    4.2.3.1. 泛化关系(继承关系)

    在UML中,泛化关系用来表示类与类接口与接口之间的继承关系。在UML中泛化关系用一条实线空心箭头由子类指向父类。

    例如下面类图所示,“猴子”类和“老虎”类继承于“动物”类,也可以说“动物”类是“猴子”类和“老虎”类的父类
    在这里插入图片描述

    4.2.3.2. 实现关系

    在UML中,实现关系用来表示类与接口之间的实现关系,用一条虛线空心箭头由子类指向父类。

    例如下面类图所示,“UserDaoImpl”类实现了“UserDao”接口
    在这里插入图片描述

    4.2.3.3. 依赖关系

    如果一个实体的改动会导致另一个实体也发生改变,则称两个类之间存在依赖。依赖指的是类与类之间的调用关系,表现为成员变量方法的参数或者对静态方法的调用。员工使用电脑进行工作。在UML;中用带虚线的箭头表示。

    例如下面类图所示,“飞机”类依赖“引擎”类,当“引擎”类发生改变时飞机类也会发生改变,用现实生活中的话来说,就是引擎的属性以及工作状态会影响飞机飞行的属性和工作状态。
    在这里插入图片描述

    4.2.3.4. 关联关系

    关联关系是一种拥有关系,它使一个类知道另一个类的属性和方法,例如老师与学生、学校与学生关联。通过成员变量体现。

    用带普通箭头的实心线,指向被拥有者。单向的关联有一个箭头,双向的关联可以有两个箭头或者没有箭头。

    例如下面类图所示,学校与学生是一对多的关系,因此关联关系从学校指向学生;老师与学生是多对多的关系,因此关联关系是双向的。
    在这里插入图片描述

    关联关系的多重性
    关联关系的多重性是指有多少对象可以参与该关联,多重性可以用来表达一个取值范围、特定值或无限定的范围。

    表示法 作用
    0 表示0个对象
    0…1 表示0或1个对象
    0…n 表示0到n个对象
    1…n 表示1到n个对象
    1 表示1个对象
    n 表示n个对象
    * 表示许多个对象

    例如下面的类图,表示许多个老师与许多个学生相关联
    在这里插入图片描述

    4.2.3.5. 聚合关系

    聚合关系是关联关系的一种,关联和聚合在语法上一致,只通过具体的逻辑关系进行区分。

    聚合关系是整体与部分的关系,且部分可以离开整体而单独存在。在UML图中用带空心菱形的实心线,菱形指向整体。

    例如下面的类图中,“电脑”类和“磁盘”类是整体和部分的关系,“磁盘”类离开“电脑”类仍然可以存在(移动硬盘)。
    在这里插入图片描述

    4.2.3.6. 组合关系

    是整体与部分的关系,但部分不能离开整体而单独存在。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象生命周期。在UML图中用带实心菱形的实线,菱形指向整体

    例如下面的类图中,“公司”类和“部门”是整体和部分的关系,没有“公司”类就不存在“部门”类。
    在这里插入图片描述

    4.2.4. 类图的正向工程和逆向工程

    正向工程:根据类图类生成Java代码。通常先分析、设计、产生UML图,再根据UML图编写Java代码。

    逆向工程:在已有Java代码的情况下,根据Java代码来生成相应的类图。

    绘制类图可以在软件设计阶段帮助开发者从静态的角度去理解系统应该包含哪些类,以及类之间关系。实际上,很少把类图画得详细到可以通过正向工程来直接生成Java代码。绘制类图时,通常只会把那些最关键的属性和方法描述出来。

    4.3. 对象图

    对象图是类图的一个实例,用于显示系统执行时的一个快照,即在某一个时间点上系统的状态。对象图用带下划线的对象名称来表示对象。

    例如下面的图中,“本田汽车:汽车”对象就是“汽车”类的一个实例
    在这里插入图片描述

    4.4. 组件图

    组件图提供系统的物理视图(静态实现)。它的用途是显示系统中的软件其他软件组件(例如库函数)的依赖关系

    对于现代的大型应用程序而言,通常不只是单独一个类或单独一组类所能完成的,通常会由一个或多个可部署的组件组成。

    例如,对Java程序而言,可复用的组件通常打包成一个JAR、WAR等文件;对C/C++应用而言,可复用的组件通常是一个函数库,或者一个DLL (动态链接库)文件。

    系统中各组件通过功能组织在一起,用组件图来建立系统中各组件之间的关系、设计系统的整体构架,通常在一个非常高的层次上显示。

    例如下面的组件图表示了,“计算机”组件依赖于“CPU”、“硬盘”和“内存”三个组件
    在这里插入图片描述
    下面的业务流程组件图反映了,“控制层”组件依赖于“业务逻辑层”组件完成操作,而“业务逻辑层”组件又依赖于“持久化层”组件完成操作
    在这里插入图片描述

    4.5. 部署图

    部署图用于描述软件系统如何部署硬件环境中,也就是体系结构的静态实施。它的用途是显示软件系统不同的组件将在何处物理地运行,以及它们彼此之间如何通信。

    因为部署图是对物理运行情况进行建模,所以系统的生产人员就可以很好地利用这种图来安装、部署软件系统。

    部署图中的符号包括组件图中所使用的符号元素,另外还增加了几个符号,主要是增加了节点的概念

    节点:指组件运行的环境。可以是软件(操作系统、其他等)或硬件资源(计算机,其他硬件),也就是说一个节点应该包涵了一定的计算能力、内存资源和相对位置。
    通信关联:节点通过通信关联建立彼此的关系,采用从节点到节点绘制实线来表示关联。

    例如下面的部署图,表示了应用软件应该部署的位置(应用服务器)、数据库应该部署的位置(数据库服务器),并且三个节点通过网络相连接
    在这里插入图片描述
    下图是一个更复杂一些的部署图,它表示了,“学生终端”、“教师终端”、“管理员终端”三个节点可以通过局域网与“Tomcat服务器”中的两个组件系统交互,而“Tomcat服务器”的数据又存储在“数据库服务器”中。
    在这里插入图片描述

    4.6. 包图

    包图由包和包之间的关系组成。包的图标就如同一个带标签的文件夹,它提供了一 种用于组织各种元素的分组机制,UML职工包与类的关系可以参考Java中package与class的关系。

    在UML中,包用来对元素进行分组,并为这些元素提供命名空间,包所拥有的或者引用的所有元素称为包的内容,包没有实例。

    例如下面的包图,表示了业务处理流程的不同类在不同包中,例如“userAction”和“AdminAction”两个类属于Action包,并且“UserAction”类依赖于“Service”包中的“UserService”类进行处理
    在这里插入图片描述

    4.7. 时序图

    用于描述对象之间消息传递(方法调用)时间顺序,是显示类之间交互(与具体对象无关)的图,这些类按调用的时间顺序排列,因此也可以清晰地显示并发进程。概括一下就是:时序图显示的是参与交互的类之间消息交互的顺序。

    4.7.1. 时序图的建模元素

    • 对象(Actor)
      时序图中对象使用矩形表示,对象名称带下划线。将对象置于时序图的顶部说明在交互开始时对象就已经存在了。如果对象的位置不在顶部,表示对象是在交互的过程中被创建的。
    • 生命线(LifeLine)
      生命线是一条垂直的虚线,表示时序图中的对象在一段生命周期内的存在。每个对象底部中心的位置都有生命线。
    • 控制焦点(Focus of Control)
    • 消息(Message)
      两个对象之间从发送方指向接收方的单路通信。在时序图中很少使用返回消息(返回消息使用虚线表示)。

    在这里插入图片描述

    4.8. 协作图(通信图)

    协作图是一种交互图。与时序图不同,协作图表达对象间的交互过程及对象间的组织结构,而时序图主要侧重于对象间消息传递在时间上的先后关系

    时序图与协作图都表示对象之间的交互作用,只是它们的侧重点有所不同:

    • 时序图描述了交互过程中的时间顺序,但没有明确地表达对象之间的关系。
    • 协作图描述了对象之间的关系,但时间顺序必须从顺序号获得。

    时序图和协作图的语义是等价的,可以相互转换,而不丢失任何信息。

    一个协作图样例如下所示,只需按照箭头顺序看协作图即可了解工作流程
    在这里插入图片描述

    4.9. 活动图

    活动图本质上就是流程图,它用于描述系统的活动,判定点和分支等。流程图在生活中很常见,例如做PPT的时候常常会用到流程图。

    活动图中的菱形框是判断标志,表示条件转移。活动图对表示并发很有用。在活动图中使用一个称为同步条的水平粗线可以将一条转移分为多个并发执行的分支,或将多个分支合为一条转移。此时,只有输入的转移全部有效才能执行后面的活动。

    4.9.1. 活动图的图符

    图符 名称 描述
    在这里插入图片描述 起点 在一个活动图中表示所有活动的起点(有且仅有一个)
    在这里插入图片描述 终点 在一个活动图中表示活动的终点(至少有一个)
    在这里插入图片描述 活动 表示活动图中的一个具体的不可再分的活动
    在这里插入图片描述 组合活动 表示活动图中的一个可再分的活动(一般用另一张活动图描述)
    在这里插入图片描述 对象 若与信号流相连,表示它是与活动图中的对象进行交互(收发信号)的其他对象;若与数据流相连,表示它是活动的输入或输出
    在这里插入图片描述 泳道 用于对活动图中的活动进行分组(类似包),同一组活动由一个或多个对象负责完成。
    在这里插入图片描述 条件判断 表示活动流程中的判断,通常有多个信息流从它引出,表示判断后的不同活动分支
    在这里插入图片描述 同步条 表示活动之间的同步。一般有一个或多个信息流向它引入和从它引出,表示引入的信息流同时到达,引出的信息流被同时触发
    在这里插入图片描述 信号发送 表示在某个活动转移发生时向某个对象发送一个信号,等价于信息流上的发送子句
    在这里插入图片描述 信号接收 表示信号的接收,是某个活动转移的必要条件。等价于信息流上的事件标识.

    一个简单的流程图示例,该图中有两个泳道“客户端”和“系统”,客户端需要完成“输入登录数据”活动,其他活动由系统完成。
    在这里插入图片描述

    4.10. 状态图

    状态图是通过建立对象的生存周期模型来描述对象随时间变化动态行为

    4.10.1. 状态图的图符

    图符 名称 描述
    在这里插入图片描述 初态 状态图的起始点
    在这里插入图片描述 中间状态 表示对象的一种状态
    在这里插入图片描述 复合状态 表示对象的复合状态,可化为多个子状态,用"或"和"与"两种关系相连
    在这里插入图片描述 终态 状态图的终点
    在这里插入图片描述 条件判断 表示对象不同状态的条件分支转移

    例如下面的状态图,一个空对象通过new指令由初态转变为临时状态,然后通过save()指令进入持久化状态,在通过close()指令转变为游离状态,最后通过finish()指令进入终态,结束生命周期。
    在这里插入图片描述

    展开全文
  • uml统一建模语言UML, which stands for unified modeling language is a language used for modeling purposes. When the software design or software model is created, different diagrams for the software are ...

    uml统一建模语言

    UML, which stands for unified modeling language is a language used for modeling purposes. When the software design or software model is created, different diagrams for the software are to be created, like the use case diagrams, activity diagrams, data flow diagrams, etc. So, to provide ease to the software designers, the UML was created. This Language already has a set of specified elements that are often used while making the software models, like rectangles for classes, eclipse for use cases, etc. This set of elements can be readily used by the system designers without having to, again and again, specify the shapes for what purpose they are being used for.

    UML代表统一建模语言,是一种用于建模目的的语言。 当创建软件设计或软件模型时,将为该软件创建不同的图,例如用例图,活动图,数据流程图等。因此,为了使软件设计人员更加容易,创建了UML。 该语言已经具有一组指定的元素,这些元素在制作软件模型时经常使用,例如,类的矩形,用例的Eclipse等。系统设计人员可以轻松使用这组元素,而不必一次又一次地使用。 ,请指定形状的用途。

    It should be noted that though UML is a modeling language, though it follows its particular syntax like the programming languages, and if this syntax is not followed, then your model diagram is not considered appropriate and there may be chances that your model is missing some element or some relation between the elements.

    应该注意的是,尽管UML是一种建模语言,但是它遵循其特定的语法(例如编程语言),并且如果不遵循该语法,则认为您的模型图不合适,并且可能会丢失模型。元素或元素之间的某种关系。

    The UML is used to design the software which follows the object-oriented design strategy. Thus, all the models which are used to represent the object-oriented software model pictorially, like the activity diagram, use case diagram, class diagram, etc., can all be represented through this language, i.e. UML.

    UML用于设计遵循面向对象设计策略的软件。 因此,所有用于以图形方式表示面向对象软件模型的模型,如活动图,用例图,类图等,都可以通过这种语言(即UML)来表示。

    统一建模语言(UML)的显着特征 (Salient Features of the Unified Modelling Language (UML))

    • UML is not the system design or any model methodology, but it is a modeling language that can help us make the system design and models.

      UML不是系统设计或任何模型方法,而是一种可以帮助我们进行系统设计和模型建模的语言。

    • The UML is used to pictorially represent the Object-Oriented software models.

      UML用于以图形方式表示面向对象的软件模型。

    • The UML was proposed to validate a standard notation and specific principles to all the models that were being designed. This was done so that a common procedure could be set for the designing of the software.

      提议使用UML来验证所有设计模型的标准符号和特定原理。 这样做是为了可以为软件设计设置一个通用过程。

    • It has specified notations for all the diagrams and elements and also has a defined structure for each of them. This syntax cannot be violated. This ensures the correctness in the model diagrams that no element or relation in the model is missing.

      它为所有的图和元素指定了符号,并且为每个图和元素都定义了结构。 不能违反此语法。 这样可以确保模型图中的正确性,即模型中不缺少任何元素或关系。

    Views that can be implemented through the UML Diagram

    可以通过UML图实现的视图

    The UML is used for designing various diagrams, but it is important to note the different views that can be implemented with the help of the UML. 5 different views can be visualized through the UML. These five views are as follows:

    UML用于设计各种图,但是重要的是要注意可以借助UML实现的不同视图。 通过UML可以显示5个不同的视图。 这五个视图如下:

    1. User's Views

      用户意见

    2. Structural Views

      结构视图

    3. Behavioral Views

      行为观点

    4. Environmental View

      环境观

    5. Implementation View

      实施视图

    Through these views, 9 different types of diagrams for the software model can be represented. We will study about these views and the diagrams that can be implemented through these diagrams in detail in the upcoming articles.

    通过这些视图,可以表示9种不同类型的软件模型图。 我们将在接下来的文章中详细研究这些视图以及可以通过这些图实现的图。

    翻译自: https://www.includehelp.com/basics/introduction-to-uml-unified-modeling-language.aspx

    uml统一建模语言

    展开全文
  • UML统一建模语言

    2016-07-25 10:29:32
    UML统一建模语言
  • 统一建模语言简介

    2021-02-04 14:31:20
    回顾20世纪晚期--准确地说是1997年,OMG组织(ObjectManagementGroup对象管理组织)发布了统一建模语言(UnifiedModelingLanguage,UML)。UML的目标之一就是为开发团队提供标准通用的设计语言来开发和构建计算机...
  • 统一建模语言UML

    2021-03-06 09:14:59
    统一建模语言UML统一建模语言简介类、接口和类图类接口类图类之间的关系1. 依赖关系2. 关联关系3. 聚合关系4.组合关系5.泛化关系6.实现关系 统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来...

    统一建模语言简介

    统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标准。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。

    统一建模语言能为软件开发的所有阶段提供模型化和可视化支持。而且融入了软件工程领域的新思想、新方法和新技术,使软件设计人员沟通更简明,进一步缩短了设计时间,减少开发成本。它的应用领域很宽,不仅适合于一般系统的开发,而且适合于并行与分布式系统的建模。

    UML 从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等 9 种图。

    本教程主要介绍软件设计模式中经常用到的类图,以及类之间的关系。另外,在实验部分将简单介绍 UML 建模工具的使用方法,当前业界使用最广泛的是 Rational Rose。使用 Umlet 的人也很多,它是一个轻量级的开源 UML 建模工具,简单实用,常用于小型软件系统的开发与设计。

    类、接口和类图

    类(Class)是指具有相同属性、方法和关系的对象的抽象,它封装了数据和行为,是面向对象程序设计(OOP)的基础,具有封装性、继承性和多态性等三大特性。在 UML 中,类使用包含类名、属性和操作且带有分隔线的矩形来表示。

    (1) 类名(Name)是一个字符串,例如,Student。

    (2) 属性(Attribute)是指类的特性,即类的成员变量。UML 按以下格式表示:

    [可见性]属性名:类型[=默认值]
    

    例如:-name:String

    注意:“可见性”表示该属性对类外的元素是否可见,包括公有(Public)、私有(Private)、受保护(Protected)和朋友(Friendly)4 种,在类图中分别用符号+、-、#、~表示。
    (3) 操作(Operations)是类的任意一个实例对象都可以使用的行为,是类的成员方法。UML 按以下格式表示:

    [可见性]名称(参数列表)[:返回类型]
    

    例如:+display():void。
    在这里插入图片描述

    接口

    接口(Interface)是一种特殊的类,它具有类的结构但不可被实例化,只可以被子类实现。它包含抽象操作,但不包含属性。它描述了类或组件对外可见的动作。在 UML 中,接口使用一个带有名称的小圆圈来进行表示。
    在这里插入图片描述

    类图

    类图(ClassDiagram)是用来显示系统中的类、接口、协作以及它们之间的静态结构和关系的一种静态模型。它主要用于描述软件系统的结构化设计,帮助人们简化对软件系统的理解,它是系统分析与设计阶段的重要产物,也是系统编码与测试的重要模型依据。

    类图中的类可以通过某种编程 语言直接实现。类图在软件系统开发的整个生命周期都是有效的,它是面向对象系统的建模中最常见的图。图 3 所示是“计算长方形和圆形的周长与面积”的类图,图形接口有计算面积和周长的抽象方法,长方形和圆形实现这两个方法供访问类调用。

    在这里插入图片描述
    在这里插入图片描述

    类之间的关系

    在软件系统中,类不是孤立存在的,类与类之间存在各种关系。根据类与类之间的耦合度从弱到强排列,UML 中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的

    1. 依赖关系

    依赖(Dependency)关系是一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性的关联。在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。

    在 UML 类图中,依赖关系使用带箭头的虚线来表示,箭头从使用类指向被依赖的类。图 4 所示是人与手机的关系图,人通过手机的语音传送方法打电话。
    在这里插入图片描述

    2. 关联关系

    关联(Association)关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系是类与类之间最常用的一种关系,分为一般关联关系聚合关系组合关系。我们先介绍一般关联。

    关联可以是双向的,也可以是单向的。在 UML 类图中,双向的关联可以用带两个箭头或者没有箭头的实线来表示,单向的关联用带一个箭头的实线来表示,箭头从使用类指向被关联的类。也可以在关联线的两端标注角色名,代表两种不同的角色。

    在代码中通常将一个类的对象作为另一个类的成员变量来实现关联关系。图 5 所示是老师和学生的关系图,每个老师可以教多个学生,每个学生也可向多个老师学,他们是双向关联。
    在这里插入图片描述

    3. 聚合关系

    聚合(Aggregation)关系是关联关系的一种,是强关联关系,是整体和部分之间的关系,是 has-a 的关系。

    聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。例如,学校与老师的关系,学校包含老师,但如果学校停办了,老师依然存在。

    在 UML 类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体。图 6 所示是大学和教师的关系图。
    在这里插入图片描述

    4.组合关系

    组合(Composition)关系也是关联关系的一种,也表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系,是 cxmtains-a 关系。

    在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。

    在 UML 类图中,组合关系用带实心菱形的实线来表示,菱形指向整体。图 7 所示是头和嘴的关系图。
    在这里插入图片描述

    5.泛化关系

    泛化(Generalization)关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系,是 is-a 的关系。

    在 UML 类图中,泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类。在代码实现时,使用面向对象的继承机制来实现泛化关系。例如,Student 类和 Teacher 类都是 Person 类的子类,其类图如图 8 所示。
    在这里插入图片描述

    6.实现关系

    实现(Realization)关系是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作。

    在 UML 类图中,实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口。例如,汽车和船实现了交通工具,其类图如图 9 所示。
    在这里插入图片描述

    展开全文
  • 统一建模语言基础知识
  • UML统一建模语言视频

    2018-10-17 15:49:04
    UML(里面主要包括类图,序列等)统一建模语言视频,需要的积分下载
  • uml统一建模语言期末报告

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,615
精华内容 2,246
关键字:

统一建模语言