当前课程知识点:软件工程与软件自动化 > 第四章 对象模型分析 > 4.3 对象模型之二 > 授课视频2/2
大家好。下面我们继续讨论案例
下面讨论的内容是用户界面部分
这部分因为涉及到系统与用户的交互
所以这部分会大量使用序列图
这是预料之中的
下面来看一看,如何进行用户界面层的分析
注意用户界面层也需要按照对象的这种选择确定
职责
分析他们的交互过程
我们在选择用户界面对象的时候,比较明确
首先前面讨论过
我们系统和用户之间主要的这种交互点
就是窗口,然后就是报表
报表是单向的,窗口是双向的
这里我们列出了主要的窗口
这些窗口里面我可以有比较详细的说明
每一个窗口在将来实现的时候都对应着一个
类
不过这个类和开发工具是密切关联的
比如说,我们使用C#开发
C# .net提供的form这个基类
就可以派生出来,它具有很多系统提供的特性
这部分有很多工具帮助我们来做
它的选择没有问题
来看一看我们选择的
我们只是把这个窗口报表的名字写下来
它们之间的关系也没有进行一个指定
下面要确定这些类
注意这里叫界面类,它们之间的关系
确定关系。窗口的关系比较单一
我们来看,通过简单的几个例子
第一个,典型的登录窗口
同样按照问题域的表达
我知道什么,我知道谁,我干什么
通过这种说明,登录窗口,它知道什么
这里把窗口可视的元素
比如登陆窗口里面的输入框、文本框、按钮
把它们忽略掉。只看我知道谁
登录窗口登录的时候
需要一个收银员对象
登录窗口出来之后
要使用很多通用的职责
这些职责是放在商店类里面的
还需要字符串存放收银员的编号和它的密码
登录窗口提供的方法职责
它干什么,就是logon,登录
同样来分析销售窗口,卖东西的时候
卖东西的里面肯定有很多文本框
按钮甚至一些表格元素
我们只关注我知道谁
销售窗口它要获取商品的价格、商品信息
从一个条码来读取,所以说它要知道upc对象
谁销售将来要记在谁的名下,所以有session
销售窗口对应的过程,就是销售类
所以sale类是它的核心类,还有其他一些
销售窗口里面要用到的支付
这里面它还要知道支付类
销售完成之后,提交或取消
这两个可能对应到销售窗口的两个按钮
收据就是打印出来的小票
打印的内容实际上与销售的内容有关
所以收据这个类要知道sale类
收据要打印出收据头和尾以及其他的一些信息
这是整个的确定对象职责
相对来说,用户界面层的对象识别
对象的职责比问题域的对象识别
和它们的职责分配要简单
用户界面层的核心部分就是它的序列图
我们重点来看,在整个用户界面里面这种序列图
这种主要的交互应该怎么做
下面我们看,以3个主要的基础的场景来讨论
首先是登录系统
登录的过程是什么样子呢?
登录过程涉及到了哪些对象?
这些对象之间又是如何配合的呢?
登录之后要进行销售
销售的过程包括哪些呢?
进入销售之后,往往会有一个新的销售
比如说,通过按一个按钮,新的销售
当按下这个按钮的时候
后台发生了什么事情?
哪些对象生成了?
这些对象之间如何协作?
准备接收条码扫描,条码扫描之后
卖商品如何合计
付款的时候
付款类与销售类是怎么关联的?
当确定顾客就这么多商品,确定的时候
后台发生了什么事情
当下班的时候,收银员点击logoff
注销的时候,后台需要保存什么
我们首先来看一下登录
当打开登录这个序列图的时候
我们往往比较吃惊
一般认为用户界面当中有个用户名
有个密码,有个登录,有个取消
感觉很简单的一件事情
后台竟然发生了这么复杂的
涉及到了这么多对象之间的交互
登录窗口可以认为是用户直接面对的有形的类
看得见里面有些可视化的元素
当输入用户名密码,点击登录的时候
这个登录窗口类发出了些消息
这些消息发给谁
我们来捋一下思路
登录窗口当我按下确定的时候
它会把用户名和密码传到数据库
获取数据库的验证信息
有没有这个人,他什么权限
根据收银员的工号
来得到收银员的类和对象
这个职责由谁提供?
前面说过一个原则
这一类通用的职责往往会放在容器类上
在这个系统当中,地点类store商店
它是一个非常适合的容器类
所以我们会调用商店类的
get Casher From Number这个方法
来返回一个true or false,是不是有效的员工
这个方法是怎么实现的?
它能不能直接访问数据库?那是后面的事情
暂时我们在这里不做讨论
总之,这是一个典型的know型职责
登录窗口把用户名和密码传给商店的
get Casher From Number
返回一个结果,如果是,成功了
就会生成一个收银员对象
收银员对象生成之后
它会创建一个session对象
session对象里面记录了什么时候登录的
谁登录的,以及其他一些信息
session对象一旦出来
它就会再创建一个Pos机对象
然后把记录机里面加入session
我们知道session和Pos机之间是一对多的关系
也就是说一个pos机里面可以有多个session
这些工作做完之后
要创建一个销售对象,也就是主窗口
然后把主窗口显示出来
这个登录窗口可能隐藏或者销毁
这时候主窗口显示,等待售票
从这个分析当中可以看得出来
登录窗口当中按下登录按钮之后
发生的事情是非常重要的
相当于整个系统的初始化
这一点希望大家重视
并希望在编码过程当中给予练习
-1.1 软件工程的前生今世
--开篇阅读
--授课视频
-第一章 软件工程基础--1.1 软件工程的前生今世
-1.2 万变不离其宗
--授课视频1/3
--授课视频2/3
--授课视频3/3
-第一章 软件工程基础--1.2 万变不离其宗
-1.3 唯一不变的是变化
--授课视频1/3
--授课视频2/3
--授课视频3/3
--外部链接
-第一章 软件工程基础--1.3 唯一不变的是变化
-1.4 亡羊补牢为时不晚
--授课视频1/2
--授课视频2/2
-第一章 软件工程基础--1.4 亡羊补牢为时不晚
-扩展阅读与话题讨论
--扩展阅读
--话题讨论
-2.1 方法论来源于恐惧
--授课视频
-第二章 敏捷开发--2.1 方法论来源于恐惧
-2.2 敏捷是什么
--授课视频
-第二章 敏捷开发--2.2 敏捷是什么
-2.3 典型敏捷开发方法
--XP敏捷开发方法
-第二章 敏捷开发--2.3 典型敏捷开发方法
-2.4 敏捷不是万能药
--授课视频
-第二章 敏捷开发--2.4 敏捷不是万能药
-专家谈敏捷
-扩展阅读与话题讨论
--外部链接
--话题讨论
-3.1 面向对象核心概念和基本特性
-第三章 OO与UML--3.1 面向对象核心概念和基本特性
-3.2 面向对象设计基本原则
-第三章 OO与UML--3.2 面向对象设计基本原则
-3.3 通用职责分配模式(GRASP)
--通用职责分配模式
-3.3 通用职责分配模式(GRASP)--作业
-3.4 从重构到模式
--模式和设计模式
-第三章 OO与UML--3.4 从重构到模式
-3.5 使用UML设计面向对象系统
--UML综述
-第三章 OO与UML--3.5 使用UML设计面向对象系统
-3.6 主要UML模型图绘制技巧
--UML用例图
--UML类图
-第三章 OO与UML--3.6 主要UML模型图绘制技巧
-扩展阅读与话题讨论
--设计模式有毒么?
--话题讨论
-4.1 案例简介
--书籍参考
--案例说明
-4.2 对象模型之一
--授课视频1/2
--授课视频2/2
-第四章 对象模型分析--4.2 对象模型之一
-4.3 对象模型之二
--授课视频1/2
--授课视频2/2
-第四章 对象模型分析--4.3 对象模型之二
-4.4 对象模型之交互
--授课视频
-第四章 对象模型分析--4.4 对象模型之交互
-扩展阅读与话题讨论
--图书推荐
--话题讨论
-5.1 软件自动化概述
--软件自动化概述
-第五章 软件自动化技术--5.1 软件自动化概述
-5.2 典型自动化方法和工具
-第五章 软件自动化技术--5.2 典型自动化方法和工具
-5.3 文档自动化
--文档自动化视频
-第五章 软件自动化技术--5.3 文档自动化
-5.4 测试自动化
--测试自动化视频
-第五章 软件自动化技术--5.4 测试自动化
-专家访谈
-扩展阅读与话题讨论
--话题讨论
-6.1 持续集成
-第六章 CI/CD与DevOps--6.1 持续集成
-6.2 持续交付和部署
-第六章 CI/CD与DevOps--6.2 持续交付和部署
-6.3 DevOps
-第六章 CI/CD与DevOps--6.3 DevOps
-专家访谈
-扩展阅读与话题讨论
--DevOps专题
--话题讨论
-7.1 质量和质量保证
--授课视频
-第七章 软件质量保证--7.1 质量和质量保证
-7.2 软件质量模型
--授课视频
-第七章 软件质量保证--7.2 软件质量模型
-7.3 SQA组织与职责
--授课视频
-第七章 软件质量保证--7.3 SQA组织与职责
-7.4 全面软件质量管理
--授课视频
-第七章 软件质量保证--7.4 全面软件质量管理
-专家访谈
--专家访谈
-扩展阅读与话题讨论
--外部链接
--话题讨论
-8.1 软件过程综述
--授课视频
-第八章 软件过程改进--8.1 软件过程综述
-8.2 软件过程改进
--授课视频
-第八章 软件过程改进--8.2 软件过程改进
-8.3 能力成熟度模型
--授课视频
-第八章 软件过程改进--8.3 能力成熟度模型
-8.4 过程改进标准框架
--授课视频
-第八章 软件过程改进--8.4 过程改进标准框架
-扩展阅读与话题讨论
--话题讨论
-9.1软件复用综述
--授课视频
-第九章 软件复用--9.1软件复用综述
-9.2 软件构件技术
--授课视频
-第九章 软件复用--9.2 软件构件技术
-9.3 软件复用实施
--授课视频
-第九章 软件复用--9.3 软件复用实施
-9.4 微服务架构
--授课视频
-第九章 软件复用--9.4 微服务架构
-扩展阅读与话题讨论
--微服务扩展
--话题讨论
-文档提交处--文档提交