【UML】UML精华所在——四种关系九种图

2024-08-26 07:48

本文主要是介绍【UML】UML精华所在——四种关系九种图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    UML图画了好长时间,终于画完了。UML视频看起来总觉得怪怪的,但是不知道怪在哪里,虽然顺着讲了九种图,然后穿插着讲四种关系,可是画图的时候还是不会,还得大量的查资料。这才真的感觉到,原来四种关系和九种图就是UML的精华所在。


【九种图】

    UML最重要的就是这九种图,这九种图的类型不一样,运用的阶段也不一样,每种图的作用和表现内容也不一样。下面就看看这九种图的总结:

哪些图

                                                                  

    用例图:用来描述用户的需求,从用户的角度描述系统的功能,并指出各功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能。

    类图:用于定义系统中的类,包括描述类的内部结构和类之间的关系。

    对象图:对象图是类图的一个案例,描述了系统在具体时间点上包含的对象以及对象之间的关系。

    状态图:用来描述类的对象所有可能的状态以及事件发生时状态的转移条件

    活动图:用来描述满足用例要求所要进行的活动以及活动见的约束关系,使用活动图有利于识别系统的并行活动。

    序列图:描述对象之间的交互顺序,着重体现对象间消息传递的时间顺序,强调对象之间消息的发送顺序,同时也显示对象之间的交互过程。

    协作图:描述对象之间的合作关系,更侧重于说明哪些对象之间有消息的传递。

    构件图:描述代码构件的物理结构以及各构件之间的依赖关系。

    部署图:用来描述实际的物理设备以及它们之间的连接关系。


各种图的应用

                                                                              

    每种图的作用不同,也就说明每种图的运用阶段不同。我觉得,九种图都应该是在软件正式开始编程之前完成的,不过针对的时间不同。如图示,用例图应该是软件分析阶段用的,针对软件需求分析;类图、状态图等应该用在软件设计阶段,针对的如何设计软件;而构件图和部署图则是在软件实现阶段,针对软件的安装等。


图之间的关系

    1、用例图是在需求分析时绘制的,确定系统用例,以及各个用例之间的关系。比如,机房收费系统的用例就有用户的各项操作和数据库表之间的关系等。

    2、类图是描述系统的类,对象图是描述系统对象之间的关系,其实对象图就是类图的实例化,是类图具象后的结果。

    3、序列图和协作图其实是一回事,都是描述的对象的交互,只不过序列图强调的是顺序,而协作图强调的是关系,序列图可以之间看出对象进行的活动的顺序,而协作图对于对象之间有哪些活动更为直观。

    4、状态图和活动图同样描述对象交互,只不过活动图说的是一个活动中各个动作的执行过程,而状态图是状态之间的转换,活动图有时也会用来表现状态之间转换的过程。

    5、序列图、协作图、状态图和活动图都是用来描述对象之间的交互关系的,他们和对象图的不同点在于,对象图只是体现了哪些对象之间有关系,并没有明确有什么关系,而这四种图则是明确了对象与对象之间都发生了什么。


与软件工程几种图的比较

    这个比较并不是刻意的,而是在画UNL的这种图时,自然而然会想到软工中的那种图,所以就拿来比较一下。

    1、活动图VS流程图

       相同点:活动图和流程图都是表现一个过程的活动顺序

       不同点:首先两者图符不同,其次流程图大多是单个活动,而活动图经常出现并行活动

    2、状态图VS状态迁移图

       相同点:状态图和状态迁移图都是描述系统状态的改变

       不同点:首先图符和图的组成部分不同,其次状态图强调的某一状态下对象之间的交互关系,状态迁移图强调的是状态之间的改变。


【关系】

    总的来说,UML中包含的关系就是四种,分别是关联关系、泛化关系、依赖关系和实现关系,至于用例图中的包含关系和扩展关系,我认为就属于依赖关系和泛化关系了。

                                                          

    关联又分为普通关联、聚合和组合三种,普通关联分为单向关联和双向关联,聚合和组合都是整体和部分的关系,聚合是部分可脱离整体而存在,组合关系中部分脱离整体后不能存在;

    依赖关系实际上就是使用关系,比如一个功能的实现使用到了某一模块,就说明该功能的实现依赖于这个模块;

    泛化也可以理解为继承,分为单重继承和多重继承,单重继承是一个子类只继承一个父类,而多重继承是说一个子类可以继承多个父类;

    实现是指类元之间的语义关系,比如一个类完成了一个接口的功能,就说这个类实现了这个接口。

    并不是每种图都包含这四种关系,有些图可能只包含其中的部分,比如用例图只有关联、依赖、泛化三种关系,而类图则包含所有的关系。

【总结】

    画图的过程并不是一帆风顺的,刚开始有种眼高手低的感觉,觉得这图没什么,可是打开了Rose才发现自己根本不知道从哪里下手。想想刚开始接触UML的时候,真的是不知所措,好像每次接触一个新事物的时候都是这样的吧。现在再回过头去看看,发现UML没有什么新东西,好多之前都接触过了,也没有自己刚开始想象的那么难。软工的学习让我们从文档方面意识到软件编程过程的重要性,UML则是让我们从画图的方面来认识,相对来说图更能让人一目了然,不管怎么样,软件编程对于我们来说不再仅仅是敲代码那么简单了。UML暂时就结束了,下个阶段即将开始,跟自己说声加油,然后继续奋斗!!

这篇关于【UML】UML精华所在——四种关系九种图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107970

相关文章

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

线程的四种操作

所属专栏:Java学习        1. 线程的开启 start和run的区别: run:描述了线程要执行的任务,也可以称为线程的入口 start:调用系统函数,真正的在系统内核中创建线程(创建PCB,加入到链表中),此处的start会根据不同的系统,分别调用不同的api,创建好之后的线程,再单独去执行run(所以说,start的本质是调用系统api,系统的api

UML- 统一建模语言(Unified Modeling Language)创建项目的序列图及类图

陈科肇 ============= 1.主要模型 在UML系统开发中有三个主要的模型: 功能模型:从用户的角度展示系统的功能,包括用例图。 对象模型:采用对象、属性、操作、关联等概念展示系统的结构和基础,包括类图、对象图、包图。 动态模型:展现系统的内部行为。 包括序列图、活动图、状态图。 因为要创建个人空间项目并不是一个很大的项目,我这里只须关注两种图的创建就可以了,而在开始创建UML图

读软件设计的要素04概念的关系

1. 概念的关系 1.1. 概念是独立的,彼此间无须相互依赖 1.1.1. 一个概念是应该独立地被理解、设计和实现的 1.1.2. 独立性是概念的简单性和可重用性的关键 1.2. 软件存在依赖性 1.2.1. 不是说一个概念需要依赖另一个概念才能正确运行 1.2.2. 只有当一个概念存在时,包含另一个概念才有意义 1.3. 概念依赖关系图简要概括了软件的概念和概念存在的理

数据依赖基础入门:函数依赖与数据库设计的关系

在数据库设计中,数据依赖 是一个重要的概念,它直接影响到数据库的结构和性能。函数依赖 作为数据依赖的一种,是规范化理论的基础,对数据库设计起着至关重要的作用。如果你是一名数据库设计的初学者,这篇文章将帮助你理解函数依赖及其在数据库设计中的应用。 什么是数据依赖? 数据依赖 是指同一关系中属性间的相互依赖和制约关系,它是数据库设计中语义的体现。在现实世界中,数据之间往往存在某种依赖关系,而这

c++ 和C语言的兼容性关系

C++ 和 C 语言有很高的兼容性,但也存在一些差异和限制。下面是它们的兼容性关系的详细介绍: 兼容性 C++ 是 C 的超集: C++ 语言设计为兼容 C 语言的语法和功能,大部分 C 代码可以在 C++ 编译器中编译运行。 标准库兼容性: C++ 标准库包含了 C 标准库的内容,如 stdio.h、stdlib.h、string.h 等头文件,但 C++ 的标准库也提供了额外的功能,如

七、Maven继承和聚合关系、及Maven的仓库及查找顺序

1.继承   2.聚合   3.Maven的仓库及查找顺序

file-max与ulimit的关系与差别

http://zhangxugg-163-com.iteye.com/blog/1108402 http://ilikedo.iteye.com/blog/1554822

【编程底层原理】方法区、永久代和元空间之间的关系

Java虚拟机(JVM)中的内存布局经历了几个版本的变更,其中方法区、永久代和元空间是这些变更中的关键概念。以下是它们之间的关系: 一、方法区: 1、方法区是JVM规范中定义的一个概念,它用于存储类信息、常量、静态变量、即时编译器编译后的代码等数据。 3、它是JVM运行时数据区的一部分,与堆内存一样,是所有线程共享的内存区域。 二、永久代(PermGen): 1、在Java SE 7之前,