基础知识
对象(Class)
对象是指定义一类事务,比如我们在教学系统中可以定义学生这样一个事务。
事务会有自身的一些属性,比如学生有姓名和学生ID。
事务也可以有一些对外界的操作,如学生在选课系统中应当可以去选课,查询,退选等。
和对象相对应的是实例。举个例子,学生张三,就是学生这样一个对象的实例。
类
这个概念和对象类似,是更倾向于coding的一个描述。类的操作主要是
- 操作数据
- 执行计算
类的关系主要有
- 关联关系
- A类中有B类作为成员变量
- 用 1-------0…n表示
- 聚合关系
- 整体和部分
- 整体和部分可以分开
- 组合关系
- 整体和部分
- 整体和部分不能分开
- 类似学生和学生证,学生删除后学生证无意义
- 依赖关系
- 某个类的方法使用另一个类的对象作为参数
- 泛化关系
- 表示类和类的继承
- 箭头指向父类
类的种类
- 实体类 (负责保存信息,担当数据库的职责)
- 需要保存信息的就是实体类
- 边界类 (提供接口供操作)
- 提供服务的就是边界类
- 控制类(在实体类和边界类之间增加一部验证,提供两个方面的接口,增加系统鲁棒性)
- 控制输入合法性的
- 可以合在边界类中。
举个例子:学生提交信息,信息保存的类就是实体类,学生填信息的那个网页就是边界类,检查学生信息正确与否(比如年龄应当大于0)的就是控制类。
用例
(其实这个应该放在类之前讲,但是用例你说你知道了,这里就粗略的过一下)
用例 -> 系统可见的功能单元,即系统可以为用户做的事情。
我们应当从系统的参与者中开始识别用例。
用例也有三大关系(注意箭头形状和指向关系!!)
-
include
image.png
用例1 include 用例2 -> 用例1执行过程会用到用例2(如要查询信息就需要登录系统)
-
extend
image.png
用例1 extend 用例2 表示用例2在某些情况下会用到用例1(注意和上面相反,箭头也是相反。(比如如果输入不合法 就 提示错误)
-
泛化
抽象用例,比如支付可以是现金支付,也可以是网银支付。参与者之间也可以有泛化(管理员有普通用户的权限)
image.png
几种图
首先我们要知道为啥要画图? -> 是为了更好的分析需求
那分析(画图)的顺序是什么呢?
-> 首先对用例建模(用例图)-> 根据用例找出分析类 -> 然后使用用例实现建模(用时序图表示用例的实现过程),从而发现每个对象的方法 -> 根据之前的建模建立类图 -> 如果用到数据存储,应当建立E-R图 -> 如果需要描述对象的状态变化,则需要状态图
用例图
这里需要做的就是
- 确定用例有什么(按照上面说的用例的定义来确定,根据参与者)
- 找用例之间的关系(上面三种,注意箭头形式和指向!!)
-
根据参与者画出用例图。
image.png
用例图画完我们仍然需要进行用例描述。即说清楚这个用例要干什么。
主要包含,用例名,编号,前置条件,后置条件,事件流。
前置条件:这个用例需要满足什么条件?(如查看信息需要检查是否登陆)
后置条件:用例执行完成怎么样?(如更新信息,如果更新成功就更新页面,否则不变)
事件流:包含基本流和扩展流
-> 基本流:用例的执行过程描述,如对登陆系统((1)系统提示用户输入用户名和密码。(2)用户输入自己的用户名和密码。(3)系统验证用户名和密码,用户登录系统成功)
-> 扩展流:可能会出错的流程,如上面如果用户名和密码无效,系统提示错误信息,用户可重新输入或停止。
完成这一切之后,就要进行分析类的划分。划分见前面关于类的描述。基于那个概念很容易进行划分。
时序图
时序图是什么?
其定义了对象(类)之间交互关系的模型,并按照交互的时间顺序来确定,上面我们画出了用例图和作出了用例说明,根据这个来画出时序图:
一个标准的时序图如下:
上面是上一步分析出的类(实体,边界,控制)下面是执行操作的时间流程(注意:一个用例画一个这样的时序图)上面这个图是针对打印这个操作的时序图
类图
这个主要是根据之前找到的类的种类,根据上面提到的类之间的关系,画出类图。
image.png
这是一个典型的类图(这部分考察不多,因为牵涉到数据库的部分了,如果你需要你再说)
E-R图 (这个是数据库中的概念,软工一般不会考察)
状态图
状态图的核心是状态的转换,即通过事件/动作,从一个状态转变为另一个
状态主要包含
- 内部动作(这个状态会做什么)
- 入口动作(做什么会进入这个状态)
-
出口动作(做什么会离开这个状态)
如:
image.png
网友评论