工具篇——UML设计技巧(一)类图设计

前言

学习一种工具或者技术时,我并不喜欢去用背字典的形式去吸收,而是保持思考,思考它能为我带来什么。希望有兴趣的小伙伴留下你对于UML的感悟。
“人对于复杂事物单凭记忆需要消耗大量精力,也会一定几率出错,随着项目复杂性加深,项目的优化、拓展、变更、工作交接的难度和成本将会指数爆炸。通过UML,可以有条不紊地将复杂系统的内容表达出来,在深入细节时可以随时俯视全局,所以UML设计做为项目开发前置工作是必要的”
在线工具proceesOn离线工具xmind

相关文章:工具篇——UML设计技巧(二)时序图设计

UML介绍

定义

统一建模语言(Unified Modeling Language )简称UML,一种面向对象设计的建模工具,其独立于任何程序语言,抽象地描述各个事物之间的关系。

类图结构规范

在这里插入图片描述

事物关系

  • 继承
    实线+空心箭头指向父类表示继承关系在这里插入图片描述
  • 实现
    虚线+空心箭头指向接口表示实现关系
    在这里插入图片描述
    tip: 通过继承和实现发现,实线比虚线的关系更加紧密,下面的关系也是如此
  • 组合
    组合端为实心菱形,实线指向被组合端在这里插入图片描述
  • 聚合
    聚合端为空心菱形,虚线指向被聚合端在这里插入图片描述
    tip:菱形类比容器装东西。组合的实线实心说明关系比聚合更加强烈,组合关系的生命周期相同,聚合关系的生命周期独立。
  • 关联
    实线指向被关联端在这里插入图片描述
  • 依赖
    虚线指向被依赖端
    在这里插入图片描述
    tip:强弱排序
    在这里插入图片描述

综合用例

动物衍生关系

预览地址
示例参考《大话设计模式》
在这里插入图片描述

12306自助售票机案例实战

售票机面板相关部件的作用如下所述

  1. 在身份证识别区放入二代身份证
  2. 显示屏显示所有的车次、车票种类(单程票、多次往返票和座席种类)
  3. 乘客选择车次和座位类型确定下单
  4. 继续/取消键盘上的取消按钮用于取消购票过程,继续按钮允许乘客连续购买多张票。
  5. 插卡口接受 PayCard(银行卡)和纸币槽接受现金。
  6. 打印机用于输出车票。
  7. 所有部件均可实现自检并恢复到初始状态。

在这里插入图片描述
要素提取

建模期不用去思考具体的业务实现,从实际角度出发解析需求,提取要素

  • 需求1的部件为IdCardScanner,拥有scannerCard方法
  • 需求2和需求3的部件为Screen,拥有show和touch方法
  • 需求4的部件为ActionKeyboard(由此需求联想到还会有InputKeyboard等类),拥有action方法
  • 需求5的部件为CardDriver拥有交互银行卡的多种方法和CashSlot拥有多种交互现金的方法
  • 需求6的部件为Printer拥有printTackter方法
  • 需求7说明顶级父类Component拥有init和doShelfCheck方法
类名类说明方法名方法说明
Component抽象部件类,所有组件的父类init()初始化
doShelfCheck()自检
IdCardScanner身份证扫码类scannerCard()扫码身份证
Keyboard键盘抽象类getSelectedKey()获取被选择的键盘
ActionKeyboard执行键盘类action()执行
CardDriver卡驱动类gulpCard吞卡
readCardInfo读取信息
ejectCard退卡
CashSlot现金槽类gulpCash收入现金
ejectCash退出现金
Printer打印类prinitTicket打印票

UML绘制
预览地址
在这里插入图片描述

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值