UML
uml是统一建模语言 为软件开发提供一些标准的图例,统一开发思想,从而促进团队协作
在软件过程中,会用到UML (分析、设计、编码、测试、维护)
主流的有:
RUP:rational unified process 合理的统一过程
强调软件开发一开始就要有好的设计 才能有好的设计
XP编程 eXtreme Programming 极限编程 敏捷的软件开发实践
1、用户素材 2、短周期交付 3、结对编程 4、测试驱动开发 5、重构
3:两个工程师合作编程 一个工程师编码 另一个工程师看其编码 交互思想
4:编写测试用例,测试失败 迫使我们编写实际代码 直到所有的测试用例都测试通过
5:不改变软件行为的前提,重构代码,从而改进既有代码的设计
分析:是什么 what
设计:怎么做 how
都可以用UML建模 来提供蓝图 不会偏离思想
静态结构:
类图(class diagram)
对象图(object diagram)
用例图(use case diagram)
组件图(componet diagram)
部署图(deployment diagram)
组合结构图(composite structure diagram)
动态建模:
序列图(sequence diagram)
协作图(collaboration diagram)
状态图(statechart diagram)
活动图(activity diagram)
先介绍类图:
继承(泛化):(generalization)
C++里面是没有接口这个概念的
关联(固定关系) Association 箭头表示有关系
聚合关系:强调整体与局部的关系
整体并不负责局部的声明周期 局部还可以重复利用,可能是共享的
Aggregation
举例:
class B
class A
{
public:
B b_; //这样子A就负责B的生命周期 显然不合理
B *b_; //这样子就没有负责释放局部对象
}
组合关系(比聚合更强) 叶师强调整体与局部之间的关系Composition
组合是A HAS B 是固定的
继承 A IS B
依赖关系:
类A依赖于B:
从语义上来上是A use B,偶然的,临时的
B作为A的成员函数参数
B作为A的成员函数的局部变量
A的成员函数调用B的静态方法
总结:
继承体现的是类与类之间的纵向关系,其他4种体现的是类与类之间的横向关系。
关联强弱
依赖<关联<聚合<组合
继承(A is B)
关联、聚合、组合(A has B) 固定的
依赖(A use B) 临时的
类图是可以生成代码的!
在tools->c++->generate code
提示:先在Options中的C++勾选
Generate Codes even when there is no profile
(没有配置文件生成代码)