当前课程知识点:软件工程 >  第9章 面向对象分析与设计 >  9.2 CRC卡片分拣法 >  讲课视频-2

返回《软件工程》慕课在线视频课程列表

讲课视频-2在线视频

讲课视频-2

下一节:讲课视频-1

返回《软件工程》慕课在线视频列表

讲课视频-2课程教案、知识点、字幕

这样我们筛选出来的

就剩下6个类

分子是牌 牌叠 手牌 庄家

玩家和赌注

从刚刚的过程我们可以看到

这里在CRC卡片分拣法里

类识别的方式

是从原始的文本资料中识别类

找出干系人提交给我们的

问题描述中的名词和名词短语

在名词和名词短语中

找出它描述的应用领域中

信息的结构或者本质

把它加入到我们考虑的范围中来

除了用这种方式以外

我们还可以通过其它的来源

来识别出类的定义

比如相关背景信息

比如由用户和干系人直接提供

还比如我们知道

适用于当前场景下的

那些分析模式中已有的类

在类识别过程中

我们要把握的一个原则是

要尽可能识别出多的侯选类

之后我们再按照一定的标准

对它的类的价值和用处进行分析

然后再筛选这些侯选的类

我们明确的作出了理性判断以后

把一个类排除在外

要比在第一版本中根本不考虑

来得更合理

识别出类以后

我们为每个类

分别分配一张卡片

下一步就是针对每个类

来识别它的功能职责

由于功能职责总是关乎

这个类的对象相关的行为和动作

下一步我们就是要问题描述中

扫描相关的动词短语

在这里需要注意的是

并不是每一个动词

都会成为类的职责

我们要找出那些

对我们关注的刚刚找出的

这些侯选类相关的那些动词

有的时候多个具体的动作

还可以合并为一个职责

随着我们对这个问题

分析过程的深入

我们还会发现新的职责

因此 无论是类的定义

还是职责的定义

都是一个不断修正和提升的过程

是要有反复的

当我们发现

两个类是在合作完成

同一个职责的时候

我们会为二者同时添加该职责

从这一页的描述中

我们过滤出来的是

赌注 上限 底牌 名牌

在这一页中我们没有发现

新的名词

因此我们就继续后边的过程

对问题描述进行扫描

可以获得比较精确的

侯选类的识别

但是在识别类的功能的时候

我们会发现

问题描述本身只能给我们一些

重要的启示

很多过程也是需要我们透过字面

来发现出来 抽取出来的

比如对于牌

我们会知道

我们需要知道牌面的数字是什么

花色是什么

对应花色的点数是什么

而要知道点数

我们首先要知道

它是数字牌 还是A J Q K

因此 这里头蕴含的

不仅仅是字面

能够识别出来的动词

还有我们对整个问题的

深入的理解

在识别出侯选类对应的

功能职责之后

我们将进入下一步

就是在这些对应的功能职责中

找出哪些侯选类之间

是要存在交互协作关系

共同完成某些过程和功能的

我们前边已经学过了UML用例图

在识别了侯选类的职责之后

我们就是要识别类

类对象之间的交互协作关系

这里我们就可以采用

类似UML用例图的方法

将交互着的类找出来

但是我们要知道

目的并不是为了写出所有的

应用场景

而是为了

进一步对类和刚刚的职责定义

进行精化

这里我们给出的是一个

21点游戏进行过程中

庄家和玩家的交互情景的例子

通过对这个例子的分析

我们可以进一步完善

庄家 玩家和手牌的职责定义

比如庄家首先洗牌

玩家下注

庄家发第一张牌

玩家拿牌

庄家给自己发牌

手牌返回庄家手牌的点数

庄家发第二张牌

庄家询问玩家是否需要继续要牌

玩家根据自己手中的点数

决定是否继续要牌

并根据点数确定何时停止

当计算出最终的点数之后

玩家根据需要

决定是否要增加还是减少赌注

最终

玩家亮牌 庄家亮牌

并根据输赢

来分配最终的赌金

通过这个情景的分析

我们识别出了

以下的交互关系

首先 就是应用

庄家 玩家 手牌

它们各自向彼此发送了

什么样的消息

通过对这个交互关系的识别

可以得到最终的CRC卡片

也就是如图中所示的

首先我们得到纸牌这个类

CARD它的功能职责是

它既要知道它的牌是什么

又要知道它的点数是什么

与纸牌交互的类包括牌叠

而跟牌叠交互的类

包括庄家和手牌

而牌叠最主要的功能就是

重新洗牌

牌叠的牌的张数

拿到牌叠的下一张牌

以及显示当前的牌叠在屏幕上

这是庄家的职责

首先庄家要决定何时开启下一轮

还要在牌叠中取一张卡

和它交互的包括手牌

也就是庄家自身的手牌

和玩家以及牌叠

玩家的功能职责包括

要牌 拿到下一张牌

亮牌以及计算手牌的点数

和它交互的类包括

庄家和手牌

而手牌本身

它既和庄家交互也和玩家交互

它的主要职责就是

返回当前牌的点数

在手牌中增加一张底牌

以及亮牌

我们通过这样的初步分析

就得到了第一张UML类图

这里我们既得到了

当前的类的定义

也得到了类的一部分属性

以及相关活动的定义

它的相关操作

主要来自刚刚的交互过程

也就是所谓的功能职责

而它的属性

就是在功能职责的过程中

要用到的那些属性

软件工程课程列表:

第1章 初识软件工程

-1.1 软件无处不在

--讲课视频

-1.2 软件的本质特性

--讲授视频

-1.3 软件工程的产生与发展

--讲授视频

-1.4 软件工程的基本概念

--讲授视频

-1.5 软件质量实现

--讲授视频

-1.6 业界人士谈软件工程

--海芯科技创始人施侃乐访谈

-测验题--作业

-讨论题

--讨论题

-作业题

--第一张 作业题

第2章 编写高质量代码

-2.1 编程过程与规范

--讲课视频

-2.2 良好的编程实践

--讲课视频

-2.3 Python集成开发环境

--讲课视频

-2.4 代码静态检查

--讲课视频

-2.5 代码性能分析

--讲课视频

-2.6 结对编程实践

--讲课视频

-2.7 刘贺谈软件工程

--讲课视频

--讨论

-测验题--作业

-作业题

--第二章 作业题

第3章 单元测试

-3.1 单元测试概述

--讲课视频

-3.2 黑盒测试方法

--黑盒测试方法

-3.3 白盒测试方法

--基本概念

--代码覆盖标准

--基本路径测试

-3.4 单元测试工具

--单元测试工具

--html

-测验题--作业

-作业题

--第三章 作业题

--作业题附件

第4章 软件开发过程

-4.1 软件过程

--讲课视频

-4.2 软件过程模型

--讲课视频

-4.3 敏捷开发过程

--讲课视频

-4.4 微软公司开发过程

--邹欣经理自我介绍

--微软开发过程之一

--微软开发过程之二

-测验题--作业

第5章 团队开发管理

-5.1 团队组织与管理

--讲课视频

-5.2 项目沟通管理

--讲课视频

-5.3 软件项目计划

--讲课视频

-5.4 软件项目估算

--讲课视频

-测验题--作业

-讨论题

--讨论

第6章 敏捷开发与配置管理

-6.1 敏捷开发之Scrum

-- 敏捷开发之Scrum

--html

-6.2 用户故事与估算

--讲课视频

-6.3 团队协作工具Tower

--Tower工具介绍(1)

--Tower工具介绍(2)

-6.4 配置管理

--讲课视频

-6.5 配置管理工具Git

--讲课视频

-测验题--作业

-作业题--作业

第7章 需求获取

-7.1 需求工程师

--讲课视频

-7.2 需求定义

--讲课视频

-7.3 需求的类型

--讲课视频

--讲课视频(2)

-7.4 需求工程过程

--讲课视频

-7.5 需求的主要来源

--讲课视频

-7.6 需求获取技术

--讲课视频

--讲课视频二

--讲课视频三

-7.7 撰写需求文档

--讲课视频

-测验题--作业

-讨论题

--讨论

第8章 用例建模

-8.1 用例建模概念

--讲课视频

-8.2 用例建模过程

--讲课视频

-8.3 用例建模精讲

--讲课视频

-8.4 建模工具介绍

--讲课视频

-8.5 微信抢票应用案例

--讲课视频

-测验题--作业

-讨论题

--讨论

第9章 面向对象分析与设计

-9.1 面向对象分析

--讲课视频

-9.2 CRC卡片分拣法

--讲课视频-1

--讲课视频-2

-9.3 面向对象设计

--讲课视频-1

--讲课视频-2

-9.4 类图建模

--讲课视频-1

--讲课视频-2

-第9章 面向对象分析与设计--测验题

-讨论题

--讨论

第10章 行为建模

-10.1 顺序图概念

--讲课视频

-10.2 顺序图建模

--讲课视频

-10.3 顺序图风格

--讲义视频

-10.4 状态建模

--讲课视频

-10.5 状态图

--讲课视频

-10.6 状态图精讲

--讲义视频

-测验题--作业

-讨论题

--讨论

第11章 软件系统设计

-11.1 软件体系结构概念

--讲授视频

-11.2 软件设计原则

--讲授视频

-11.3 软件体系结构风格(一)

--讲授视频

-11.4 软件体系结构风格(二)

--讲授视频

-11.5 软件体系结构风格(三)

--讲授视频

-11.6 软件设计过程

--讲授视频

-11.7 Web系统架构设计

--讲授视频

-11.8 数据库选择策略

--讲授视频

-测验题--作业

-作业题

--html

--html

--html

-作业题--作业

第12章 软件交互设计

-12.1 交互设计概述

--讲授视频

-12.2 交互设计目标

--讲授视频

-12.3 GUI设计原则

--讲课视频

-12.4 KLM效率模型

--Video

-12.5 Fitts定律

--讲授视频

-12.6 交互设计过程

--讲授视频

-测验题--作业

第13章 软件系统测试

-13.1 软件测试概念

--讲课视频

-13.2 软件测试类型

--讲课视频

-13.3 软件功能测试

--讲课视频

-13.4 软件性能测试

--讲课视频

-测验题--作业

第14章 软件交付与维护

-14.1 软件部署与交付

--讲课视频

-14.2 软件演化与维护

--讲课视频

-测验题--作业

第15章 期末考试与总结

-第一部分:基础知识

-第二部分:编程与测试(选做)

--编程与测试(选做)

讲课视频-2笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。