软件设计师-应用技术-UML建模题3

2024-05-07 22:04

本文主要是介绍软件设计师-应用技术-UML建模题3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基础知识及技巧:

1. 用例图:

1.1 考点:

  • 题干里面有关项目的详细描述,完整用例图中的某些参与者和某些用来扣掉,根据题干内容和已有用例图补充。
  • 根据题干,分析用例图之间的关系。

1.2 基础知识:

  • 用例图的概念:用例图是表示一个系统中用例与参与者关系之间的图。
  • 用例图的组成元素:参与者、用例、用例之间的关系。
  • 用例的概念:代表系统的一个功能。

1.3 用例之间的关系:重要,理解背

泛化关系:

  • 概念:代表一般与特殊的关系,是一种继承关系,子用例继承了父用例的行为和含义。
  • 图例:空心三角形箭头的实线,箭头指向父用例。
  • 例如:建立迷宫(父)编写迷宫/导入迷宫(子)
  • Ext:参与者也有泛化关系。

包含关系(include):

  • 概念:一个用例(基本用例)的行为包含了另一个用例(包含用例)的行为。基本用例执行时,一定执行包含用例。
  • 图例:带箭头的虚线表示,箭头指向包含用例,>。
  • 使用场景1:当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系,进行抽象用例。
    • 例如:登记外借信息与查询外借信息包含用户登录。

    • 例如:阅读者在读书和借书时,都要登记记录,他们有登记记录这一共同的行为。(背)

  • 使用场景2:一个用例的功能太多时,可以使用包含关系建立若干个更小的用例。
    • 例如:用户有很多功能,包括各种信息的查看,这时建立一个查询信息的用例,然后下面在包含查看余额、查看上机记录、查看充值记录等用例。

拓展关系(extend):

  • 概念:一个用例(基本用例)的行为拓展了另一个用例(扩展用例)的行为。拓展用例在一定条件下才执行。
  • 图例:带箭头的虚线表示,箭头指向基本用例,>。
  • 使用场景:基本动作在一个用例中,如果这个基本用例还有其他动作,但需要在一定条件下才执行,可以将它放在扩展用例中。
    • 例如:下载功能。

2. 类图与对象图:

2.1 考点:

  • 填类名、属性名、操作名(方法名)
  • 填多重度
  • 填关系

2.2 基础概念:

  • 类图概念:类图是用来显示系统中的类、接口及它们之间静态结构和关系的一种静态模型,它用于描述系统的结构。
  • 类图的组成元素:名称(Name)、属性(Attribute)和操作(Operation)。
  • 对象图概念:对象图是类图在某一时刻的实例。
  • 对象图的组成元素:名称(Name)和属性(Attribute)

2.3 类图和对象图的区别:

  • 类使用关联连接,对象使用链连接,对象没有多重度。

2.4 多重度:

  • 概念:是指类与类之间的关系,用于描述一个类与另一个类之间的对象数量关系。
  • 分类:*
    • 1:表示一个集合中的一个对象,对应另一个集合中1个对象。
    • 0..*:表示一个集合中的一个对象,对应另一个集合中的0个或多个对象。即,表示可以不对应。(Tips:两个点)
    • 1..*:表示一个集合中的一个对象,对应另一个集合中的一个或多个对象。即,表示至少对应一个。
    • *:表示一个集合中的一个对象,对应另一个集合中的多个的对象。

2.5 类之间的关系:

依赖关系

  • 概念:一种使用的关系, 即一个类的实现需要另一个类的协助。
  • 代码表现:局部变量、方法的入参或者对静态方法的调用。
  • 箭头及指向:带箭头的虚线,指向被使用者。Tips:六种关系中,只有该关系箭头指向相反。

泛化关系->继承概念

  • 概念:表示一般与特殊的关系,即父类与子类之间的关系,表示继承。
  • 代码表现:类与类之间的继承。
  • 箭头及指向:带三角箭头的实线,箭头指向父类。软考中,可能是黑色实心三角箭头。

关联关系

  • 概念:一种拥有的关系,使一个类知道另一个类的属性和方法。它的两种重要形式是聚合和组合关系。
  • 代码体现:成员变量,内部类。
  • 箭头及指向:带普通箭头的实心线,指向被拥有者。(容易忘记)

  • 特殊:自身关联(递归关联):

聚合关系

  • 概念:表示整体与部分之间的关系,且部分可以离开整体而单独存在。
  • 代码体现:成员变量。
  • 箭头及指向:带空心菱形的实心线,菱形指向整体。

组合关系

  • 概念:表示整体与部分之间的关系,且部分不能离开整体而单独存在,即更强的聚合关系。
  • 代码体现:成员变量。
  • 箭头及指向:带实心菱形的实线,菱形指向整体。

实现关系

  • 概念:表示类与接口之间的关系,表示实现。
  • 代码表现:类与接口之间的实现。
  • 箭头及指向:带三角箭头的虚线,箭头指向接口。

各种关系的强弱顺序:

泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

UML六种依赖关系_uml依赖关系-CSDN博客

类之间关系和多重复的图例:

3. 顺序图:

3.1 考点:

  • 填消息、填对象

3.2 基础概念:

  • 顺序图概念:顺序图是一种交互图,详细描述对象之间传送消息的时间顺序,它表示单个用例中,行为的顺序关系。
  • 顺序图的组成元素:对象(实体类、边界类、控制类)、消息(简单消息、同步消息、异步消息、返回消息)、生命线。
  • 顺序图强调时间顺序。

顺序图图例:

4. 状态图:(下午可能考)

4.1 考点及技巧:

  • 填状态与状态改变的条件。
  • 技巧:阅读把所有状态和状态改变条件找出来,填空。

4.2 基础概念:

  • 状态图的概念:是一种行为图,描述一个特定对象的所有可能的状态以及引起状态转换的事件,展现一个状态机。
  • 状态图的组成元素:状态、转移(迁移)、事件、活动和动作。

4.3 状态图组成元素图例:

状态和转移(迁移)

  • 起始状态:黑色实心。
  • 终止状态:用一对同心圆(内圆为实心圆)表示。
  • 简单状态:态没有子状态机和域,使用带拐点的矩形表示
  • 中间状态:用圆角矩形表示,可以用两条水平横线把它分成上、中、下3个部分。
    • 上面部分为状态的名称,这部分是必须有的;
    • 中间部分为状态变量的名字和值,这部分是可选的;
    • 下面部分是活动表,这部分也是可选的。
  • 迁移:两个状态之间带箭头的连线,箭头指明了转换方向。

事件说明

  • 语法:事件名(参数表)[守卫条件]/ 动作表达式 ^ 发送子句。(上午考点)
  • 如下例子:其中isAuthed为一个守护条件,说明满足该条件才会进行状态转移,然后执行函数auidt。

活动

  • 活动表的语法格式:事件名(参数表)/动作表达式
  • 事件名:任何事件的名称。
  • 在活动表中经常使用下述3种标准事件:entry, exit和do。
    • entry:事件指定进入该状态的动作;
    • exit : 事件指定退出该状态的动作;
    • do : 事件指定在该状态下的动作。

事件表达式

  • 状态变迁通常是由事件触发的,在这种情况下应在表示状态转换的箭头线上标出触发转换的事件表达式;如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后自动触发转换。
  • 语法:事件说明[守卫条件]/ 动作表达式。
    • 其中,事件说明的语法为:事件名(参数表)。

UML之状态图_uml状态图-CSDN博客

4.4 状态图图例:重点

4.5 其他软考上午考点:

  • 若事件触发一个没有特定监护条件的迁移,则对象不会离开当前状态。

5. 活动图:(下午可能考)

5.1 考点:

  • 扣掉一部分,填充进去

5.2 基础知识: (上午考点)

  • 活动图的概念:一种描述某一特定功能(活动)中,运行行为(动作)和操作逻辑(控制)关系的简单表达方式。活动图在本质上是一种流程图,着重表现从一个活动到另一个活动的控制流程。
  • 活动图的组成元素:动作、活动、开始和终止、控制流、判断节点、合并节点、游道等。

5.3 活动图组成元素:

动作

  • 动作代表一个原子操作, 操作可能是任何合法的行为。
  • 例如,x=5为一个动作。

活动节点

  • 活动节点是一系列动作,主要用于实现动作序列的简化和动作图的嵌套。

开始和终止

  • 标记了业务流程的起始位置和结束位置。

控制流

  • 负责当一个动作或活动节点执行完毕后,将执行主体从当前已完毕的节点转移到过程的下一个动作或动作节点。

判断节点

  • 进行逻辑判断、并创造分支的一种方法。

合并节点

  • 仅有逻辑意义,没有时间和数据上的意义。

游道

  • 将活动中的具体活动按照负责进行该活动的对象进行分区,一条泳道中的所有活动由同一个对象来执行。

UML活动图画法详细解析_活动图怎么画-CSDN博客

5.4 活动图图例:

  • 并发分岔、动作、分支、监护表达式、并发合并。(上午题考点)

5.6 活动图与状态图的区别:**

  • 活动图侧重从行为的动作来描述活动;而状态图更侧重从行为的结构来描述状态。
  • 活动图是一种动态图;状态图兼顾动态图和静态图的属性。
  • 活动图与状态图在图形表示上的差别:活动图有决策点判断,而状态图没有。

6. 通信图:

6.1 基础概念:

  • 通信图的概念:通信图是一种交互图,用来显示与生命线相关联的对象或角色之间的交互和生命线直接传递的消息。
  • 通信图的基本组成元素:对象(Object)、连接(Link,也称为链)、消息(Message) (上午考点)

6.2 通信图基本组成元素图例:

对象

  • 对象,即类的实例,人形图案或矩形来表示。

链(对象关联)

  • 链由一个或多个相连的线(直线或弧线)形成,链的两端是消息发送者和消息接收者,并且消息发送者与消息接收者可以是一样的。

消息

  • 通过一系列的消息来描述系统的动态行为。

6.3 通信图图例:

6.4 通信图和顺序图的区别:

  • 都是交互图,用来描述对象之间的消息传递和协作关系。
  • 区别在于:
    • 通信图强调的是参与交互的对象的组织结构,为读者提供了在协作对象结构组织的语境中,理解交互的方式。
    • 顺序图强调的是消息的时间顺序,为读者提供了控制流随着时间推移,清晰的可视化轨迹。

7. 部署图:

上午题考点:

  • 描述系统中硬件和软件的物理架构,它描述构成系统架构的软件结构、处理器和设备。

8. 构件图(组件图):

上午题考点:

  • 构件图展现了一组构建之间的组织和依赖,专注于系统的静态实现图,图中通常包括构件、接口及各种关系。

例图:

答题技巧:

1. 填写"用例名称"

如何寻找用例名称:

  • 技巧1:从题干中找出参与者做的事情(参与者的行为)。
  • 技巧2:通过用例图中,用例之间关系(泛化、包含、拓展)找用例。
  • 技巧3:已经在用例图中的用例不会重复填写。
  • 技巧4:有中英文对照的行为,可能就是需要填写的用例名,没有中英文对照的行为,一般不是需要填写的用例名称。

例子:

拓展关系:

  • " 打印订单" 是 "在线购买书籍" 中的一部分操作,可以作为独立步骤提取,并且" 打印订单"在用户需要的情况下才执行。

2. 填写"用例之间关系"

  • 泛化、包含、拓展

3. 填写"类图中类名"

如何找出类名:

  • 技巧1:题干中,带有英文描述的名称一般都是类名。
  • Tips1:类名的名词找全;要是用英文都用英文。

如果填写类名:

  • 方法1:根据类之间的关系判断,即箭头形状、箭头方向。
    • 普通直线 -> 看多重度,见方法2。
    • 整体-部分:聚合、组合 -> - 带空心、实心菱形的实心线,菱形指向整体。(有该关系,先用该关系思考)
    • 父类-子类:泛化 -> 带三角箭头(有可能使用黑色实心三角)的实线,箭头指向父类。
    • 接口-实现类:实现 -> 带三角箭头的虚线,箭头指向接口。
  • 方法2:根据类之间的多重度判断。

4. 填写"类图的多重度"

  • 分析题干中关于类名的描述,判断出现的次数。0、1、0..* 、4 .. *
  • 填多重度的端,是指该类与连接端类的个数关系。

5. 填写"类图关联关系"

  • 特殊:自身关联(递归关联)

6. 填写"类图中类的属性"

  • 从题干中寻找,不要带上"等"。

7. 填写"用例用例描述":

2019年上半年:

这篇关于软件设计师-应用技术-UML建模题3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

Python中yield的用法和实际应用示例

《Python中yield的用法和实际应用示例》在Python中,yield关键字主要用于生成器函数(generatorfunctions)中,其目的是使函数能够像迭代器一样工作,即可以被遍历,但不会... 目录python中yield的用法详解一、引言二、yield的基本用法1、yield与生成器2、yi

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

Java Stream 的 Collectors.toMap高级应用与最佳实践

《JavaStream的Collectors.toMap高级应用与最佳实践》文章讲解JavaStreamAPI中Collectors.toMap的使用,涵盖基础语法、键冲突处理、自定义Map... 目录一、基础用法回顾二、处理键冲突三、自定义 Map 实现类型四、处理 null 值五、复杂值类型转换六、处理

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布