1) 类图
类
用矩形(三个)表示
类的关系
类图的构成
定义
用来描述系统的静态部分
类图的构成
Classes(类)
Interfaces(接口)
Collaborations(合作)
Dependency(依赖) ,Generalization andAssociation relationships(一般关联)
Packages or Subsystems(forgrouping)(包或子系统)
类图深入讨论
可见性(Visibility)
public:什么也没有;private:前面加锁;protected:前面加钥匙;
public:+;protected:#;private:-;package:~
范围(Scope)
每个实例自己拥有自己的属性和方法。
静态成员:对一个雷的所有实例共享一个成员。
抽象类:不能实例化。在代码类前加abstract Class
Root类:父类,在图类名后加{root};leaf类:在图类名后加{leaf};
多重性:类之间的数量对应关系。
属性(Attributes)
[visibility]name[multiplicity][:type][=initial-value][{property-string}]
分类
changeable
addOnly
frozen
操作(Operation)
[visibility] name [(parameter-list)][:return type] [{property-string}]
类图的应用
1、抽象得到类
2、抽象得到每个类的属性和方法
3、表达类与类间的关系:用最准确的关系来描述
(能用组合就不用聚合,能用聚合就不用一般关联,能用一般关联就不用依赖;该要用接口实现时就用接口实现,需要继承时则用继承)
2)包图
包图
包的作用
逻辑上把一个复杂的图模块化;组织源代码。
包的图符
包中的元素
若包被撤销了,则其中的元素也被撤销了。
包与包之间的关系
泛化
细化
依赖(常用)
如果两个包中任意两个类之间有依赖关系,则这两个包之间有依赖关系。
包的常见问题
避免循环依赖产生。(一旦出现循环依赖则无法编译)
测试时可以以包为测试单位
尽量把概念和语义上相接近的元素包含在同一个包中。
将包内可以进行包外访问的元素标记为公共的,其他元素标记为受保护的或私有的。
3)对象图
是一个类的实例,用矩形表示