软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔

是一种可视化的语言

  • 规约系统的制品
  • 构造系统的制品
  • 建立系统制品的文档

UML应用范围

  • 可用于对象方法和构件方法
  • 可用于所有应用领域和不同的平台

1.面向对象方法术语/符号

主要有两类术语:

  • 一种是表达结构化事物的术语
  • 一种是表达关系的术语

2. UML 术语表

一种是表达结构化事物的术语

  • 对象:是系统中用来描述客观事物的一个实体。一个对象由一组属性和对这组属性进行操作一组方法组成。
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
  • 属性:描述了对象的具体特征,属性具有属性名和属性值(属性状态) 语法:可见性 属性名:类型 = 缺省值 {性质串} 可见性:public(+)、protected(#)、private(-)、包内的(~)
  • 操作(方法):一个操作抽象了一个对象所要做的事情,并且该类的其它对象也要做这件事 语法:可见性 操作名(参数表):返回类型{性质串} 可见性:public(+)、protected(#)、private(-)、包内的(~)
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
  • 制品:系统中包含物理信息、可替代的物理部件
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
  • 多态性(Polymorphism):是指一般了中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为 多态性实现的方法:
  • 泛化
  • 定义一个抽象类或接口类
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔

一种是表达关系的术语

  • 关联:反映了类与类之间的静态关系
  • 关联名(name):关联可以有一个名字
  • 角色(role):一个类参与一个关联时,有一个特定的角色
  • 多重性(multiplicity):类中对象参与一个关联的数目
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
  • 限定符:一个限定符是一个关联的属性或属性表,这些属性的值将对该关联相关的对象集做了一个划分
  • 关联类:一种模型元素,它有关联和类的特性
  • 约束
  • 泛化/继承:特殊类(子类)的对象拥有其一般类(超类)的全部属性和服务,称作特殊类对一般类的继承
  • 子类可继承父类的属性和操作,并可有更多的属性和操作
  • 子类可以替换父类的生明
  • 若子类的一个操作的实现覆盖了父类同一个操作的实现,这就是多态性,但两个操作必须具有相同的名字和参数
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
  • 绑定(bind):表明源的实例化是使用目标给定的实际参数来达到的
  • 导出(derive):表明可以凑够目标推导出源
  • 允许(permit):表明目标对源而言是可见的
  • 实例(instanceOf):表明源的对象是目标的一个实例
  • 实例化(instantiate):表明源的实例是由目标创建
  • 幂类型(powertype):表明源的目标的幂类型
  • 精化(refine):表明源比目标更精细
  • 使用(use):表明源的公共部分的语义依赖于目标的语义
  • 实现(realization):是类目之间的一种语义关系,其中一个类目规约了保证另一个类目执行的契约

3.静态模型表达工具 — 类图

类图是给出一组类、接口、协作以及它们之间关系的图

作用:

  • 可用于可视化地表达系统的静态模型
  • 是构件图和部署图的基础

类图的内容:类、接口、依赖、泛化、关联

类图的一般用法

类图主要用于对系统的静态设计视图(投影)进行建模,支持表达系统的功能需求,即系统提供给最终用户的服务。

  • 对系统中的词汇建模 当需要决策:使用哪些类目和UML关系,作为系统的组成部分;哪些类目和UML关系,处于系统之外。
  • 对简单协作进行建模 当需要一组类来表达系统中的某一事物语义时,可使用类图详细描述这组类以及它们之间的关系
  • 对逻辑数据库模式建模 当需要给出数据库概念设计的指导,可对要在数据库中存储的信息,采用类图相应的数据库模式进行建模

系统行为(交互)的建模工具 — 顺序图

顺序图是一种交互图,即由一组对象以及这些对象之间的关系组成,其中还包含这些对象之间被发送的消息

顺序图包含的内容:

  • 交互各方:角色或对象
  • 交互方式:通信或链
  • 交互内容:消息

5点说明:

  • 顺序图包含了一些由时间定序的消息
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
    软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
  • 对象生命线,用于表示一个对象在一个特定的时间段中的存在
  • 控制焦点,表达一个对象执行了一个动作的时间段
  • 时序,一条生命线上的时序是非常重要的,使消息集合形成了一个偏序关系,建立了一个因果链
  • 顺序图中的结构控制 常见的控制类型:
  • 选择执行(Optional execution):一种结构控制类型,标签为opt
  • 条件执行(Conditional execution):一个结构控制类型,标签为alt
  • 并发执行(Parallel execution):一个结构控制类型,标签为par
  • 迭代执行(iterative execution):一个结构控制类型,标签为loop

系统行为(生存周期)的建模工具 — 状态图

状态图是显示一个状态机,其中强调了从一个状态到另一个状态的控制流

状态图包含:

  • 简单状态和组合状态
  • 事件
  • 转换

状态:

一个状态是类目的一个实例(简称对象)在其生存周期的一种条件(condition)或情况(situation),该期间该对象满足这一条件,执行某一活动或等待某一消息

表示:

状态的分类:

软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔
软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔

状态的规约:

  • 名字:是一个标识状态的文本串
  • 进入/退出效应(effect)
  • entry:该标号在进入该状态时所需要执行的、由相应动作表达式规定的动作,称为进入动作
  • exit:该标号在退出该状态时所需要执行的、由相应动作表达式规定的动作,称为退出动作
  • 状态的内部转移:值没有导致该状态改变的内部转移;动作标号 “do”
  • 子状态:如果一个状态机中引入了另一个状态机,那么背引入的状态机称为子状态机
  • 非正交子状态机(顺序子状态机)
  • 正交子状态机(并发子状态机)

事件:

一个事件是对一个有意义的发生的规约,该发生有其自己的时空

  • 内部事件:是在系统内对象之间传送的事件
  • 外部事件:是在系统和它的参与者之间传送的事件

可模型化的4种事件

  • 信号(signal):是消息的一个类目,是消息的类型
  • 调用(call):一个调用事件表示对象接受到一个操作调用的请求
  • 可以使用在类的定义中的操作定义来规约调用事件
  • 该事件或触发状态机中的一个状态转换,或调用目标对象的一个方法
  • “信号”是一种异步事件,而”调用”一般是同步事件,但调用可以规约为异步调用
  • 时间事件和变化事件
  • 时间事件:是表示推移一段时间的事件
  • 变化事件:是表示一个条件得到满足或表示状态的一个变化
  • 发送事件和接受事件
  • 发送事件:表示一个实例发送一个调用事件或信号事件
  • 接受事件:表示类的一个实例接受一个调用事件或信号事件

状态转换:

一个状态转换是两个状态间的一种关系

状态转换的规约,5个部分:

  • 源状态:引发该状态转换的那个状态
  • 转换触发器:在源状态中由对象识别的事情,并且一旦满足其监护条件,则使状态发生转换
  • 监护条件:一个布尔表达式,当某个转换器触发器接受一个事件时,如果该表达式有值为真,则触发一个转换;值为假,则不发生状态转换,并且此时如果没有其它可以被触发的转换,那么该事件就要丢失
  • 效应:一个可执行的行为
  • 目标状态:状态完成后所处的那个状态

Original: https://www.cnblogs.com/shuisanya/p/16639399.html
Author: 水三丫
Title: 软件工程 统一建模语言(Unified Modeling Language UML) 第4篇随笔

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581440/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • SpringBoot 多环境配置文件切换

    背景 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用…

    Linux 2023年6月14日
    0140
  • Linux常用磁盘管理命令详解

    du du命令用于查看文件和目录磁盘的使用空间。 命令语法: du [参数] [文件&amp…

    Linux 2023年5月27日
    0108
  • 【转】我是一个CPU:这个世界慢!死!了!

    简介 经常听到有人说磁盘很慢、网络很卡,这都是站在人类的感知维度去表述的,比如拷贝一个文件到硬盘需要几分钟到几十分钟,够我去吃个饭啦;而从网络下载一部电影,有时候需要几个小时,我都…

    Linux 2023年6月16日
    0138
  • node-java的使用及源码分析

    上篇文章简单提了下node调用java的方法但也只属于基本提了下怎么输出helloworld的层度,这次将提供一些案例和源码分析让我们更好地了解如何使用node-java库。 前置…

    Linux 2023年6月14日
    098
  • 读书笔记:CSAPP 11章 网络编程

    深入理解计算机系统 第11章 本章代码:Index of /afs/cs/academic/class/15213-f15/www/code/22-netprog2其中包含本章课本…

    Linux 2023年6月13日
    098
  • Shell命令

    1.shell命令的执行机制:fork+exec执行命令(任何的shell都会执行) 2.shell中的用户输入处理 1 命令行参数:选项、参数 2 运行时输入 3 read命令:…

    Linux 2023年6月6日
    0100
  • 理想汽车 x JuiceFS:从 Hadoop 到云原生的演进与思考

    理想汽车在 Hadoop 时代的技术架构 首先简单回顾下大数据技术的发展,基于我个人的理解,将大数据的发展分了4个时期: 第一个时期: 2006 年到 2008 年。2008 年左…

    Linux 2023年6月14日
    090
  • SQLI-LABS(Less-9、10)

    Less-9(GET-Blind-Time based-Single Quotes) 打开 Less-9页面,可以看到页面中间有一句 Please input the ID as …

    Linux 2023年6月6日
    0100
  • /dev/random 和 /dev/urandom 的原理

    /dev/random 和 /dev/urandom 是 Linux 上的字符设备文件,它们是随机数生成器,为系统提供随机数 随机数的重要性 随机数在计算中很重要。 TCP/IP …

    Linux 2023年6月13日
    082
  • redis配置systemctl

    [Unit]Description=redisAfter=network.target [Service]Type=forkingPIDFile=/var/run/redis_63…

    Linux 2023年5月28日
    0105
  • Python Django构建简易CMDB

    前言 本文仅是对以前写的小示例进行一次梳理和代码优化,由于本人菜鸟一枚,前端,系统运维知识只知皮毛,后端python也没有实际开发经验,在开发过程中也没有考虑堡垒机等一系列服务器的…

    Linux 2023年6月7日
    0124
  • [Python]批量替换PPT字体脚本

    使用说明 脚本代码 配置文件 使用说明 将脚本放置在需要批量修改的PPT文件夹根目录 修改配置文件 conf.ini 中的字体 执行脚本文件 ​ exe文件 下载:https://…

    Linux 2023年6月13日
    0116
  • Docker从入门到精通

    1 容器简介1.1 什么是 Linux 容器1.2 容器不就是虚拟化吗1.3 容器发展简史2 什么是 Docker?2.1 Docker 如何工作?2.2 Docker 技术是否与…

    Linux 2023年6月7日
    080
  • web安全之反向代理配置X-Frame-Options实现防盗链和防止点击劫持攻击

    介绍 http响应头安全策略,从http头文件的方面,利用参数设置开启浏览器的安全策略,来实现相关的安全机制 X-Frame-Options HTTP响&am…

    Linux 2023年6月6日
    0115
  • NAT回流(Twice NAT)Hairping 参数详解

    内网用户需要通过域名访问内网的服务器,一般商用环境是无法访问的,需要经过以下配置,原理不说了,直接说配置。 nat (inside,inside) source dynamic i…

    Linux 2023年6月6日
    099
  • Spring 进入Controller前参数校验

    在进入Controller前完成参数的校验,针对对象参数 分为两个验证方式 (1)直接使用已定义的校验方式 1、在需要进行校验的属性上增加校验类型注解 import java.ut…

    Linux 2023年6月7日
    0118
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球