【软件设计师-从小白到大牛】上、下午题同篇基础篇:第八章(上午题)、第三章(下午题) UML建模

前言


本系列文章为观看b站视频以及b站up主@zst_2001系列视频所做的笔记,感谢相关博主的分享。如有侵权,立即删除。
视频链接:视频链接(注:文章中有关图片、以及网友的相关评论与总结等内容未标明出处均出自该视频,感谢大家的分享!)
b站up主页:b站up

章节提要

在这里插入图片描述

一、用例图

在这里插入图片描述

补充知识

  • (注:下图来自前言中up主视频)image

  • 用例图中的关系

  • 包含关系
    (注:下图来自前言中up主视频)image

  • 扩展关系
    (注:下图来自前言中up主视频)image

  • 泛化关系
    (注:下图来自前言中up主视频)
    image
    (注:下图来自前言中up主视频)

  • image

  • UML图分类
    (注:下图来自前言中up主视频)image

  • UML的设计视图包含了类、接口和协作,其中,设计视图的静态方面类图对象图 表现;动态方面交互图状态图活动图 表现。

  • 交互图包括:序列图(顺序图、时序图)通信图(协作图)交互概览图计时图

真题链接

  • UML中有4种事物:结构事物、行为事物、分组事物和注释事物。类、接口、构件属于 结构 事物;一个依附于一个元素或一组元素之上对其进行约束或解释的简单符号为 注释 事物。
  • 面向对象技术中,组合关系表示 整体与其部分之间的一种关系
    泛化 是一个类与它的一个或多个细化类之间的关系,即一般与特殊的关系。
  • 关联 是一种结构关系,描述了一组链,链是对象间的连接。两个类之间 可以有多个由不同角色标识的 关联。
  • UML中关联的多重度是指 一个类的实例能够与另外一个类的多少个实例相关联
  • 在UML用例图中,参与者表示 人、硬件或者其他系统可以扮演的角色
    (注:下图来自前言中up主视频)image
  • 业务用例和参与者一起描述 组织支持的业务过程,而业务对象模型描述 业务结构以及结构元素如何完成业务用例

二、类图和对象图

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

补充知识

  • 实现关系:对于接口来说的。
  • 泛化关系:是对于类来说的。泛化是继承关系的一种,子类继承父类的所有行为和属性,子类可以新增新的功能或者重写父类功能。
  • 多重度:是指两个类之间的关系。
  • 类图名称前符号含义:
    (注:下图来自前言中up主视频)
    image
  • UML类图中,圆圈代表接口
    (注:下图来自前言中up主视频)
    image

真题链接

  • 对象图展现了 某一时刻一组对象以及它们之间的关系
  • UML中接口可用于 声明对象类所需要的服务

三、顺序图(序列图)

在这里插入图片描述

补充知识

  • 顺序图是动态图,表现的是对象之间的交互关系。
  • 序列图(顺序图)
    (注:下图来自前言中up主视频)image消息箭头指向被调用方法的类

真题链接

  • 序列图(顺序图) 用于展现系统中 一个用例和多个对象的行为描述了以时间顺序组织的对象之间的交互活动
  • UML图中,序列图异步消息并不引起调用者终止执行而等待控制权的返回

四、 活动图

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

补充知识

  • 活动图:表现整个流程的处理情况分支状况。

  • 带甬道的活动图。

  • (注:下图来自前言中up主视频)image

  • 并发(合并)分岔并发(合并)汇合

真题链接

  • 对一个复杂用例中的业务处理流程进行进一步建模的最佳工具是UML 活动图

五、状态图

在这里插入图片描述

补充知识

  • 活动图:表现整个流程的处理情况分支状况。
  • 状态图:也是动态图:描述的是状态的变迁,以状态为节点; 箭线:代表的是事件。
    • 状态活动
      (注:下图来自前言中up主视频)image
      (注:下图来自前言中up主视频)image
  • 转换事件
    (注:下图来自前言中up主视频)image
    (注:下图来自前言中up主视频)image

真题链接

  • 状态图 用于 描述一个对象在多个用例中的行为 、用于 某些具有多个状态的对象而不是系统中大多数或全部对象、用于 描述一个对象之间的交互、可以用于 用户界面或控制对象可以没有终态。
  • 组合状态超状态):含有子状态的状态称为组合状态。
  • UML中状态图用于对系统、类或用例的动态方面建模时,通常是对 反应型对象 建模。
  • (注:下图来自前言中up主视频)image

六、通信图

在这里插入图片描述

真题链接

  • 通信图(协作图) 用于展现 系统中对象之间的消息流及其顺序

补充

构件图(组件图)

(注:下图来自《软件设计师教程》(第5版)(褚华、霍秋艳主编,清华大学出版社))
image

真题链接

  • 构件图(组件图) 用于展现 组件之间的组织和依赖

部署图

(注:下图来自前言中up主视频)
image

真题链接

  • 部署图通常在 实施 阶段使用。
  • 通常采用UML中的 部署图 来表示待开发软件系统中组件和硬件之间的物理关系
  • 在UML图中,部署图 用于展示所交付系统中软件和硬件之间的物理关系
  • UML图中,对新开发系统的需求进行建模,规划开发什么功能或测试用例,采用 用例图 最适合。而展示交付系统的软件组件和硬件之间的关系的图是 部署图
  • UML图中,部署图部署组件之间的依赖关系类似于包依赖

七、解题技巧

问题一

  • 若题目中给出对用例的汉字说明,则填写的用例名称必须为英文
  • 如果题目中UML图中类的名称为英文,就找题目描述中的英文,这些英文就为类的名称
  • << extend>>题目中字眼:如果…
  • << include>>一般具有顺序关系,存在小的(子用例)完成后,进行大的(基用例)
  • 类名一般为名词;英文单词往往是类名
  • 根据题目中已有的类名/用例名来填别的空,例如,如果题目中的类名都是英文则填空是也填英文比较合适;如果题目中的某些用例是动宾短语则填空也填动宾短语(先动词后名词)

问题二

  • 基本事件流(典型事件流):必须要做的事件
  • 备选事件流(候选事件流):可选做的事件(一般含有 “如果”/“若” 等字眼)。
  • 0…* 等价于 * ;还有一种多重度 1…*。

问题三/四

  • 如果题目中UML图中类的名称为英文,就找题目描述中的英文,这些英文就为类的名称
    (注:下图来自前言中up主视频)
    image

八、案例分析

1、案例1

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

正确答案
1)A:艺术家,B:歌曲,C:乐队,D:歌手,E:音轨,F:唱片(填写时填写类名)
在这里插入图片描述
2)(看对端填本端)
在这里插入图片描述
3)(因为由题意可知音轨要与它上一条音轨和下一条音轨建立联系,所以音轨与自己还有一个联系)
在这里插入图片描述
4)最短事件序列:按任意键->选择歌曲->播放D

2、案例2

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

正确答案
1)在这里插入图片描述
2)
在这里插入图片描述
3)状态模式
CLevel的对象
计算飞行里程数,根据里程数判断是否需要调整会员级别(跳转到不同的状态)。

  • 26
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
好的,下面是一个简单的代码示例,用于在PetStore系统中增加修改密码的功能。以下代码仅供参考,具体实现可能需要根据实际情况进行调整。 UserController.java: ``` @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @PostMapping("/updatePassword") public ApiResponse updatePassword(@RequestParam("username") String username, @RequestParam("oldPassword") String oldPassword, @RequestParam("newPassword") String newPassword) { // 验证用户身份 User user = userService.findByUsername(username); if (user == null) { return ApiResponse.fail("用户不存在"); } if (!user.getPassword().equals(oldPassword)) { return ApiResponse.fail("原密码不正确"); } // 更新密码 user.setPassword(newPassword); userService.save(user); return ApiResponse.success(null); } } ``` 在UserController中增加了一个updatePassword()方法,用于处理修改密码的请求。该方法接收用户名、原密码和新密码三个参数,并返回一个ApiResponse对象表示操作结果。在该方法中,我们首先验证用户的身份,如果用户名或原密码不正确,则返回相应的错误信息;否则,将新密码更新到数据库中,并返回操作成功的提示。 修改密码的前端界面可以使用HTML和JavaScript来实现。以下是一个简单的示例: update-password.html: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>修改密码</title> </head> <body> <h1>修改密码</h1> <form id="update-password-form"> <label for="oldPassword">原密码:</label> <input type="password" name="oldPassword" id="oldPassword" required><br> <label for="newPassword">新密码:</label> <input type="password" name="newPassword" id="newPassword" required><br> <button type="submit">提交</button> </form> <div id="message"></div> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script> $(function() { $('#update-password-form').submit(function(event) { event.preventDefault(); var oldPassword = $('#oldPassword').val(); var newPassword = $('#newPassword').val(); $.ajax({ url: '/user/updatePassword', method: 'POST', data: { username: '当前用户的用户名', oldPassword: oldPassword, newPassword: newPassword }, success: function(response) { if (response.code == 200) { $('#message').text('密码修改成功'); } else { $('#message').text(response.message); } }, error: function() { $('#message').text('密码修改失败'); } }); }); }); </script> </body> </html> ``` 在上面的代码中,我们使用了jQuery库来简化AJAX请求的处理。当用户点击提交按钮时,前端代码会将原密码和新密码发送给后端API,并在接收到响应后给出相应的提示。 需要注意的是,上面的代码中的用户名需要根据当前用户的实际情况进行设置。一般情况下,可以从会话中获取当前用户的用户名,或者在登录时将用户名存储在Cookie中,以便后续使用。 以上就是一个简单的示例,用于在PetStore系统中增加修改密码的功能。如果需要更详细的实现代码,可以参考PetStore官方代码库中的实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马看到什么是人决定的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值