AOE边活动网络
- 顶点表示事件,有向边表示活动,有向边上的权值表示一项活动的持续时间
- 顶点所代表的事件,表示它的入边的活动均已完成,出边的活动可以开始
- 关键路径: 从源点到汇点最长的路径
- 关键活动:关键路径上的活动。或对整个工程的最短完成时间有影响的活动。即如它不能按期完成就会影响整个工程
找关键活动的目的:
(1)重视关键活动;
(2)缩短整个工期。
关键活动对缩短整个工期起着至关重要的作用;
方法
- 1 事件最早发生的事件,用拓扑排序就能计算
earliest( i ) = 从源点 v0 到 vi的最长路径长度 - 2 事件 vi 的允许的最晚发生时间。
latest( i ) = earliest(n) - 从 vi 到 汇点 vn 的最长路径长度 - 3 假设 ak 表示边 <vi ,vj> ,边的权值为 w(i, j)
early(k) = earliest( i ) ,事件 vi 的最早可能发生的时间 - 4 活动 ak 允许的最晚开始时间
late(k) = latest( j ) - w(i, j) - 5 early(k) = late(k) ,则 ak是关键路径
关键活动必须在它可能的最早开始时间立即开始,否则将影响整个工程。
算法
- 1 计算ealiest 从前向后算
从earliest(0)=0开始,自前向后递推计算:
earliest(j)=max{earliest(i)+w(i,j)} - 2 计算 latest 从后向前算
latest(i)=mim{latest(j)-w(i,j)}
S(i)是所有以i为头的弧<i,j>的弧尾j的集合
标准建模语言UML
类图
- 类,是对现实中事物的抽象
- 从上到下分三部分,类名、属性和操作
- 属性有属性名,还有其他的描述信息,可见性、参数类型、缺省值
- 每一个操作也都有一个名字,其它可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等
接口
- 一组操作的集合,只有操作的声明,没有实现
抽象类
- 不能被实例化的类,至少包含一个抽象操作
模板类
- 种参数化的类,在编译时把模版参数绑定到不同的数据类型,从而产生不同的类
类图中的关系
- 关系的名字
- 类的角色
- 多重性
关联关系
- 对象之间的引用关系
- 单向关联: 用一个箭头加实现表示
- 上图表示每个顾客都有一个地址,这通过让Customer类持有一个类型为Address的成员变量类实现,必然应该顾客对象,关联一个地址对象
双向关联,省略箭头
- 上图中在Customer类中维护一个List,表示一个顾客可以购买多个商品;在Product类中维护一个Customer类型的成员变量表示这个产品被哪个顾客所购买
- 一个顾客可以买多种商品,商品可以被顾客购买
聚合关系
- 是整体和部分之间的关系
- 成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。例如,学校与老师的关系,学校包含老师,但如果学校停办了,老师依然存在。
组合关系
- 整体与部分关系
- 部分不能脱离整体,头和嘴巴的关系
- 语义更强的聚合,部分和整体具有相同的生命周期
- 一般的关 联关系语义较弱。也有两种语义较强,分别是聚合与组合
依赖关系
- 某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)
- 有多种表现形式,例如绑定(bind)、友元(friend)
继承关系(泛化)
- 继承关系是对象之间耦合度最大的一种关系
- 空心三角指向父类
实现关系
- 实现关系是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作
UML 用例图
- 参与者
- 用例: 系统外部可见的功能单元
关系
- 关联:参与者与用例之间的交互
- 包含:必选的,缺少包含用力,基用例就不完整
- 拓展:不是必选的
- 泛化:参与者之间的关系