软考下午科目——第三章——UML分析与设计

2023-05-16

UML分析与设计

大纲要求:

  • 学会面向对象的分析与设计,掌握UML描述方法

UML基础知识

面向对象的分析与设计

  • 面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。
  • 面向对象分析的目的是获得对应用问题的理解。
  • 理解的目的是确定系统的功能和性能要求。
  • 面向对象分析包含5个活动:认定对象、组织对象、描述对象之间的相互作用、定义对象的操作、定义对象的内部信息。
  • 面向对象设计可建立软件 系统的结构。
  • 其主要工作分为两个阶段:高层设计和类设计。
  • 高层设计构造应用软件的总体模型。
  • 类设计是在标识了一个类之后给出它的规格说明,其中包括类的实例可执行的操作及其数据表示。

UML概述

UML(Unified Modeling Language,统一建模语言)是面向对象软件的标准化建模语言,具有丰富的表达力,可以描述开发所需要的各种视图,然后以这些视图为基础装配系统。

UML由3个要素构成:

  • UML的基本构造块
  • 支配这些构造块如何放置在一起的规则
  • 运用于整个语言的一些公共机制

在最高层,视图被划分成3个视图域:结构分类、动态行为和模型管理

  • 结构分类描述了系统中的结构成员及其相互关系。类元包括类、用例、构件和结点。类元为研究系统动态行为奠定了基础。类元视图包括静态视图、用例视图、实现视图、部署视图。
  • 动态行为描述了系统随时间变化的行为。行为用从静态视图中抽取的瞬间值得变化来描述。动态行为视图包括状态机视图、活动视图和交互视图。
  • 模型管理说明了模型得分层组织结构。包是模型的基本组织单元。特殊的包还包括模型和子系统。模型管理视图跨越了其他视图并根据系统开发和配置组织这些视图。

UML各种视图及其主要概念

在这里插入图片描述

1.类图

类图(Class Diagram)展现了一组对象、接口、协作及其之间的关系。
类图给出了系统的静态设计视图,包含主动类的类图给出了系统的静态进程视图。
作为模型管理视图还可以含有包或子系统,二者都用于把模型元素聚集成更大的组块。
类图对于系统的静态视图建模。
这种视图主要支持系统的功能需求,即系统要提供给最终用户的服务。
使用类图的3种方式:

  1. 对系统的词汇建模
  2. 对简单的协作建模
  3. 对逻辑数据库模式建模

作为静态视图的类图可以包含依赖、关联、泛化、组合、实现关系以及注解和约束等。
(1)依赖关系是两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。
(2)关联关系是一种结构关系,它描述了一组对象之间的链接关系。其中有一种特殊类型的关联关系,即聚集关系,它描述了整体于部分的结构关系。
(3)泛化关系是一种“一般——特殊”关系,利用这种关系,子类可以共享父类的结构和行为。
(4)实现关系是类之间的语义关系,其中的一个类制订了另一个类保证执行的契约。实现关系用于两种情况:

  • 1、在接口和实现它们的类或构件之间
  • 2、在用例和它们的协作之间

(5)组合是聚集关系的变种,表示元素间更强的组合关系
在这里插入图片描述

各种关系图例如下所示:
在这里插入图片描述

2.用例图

用例图(Use Case Diagram)展现了一组用例、参与者(Actor)以及两者之间的关系。

用例图通常包括用例、参与者、扩展关系、包含关系。

用例图用于对系统的静态用例视图进行建模,主要支持系统的行为,即该系统在它的周边环境的语境中所提供的外部可见服务。

用例图使用方法:

  • 对系统的语境建模
  • 对系统的需求建模

在这里插入图片描述

3.构件图

构件图(Component Diagram)展现了一组构件之间的组织和依赖关系。

构件图专注于系统的静态实现视图。

它与类图相关,通常把构件映射为一个或多个类、接口或协作。

4.部署图

部署图(Deployment Diagram)展现了运行处理节点以及其中构件的配置。

部署图给出了体系结构的静态实施视图。

它与构件图相关,通常一个结点包含一个或多个构件。

5.状态图

状态图(State Diagram)展现了一个状态机,它由状态转换事件活动组成。

状态图关注系统的动态视图,它对接口、类和协作的行为建模尤为重要,强调对象行为的事件顺序。状态图通常包含简单状态组合状态转换(事件和动作)

可以用状态图对系统的动态方面建模。这些动态方面可以包括出现在系统体系结构的任何视图中的任何一种对象的按事件排序的行为,这些对象包括类(主动类)、接口、构件和节点。

6.活动图

活动图(Activity Diagram)是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程。

活动图专注于系统的动态视图,他对于系统的功能建模特别重要,并强调对象间的控制流程。

活动图一般包括活动状态和动作状态、转换和对象。

使用活动图的方式:

  • 对工作流建模
  • 对操作建模
7.交互图

顺序图(或称序列图)和协作图均被称为交互图,用于对系统的动态方面进行建模。
一张交互图显示的是一个交互,由一组对象及其之间的关系组成,包含它们之间可能传递的消息。

顺序图是强调消息时间序列的交互图,协作图则是强调接收和发送消息的对象的结构组织的交互图。

交互图用于对一个系统的动态方面建模。在大多数情况下,它包括对类、接口、构件和节点的具体的或原型化的实例及其之间传递的消息进行建模。

交互图可以单独使用,用于可视化、详述、构造和文档化一个特定的对象群体的动态方面,也可以用来对一个用例的特定控制流进行建模。

序列图有以下两个不同协作图的特征
(1)序列图有对象生命线,对象生命线是一条垂直的虚线,表示一个对象在一段时间内存在
(2)序列图有控制焦点,控制焦点是一个瘦高的矩形,表示一个对象执行一个动作所经历的时间段,既可以是直接执行,也可以是通过下级过程执行。

协作图有以下两个不同于序列图的特征
(1)协作图有路径
(2)协作图有顺序号

序列图和协作图是同构的,它们之间可以互相转换。

例题

例一

功能描述

在这里插入图片描述

用例图

在这里插入图片描述

类图

在这里插入图片描述

问题

在这里插入图片描述

解析

在这里插入图片描述

答案

在这里插入图片描述

例二

功能描述

在这里插入图片描述

用例图

在这里插入图片描述

类图

在这里插入图片描述

问题

在这里插入图片描述

解析

在这里插入图片描述

答案

在这里插入图片描述

例三

功能描述

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

类列表

在这里插入图片描述

类图、关键属性与方法列表

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

答案及解析

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

例四

功能描述

在这里插入图片描述

类图

在这里插入图片描述

问题

在这里插入图片描述

解析及答案

在这里插入图片描述

在这里插入图片描述

例五

功能描述

在这里插入图片描述

系统类模型及通信图

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

问题

在这里插入图片描述

解析及答案

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

同步练习

同步练习1

需求

在这里插入图片描述

用例图

在这里插入图片描述

类图

在这里插入图片描述

问题

在这里插入图片描述

答案

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软考下午科目——第三章——UML分析与设计 的相关文章

随机推荐

  • 一个less文件中引入另一个less文件

    假设有两个 less的文件1 less 和2 less 在1 less 中引入2 less文件 64 import 34 2 less 34 34 34 是一定不可以忘记的
  • Python——函数

    函数的创建和调用 xff1a 函数的创建和调用 为什么需要函数 xff1a 复用代码 隐藏实现细节 提高可维护性 提高可读性便于调试 函数的创建 def 函数名 输入参数 函数体 return xxx span class token ke
  • ubuntu18.04安装微信

    1 安装deepin wine 使用shell的方法下载各种deb包 1 具体的操作为 xff1a 在home中打开终端 xff08 terminal xff09 xff0c 运行以下语句 xff1a gedit install sh 弹出
  • 实现MySql的主从复制(两台虚拟机)详解

    实现MySql的主从复制 xff08 非单机 xff09 文章目录 实现MySql的主从复制 xff08 非单机 xff09 首先了解心跳线实现数据同步一 mysql主从复制原理是什么 xff1f 二 使用步骤1 安装Mysql2 数据库进
  • ubuntu安装完anaconda,添加快捷启动方式

    1 进入文件夹 xff0c 找到anaconda的bin文件并进入 home 用户 anaconda3 bin 2 进入后右键打开terminal 3 在terminal中输入 anaconda navigator 4 这时候就会发现ana
  • 分别用汇编语言、C语言编程实现LED流水灯

    一 C语言编程 1 先创建一个新的工程 2 文件名 3 右键Source Group创建一个 c文件 4 在 c文件中放入以下代码 APB2使能时钟寄存器 define RCC AP2ENR unsigned volatile int 0x
  • SyntaxError: invalid syntax的问题原因和解决办法

    写在这里的初衷 xff0c 一是备忘 xff0c 二是希望得到高人指点 xff0c 三是希望能遇到志同道合的朋友 目录 一 问题二 原因及解决办法 一 问题 span class token comment An highlighted b
  • Java 字符串匹配的三种方法

    文章目录 一 示例二 解释1 replace 方法2 replaceAll 方法3 replaceFirst 方法4 常用的字符列表 一 示例 如图 xff0c 都是为了替换字符串s中的 34 34 符号 xff0c 但三种匹配方法 xff
  • 【VMware+ubuntu】关闭还原虚拟机后网络断开的解决办法

    使用ifconfig和ip addr 发现对应网卡down掉了 手动执行ifcconfig ens33 up把网卡up起来 xff0c 发现网卡是起来了 xff0c 但是没有IP 重启网络服务sudo service network man
  • MySQL中的视图

    视图概述 视图是一种虚拟存在的表 xff0c 并不在数据库中实际存在 xff0c 它的数据依赖于真实存在的数据表 通过视图不仅可以看到其依赖数据表中的数据 xff0c 还可以像操作数据表一样 xff0c 对数据表中的数据进行添加 修改和删除
  • ubuntu在更新软件时出现E: Release file for http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease

    问题 E Release file for http security ubuntu com ubuntu dists bionic security InRelease is not valid yet invalid for anoth
  • 配置pip环境变量以及PYTHONPATH的作用

    配置pip环境变量 python的环境变量PYTHONPATH PYTHONPATH是Python搜索路径 xff0c 默认我们import的模块都会从PYTHONPATH里面寻找
  • AtCoder Beginner Contest 218 C - Shapes (模拟)

    linkkkk 题意 xff1a 给两个 n n n n n n 的矩阵 xff0c
  • CF1169C. Increasing by Modulo(二分)

    linkkkkk 题意 xff1a 给出 n k n k n k 和数组 a a
  • 【c++类的构造函数】几种写法及问题

    c 43 43 类的构造函数 几种写法及问题 一 构造函数的定义 类通过一个或几个特殊的与类同名的成员函数来控制其对象的初始化过程 xff0c 这些函数叫构造函数 构造函数的任务是初始化类对象的数据成员 xff0c 无论何时只要类的对象被创
  • 【洛谷】P1786 帮贡排序 2020-11-07

    洛谷 P1786 帮贡排序 简单结构体排序题 xff0c 用bool函数加sort就可以 主要的点是如果需要按某种奇怪的顺序排序的话 xff0c 就把那个奇怪的顺序表上号好了 题解 xff1a xff08 还是多加注释比较好 xff09 s
  • 链表:头插法与尾插法(简易图解和代码)

    头插法 定义 xff1a 输入的数据次序生成的链表节点次序相反 xff0c 例如 xff1a 按1 2 3顺序进行头插之后 xff0c 最终排序却变成了3 2 1 简而言之就是逆序插入 定义图解 xff1a 代码图解 xff1a 代码 xf
  • Robomaster基于传统算法的视觉识别教程

    文章目录 前言一 装甲板的分析二 预处理降低曝光度ROI区域 三 颜色提取提取目标颜色阈值化与膨胀 四 灯条轮廓提取五 灯柱筛选六 灯柱匹配其他总结 前言 本文记载个人在RM视觉组中学习到的传统算法和opencv用法及代码实例讲解 xff0
  • 基础爬虫实战案例之获取游戏商品数据

    文章目录 前言一 爬虫是什么 xff1f 二 爬虫实战案例1 引入库2 请求网页处理3 生成访问链接4 读入数据到mongodb5 获得数据6 加入多线程 总结 前言 在想获取网站的一些数据时 xff0c 能过人工手动复制和粘贴 xff0c
  • 软考下午科目——第三章——UML分析与设计

    UML分析与设计 大纲要求 xff1a 学会面向对象的分析与设计 xff0c 掌握UML描述方法 UML基础知识 面向对象的分析与设计 面向对象方法是一种运用对象 类 继承 封装 聚合 关联 消息 多态性等概念来构造系统的软件开发方法 面向