课程内容提要
需求分析
面向对象设计
数据流图
基本概念
数据流图是分层的,越底层越详细
底层图到0层图就是对系统拆解的过程(感觉就是黑盒与白盒)
平衡原则
灰洞:输入的数据流和输出的数据流没有逻辑关系(有输入和输出是正常的,但是输入和输出不相关则是异常情况)
考试技巧
利用数据平衡原则,0层图少了操作结果
这个输出
对于上面的P点,只有输入没有输出是肯定有问题的。黑洞
最麻烦的就是补充数据流,要充分利用数据平衡原则
UML图
注意参与者可以是时间,比如定时器每段时间生成报表,因此这个生成报表功能的参与者就是时间
下面关系非常重要,必须掌握
在 UML 中,包含关系、扩展关系、泛化关系常用于用例图,以下为你简单介绍并举例:
包含关系(Include)
表示一个用例(基本用例)包含了另外一个用例(包含用例)的功能,基本用例在执行过程中一定会用到包含用例的功能,包含用例是基本用例必不可少的一部分。
- 举例:“用户登录系统” 是基本用例,“输入用户名和密码” 是包含用例。用户登录系统时,必然要执行输入用户名和密码这个操作,所以 “用户登录系统” 包含 “输入用户名和密码”。
扩展关系(Extend)
一个用例(扩展用例)在特定条件下对另一个用例(基础用例)的功能进行扩展,基础用例即使没有扩展用例也能独立完成其主要功能。
- 举例:“用户购物下单” 是基础用例,“使用优惠券抵扣金额” 是扩展用例。用户购物下单时,不使用优惠券也能完成下单操作,只有在满足使用优惠券的条件下(如有可用优惠券且用户选择使用),才会执行使用优惠券抵扣金额的操作,所以 “使用优惠券抵扣金额” 扩展了 “用户购物下单”。
泛化关系(Generalization)
一个用例(子用例)继承了另一个用例(父用例)的行为和属性,子用例是父用例的特殊化,子用例可以有自己特有的行为,也可以覆盖父用例的部分行为。
- 举例:“支付订单” 是父用例,“使用微信支付订单” 和 “使用支付宝支付订单” 是子用例。“使用微信支付订单” 和 “使用支付宝支付订单” 都继承了 “支付订单” 的基本行为(如确认订单金额、扣除相应账户金额等),同时又各自有针对微信支付和支付宝支付的特定操作流程,它们是 “支付订单” 的特殊化。
泛化一定存在父子关系,但是包含不一定存在父子关系
课程测试在学习币不足的时候需要充入学习币
B
考到了面向对象的一个设计原则,子类可以替换父类,因此是泛化关系,C
类图与对象图
多重度有上面这些
图形在考试中不一定会按标准绘制,比如泛化可能就是一个空心三角形,组合和聚合有的时候只有一个菱形,要根据题目判断其具体是哪种关联关系
另外注意泛化关系箭头指向的是父类
- 依赖关系(Dependency):订单类
Order
依赖支付类Payment
完成支付(临时使用)。- 泛化关系(Generalization):父类
Vehicle
派生子类Car
(继承关系)。- 聚合关系(Aggregation):班级
Class
包含学生Student
(整体与部分可独立存在)。- 组合关系(Composition):公司
Company
拥有部门Department
(部分不能脱离整体存在)。- 实现关系(Realization):类
ArrayList
实现接口List
(实现接口功能)。
D C 简单不解释
顺序图
强调对象之间消息的发送的顺序
通信图(协作图)
UML2.0称之为通信图,UML1.0称之为 协作图
强调对象之间消息收发关系
状态图
考的较多的一类图
状态图的每一个节点就代表一个状态,而每一条边就是事件
S1: 订单挂起
S2:订单备货
S3:订单定制
S4:订单发货
S5:订单收货
活动图
跟状态图形态会比较相似。状态图强调状态的变迁,活动图强调对象间的控制流程
最大的区别主要在与活动图里面的节点都是具体需要执行的活动
活动图中有一种特殊的叫泳道式活动图,各个泳道代表由哪个角色去完成哪些流程,能够把复杂的活动图表述清晰
定时图
UML2.0才加入的一类图,看上去也是活动的变化,但是从横坐标可以看到活动过程的时间信息
构件图和包图
构件图和包图有很多相似之处,包图可以认为是简单将一系列类放到一起,构件图是将需要协同的一些类封装到一起对外提供统一的接口
部署图
静态图里面比较有代表性的一个图。
部署图就是描述软件(如程序、数据库)安装在哪些硬件(如服务器、手机)上,以及它们之间如何通信的“系统部署地图”。
例题
强调交互过程,首先可以排除静态图(因为静态图强调的都不是交互而是结构,所以有
静态图都是结构图,动态图都是交互图
的说法),故排除ACD描述流程因此不可能是静态图,排除C。状态图强调状态的变迁,活动图强调对象间的控制流程,用例图强调外部参与者和系统用例之间的交互关系。故A最合适
案例分析练习题
问题1:参与者可以是用户、第三方系统、时间/温度等触发因素
问题2:下面给出了9种内容,填出七种即可得分
问题3:
并没有设计类的说法,类的分类只有三种——实体类、控制类、边界类。只有在做类的设计的时候才会有类的类型区分,是为了设计(动词)类,才有类的类型,因此这里其实就是描述类的三种类型。PS:问题说举2个实例,就不要多写了以免扣分
暂无需要解释的,加强记忆理解即可
本文链接: http://www.ionluo.cn/blog/posts/659bc5bf.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!