UML绘图

1.UML概述

UML(统一建模语言)并不是一种科学上严谨的方法工具,但是被广泛的使用。说它不严谨主要是因为,UML是用自身定义自身,就是说一个定义不是由别的定义来定义,而是由自身来定义,这就很奇怪。所以,数学家可能比较不理解UML这个东西,因为它是用自身定义自身。

UML是一种广泛使用的建模语言,它在过去的几十年中经历了多次版本更新和修订。虽然UML最初的版本包含了一组基本的建模元素,但随着时间的推移,新的元素和概念被不断引入,以满足不断发展的软件建模需求。

然而,自从UML 2.0版本发布以来,UML的元素并没有持续增加。UML 2.0定义了一组完整的建模元素,包括类、接口、用例、活动、状态机、序列、协作等,这些元素已经能够涵盖大多数软件建模的需求。之后,UML 2.1、2.2、2.3等版本的更新主要是在细节和规范方面进行了一些修订和改进,但并没有引入大量新的元素。

虽然UML的元素没有持续增加,但由于软件开发的不断发展和变化,UML的应用也在不断变化和演进。例如,现代的软件开发倾向于更加注重领域驱动设计和面向服务的架构,这些新的概念和方法也会在UML的应用中得到体现。因此,UML的应用和实践仍在不断发展和演进。

UML中的元素主要包括:事物,关系,图。顾名思义,关系就是事物之间的关系,事物和其关系构成图。根据下图可知,事物有很多分类,关系也有分类,图也有分类。
UML的构造块主要包括哪些,该图来自华师的中国大学mooc

2.用例模型

用例模型是帮助我们捕获用户需求的的工具。用例模型由参与者、用例组成。

2.1 参与者(Actor)

Actor是属于我们要开发的系统(以下简称系统)的外面,Actor并不属于系统,但是又要和系统发生交互 。比如Actor可以给系统提供一些数据,或者希望系统给它提供服务。分类用例模型中有哪些参与者就可以确定系统需要哪些功能。也是需求分析的一部分。
用例中的参与者图示
Actor可以是人,物,其它的子系统。Actor在UML元素中用上图表示。 比如说,我们要开发的系统是教务系统,教务系统中有人,学生,老师等参与者。但是教务系统又要和学校的其它系统有交互,比如说学校的财务系统、人事系统等。这里的财务系统和人事系统也是参与者,属于其它子系统。

那么在系统的需求分析阶段如何寻找系统的参与者呢?

主要考虑以下几个问题:

1、谁使用系统?
2、谁安装、维护系统?
3、谁启动、关闭系统?
4、谁给系统提供信息、从系统中获取信息?
5、我们要开发的系统与哪些其它子系统有关联?
6、在系统交互中,谁扮演什么角色?
7、内/外部定时器

如果高明白了以上几个问题,系统的Actor就可以确定了。

2.2 用例

上面分析了系统的参与者(actor),每个参与者都会有1个或者多个需求。不同的参与者可能会有相同的需求。把这些需求分门别类,形成一个个的用例,每个用例是处理一种需求的操作组合。
用例元素图示

因此,用例就是:系统为响应参与者引发的一个事件而执行的一系列的处理/动作,而这些处理应该为参与者产生一种有价值的结果。这些处理/动作应该还能够处理一些Exception。

2.3 参与者和用例之间的关系参与者和用例之间的关系

2.4 如何寻找用例?

1、参与者希望系统提供什么样的功能?
2、系统是否存储和检索信息?
3、当系统改变状态时,是否通知参与者?
4、是否存在影响系统的外部时间?是哪个参与者通知系统这些外部事件?
5、哪个参与者触发了活动?

如果搞明白上面的问题,就可以直到用例是什么了。

2.5 用例模型中的关系

用例模型中的参与者和用例都是UML中的建模元素,那么是建模元素就会有关系。关系主要有以下三种,即:用例和用例之间的关系、用例和参与者之间的关系、参与者和参与者之间的关系。

2.5.1 用例和用例之间的关系

1、泛化关系(继承关系)
这一点类似于OOP中的继承。只是叫法不一样。如下图所示。
在这里插入图片描述

2、包含关系(include)
包含关系是,一个用例A必须包含另外一个用例B才能正常工作。否则A无法工作。比如在写C++代码的时候,有一个 main.cpp 文件(设为用例A,用来打印参与者给出的字符串),该文件必须包含另外一个用例B(iostream)才能完成打印功能。

3、拓展关系(extend)
拓展关系是一个用例在执行的过程中,可能会用到另外一个用例。

以上三种关系由下图展示。
在这里插入图片描述

2.5.1 用例和参与者之间的关系

关联关系:用实线表示

2.5.1 参与者和参与者之间的关系

泛化关系:实线+空心箭头
在这里插入图片描述

这一点类似于用例和用例之间的关系,如上图所示。

2.6 对用例的描述

用例描述是针对每一个用例的。用例描述有其相应的规范。常用规范如下表所示,当然了,不一定非要是下面的写法,也可以是别的写法。

条目条目描述
总结描述用例的角色、所要达到的目的、对用例总结
参与者列表列出使用该用例的所有参与者
前置条件激活该用例的前置条件
描述描述用例尽可能多的所有细节
后置条件当用例执行完毕后,即参与者与用例断开后,用例需要做一些完善工作,有查缺补漏的作用
异常处理异常处理,类似于各种编程语言中的exception,比如C++中的try语句等

2.6 用例模型总结

通过以上叙述,可以知道,关于用例模型的知识点主要包括以下几个内容:

1、系统边界
2、参与者
3、用例
4、用例图
5、用例描述

3 活动图

用例模型和活动图是相互补充的。

3.1 活动图的基本建模元素

1、活动图的开始、结束、对象

在这里插入图片描述

其中的对象是活动图过程中,产生的具体的东西,就像像OOP中的对象一样,是个具体的实体。

2、活动节点和分支

在这里插入图片描述

每个活动节点最终又可以被分为不可再分的原子动作(Action).

分支,有一个输入流,有多个离去流,每个离去流都要有条件。

3、分叉、汇合、泳道

规则是,活动部分是不能跨泳道的,从常识来讲,一个活动不能同时被两个泳道来做,如果要两个泳道来做,那就不是一个活动了,应该是两个活动。

分叉是一个动作执行完毕后,可以分成两个动作同时进行,类似于并行操作。

汇合是,两个动作必须都做完,汇合到一点后,才能继续往下执行,这个类似于进程同步。

在这里插入图片描述

3.2 活动图总结

1、描述一项任务执行过程中所完成的工作(动作)
2、描述对象的内部工作
3、显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象
4、显示用例的实例如何执行动作以及如何改变对象的状态
5、说明一次业务流程中的人(参与者)和对象是如何工作的

活动图与用例模型互为补充,主要用于需求分析阶段

活动图中的基本要素包括:活动(动作)、转移、分支、分叉和汇合、泳道、对象流等。

4 类图(静态)

用例图和活动图是软件分析阶段要做的事情,是帮助我们捕获需求的。需求知道了之后,怎么做呢?那就是用类进行设计了。

4.1 类之间的关系

1、依赖关系
2、关联关系
3、继承\泛化关系
4、实现关系
在这里插入图片描述
5、对以上四种关系的修饰
1)名称及方向
在这里插入图片描述
2)角色
在这里插入图片描述
3)可见性
在这里插入图片描述
其中的加号(+)是一种可见性修饰符,即——public。
4)多重性
在这里插入图片描述
5)聚合\组合
组合和聚合的区别就是,组合说是,当整体不消失/死亡/不在的时候,部分也将不复存在,聚合是,当整体消失/死亡/不在的时候,部分可以存在,也可以不存在。
在这里插入图片描述
6)关联类
在这里插入图片描述

4.2 类图总结

类是一种抽象,是对用例和活动图的实现。

5 顺序图(动态,交互图的一种)

用例图、活动图给出了需求分析,类图给出了静态的解决方案。那么解决方案是否可行呢,我们又不可能区写代码去验证,那么就需要顺序图来解决。

5.1 消息

5.1.1 同步消息

在这里插入图片描述
同步消息是指,一个对象在执行的过程中,需要另外一个对象来来执行一个方方法,并等待它返回一个结果后,才能继续执行。在等待的结果返回前,主进程处于阻塞状态。

5.1.2 异步消息

在这里插入图片描述
和同步消息不同的是,异步消息不会阻塞主进程,还有就是会有一个消息队列。

5.2 交互图

5.3 操作

5.4 代码和顺序图的映射

在这里插入图片描述

5.5 顺序图总结

顺序图可以动态验证类模型的可行性。

顺序验证的某一个功能,属于某个用例描述的功能中的一部分,又被成为用例实现。

顺序图从上到下,反应了各对象相互协作的时间顺序。

6 通信图(交互图的一种)

交互图有两种,一种是顺序图,一种就是通信图。

通信图和顺序图在某些情况下可以相互转化。

7 状态图(状态机)

在考虑某个实体(这里的实体不同于类实例化出来的实体)的状态的时候,单个实体是多大粒度的实体?比如,一辆汽车,它作为一个单个实体,它的状态有行驶状态,停止状态,缺油状态,故障状态等等。但是,组成汽车又有很多的零部件,这些零部件也有自己的状态。比如,进入汽车后,可以把发动机作为一个整体,把电路系统作为一个整体,把油箱作为一个整体等等。

以上所有内容有待继续完善!!!!!!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UML绘图体温测量上报系统对象图是用于表示体温测量上报系统中各个对象之间的关系和交互的图形表示方法。该对象图由多个对象组成,每个对象都有自己的属性和方法。 在体温测量上报系统对象图中,可以包括以下对象: 1. 患者对象(Patient):患者是系统的核心对象之一,具有属性如姓名、年龄、性别等,以及方法如测量体温、上报体温等。患者对象可以与温度计对象进行交互,获取体温数据。 2. 医生对象(Doctor):医生是系统的另一个关键对象,具有属性如姓名、职称、科室等,以及方法如查看患者体温、给予建议等。医生对象可以与患者对象进行交互,获取患者的体温信息。 3. 温度计对象(Thermometer):温度计作为一个对象,具有测量体温的功能,可以给出患者的实时体温数据。温度计对象可以与患者对象进行交互,获取患者的体温信息。 4. 体温上报对象(TemperatureReport):体温上报对象用于记录患者的体温数据,并将其上报给医生。该对象具有属性如患者姓名、体温、时间等,以及方法如上报体温等。 以上是一个简单的体温测量上报系统对象图,通过对象图可以清晰地描述系统中各个对象之间的关系和交互。对象图是UML中常用的建模工具,能够帮助开发人员和设计师更好地理解系统的结构和功能,并进行系统的设计和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值