1.UML类图
UML——Unified modeling language UML( 统一建模语言 ),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果
UML图的分类
用例图
静态结构图:类图、对象图、包图、组件图、部署图
动态行为图:交互图(时序图与协作图)、状态图、活动图
UML类图本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如图:  图中使用的软件为Ecplise中的AmaterasUML,如需安装可参考这篇文章: Eclipse下安装AmaterasUML插件的方法
2.UML类图关系
2.1依赖关系(Dependence) 如果没有对方,连编绎都通过不了,称之为依赖关系。
只要是在类中用到了对方,那么它们之间就存在依赖关系。那么什么是用到呢? B b 是A类的成员属性; B是A类某方法的返回类型 : B function(){}; B是A类某方法接收的参数类型: function(B b){}; A类某方法中使用到B b对象: function(){ B b=new B();} 注:该命题的逆命题不成立,之后的泛化,实现会具体解释其原因。
2.2.泛化关系(generalization)VS实现关系(Implementation) 泛化关系实际上就是继承关系,A类继承B类; 实现关系实际上就是A类实现B接口。
注:泛化关系和实现关系是依赖关系的特例,因为如果没有父类,子类无法编译通过。
2.3关联关系(Association) 关联关系实际上就是 类与类之间的联系 关联具有导航性:即双向关系或单向关系 关系具有多重性:如“1”(表示有且仅有一个),“0…”(表示0个或者多个), “0,1”(表示0个或者一个),“n…m”(表示n到 m个都可以),“m…*”(表示至少m个)。  注:关联关系是依赖关系的特例,因为如果没有被关联类,关联类无法编译通过。
2.4聚合关系(Aggregation)VS组合关系(Composition) 聚合关系:表示的是整体和部分的关系,整体与部分可以分开。 组合关系:也是整体与部分的关系,但是整体与部分不可以分开。
eg.电脑有显示屏,键盘 如果我们认为显示屏,键盘和电脑是可分离的,那么电脑和显示屏,键盘就是聚合关系
/*
*聚合关系:在new Computer()时没有键盘和显示屏对象
*在之后可自己进行设置,computer.setk(k),computer.setm(m)
*/
class Computer{
private KeyBoard k; //键盘
private Monitor m; //显示屏
public setk(KeyBoard k){
this.k=k;
}
public setm(Minitor k){
this.m=m;
}
}
如果我们认为显示屏,键盘和电脑是不可分离的,那么电脑和显示屏,键盘就是组合关系。
/*
*组合关系:在new Computer()时就已经存在键盘和显示器对象
*/
//方式一:
class Computer{
private KeyBoard k=new KeyBoard(); //键盘
private Monitor m=new Monitor(); //显示器
}
//方式二:
class Computer{
private KeyBoard k; //键盘
private Monitor m; //显示器
//构造器(不存在其它无参构造器)
public Computer(KeyBoard k,Monitor m){
this.k=k;
this.m=m;
}
}
注:类的成员属性,存在依赖关系。
参考:尚硅谷-图解Java设计模式(韩顺平) 如有错误,欢迎指正。
|