下面我就根据下面这个图来说解一下UML类图。java
首先,看动物那个矩形框,他就表示为一个类(Class)。类图分为三层:程序员
+
表示为public-
表示为private#
表示为protected典型表明是:web
<<interface>>
棒棒糖
的东西 鸟继承动物,大雁、鸭、企鹅继承鸟。设计模式
继承关系用空心三角形
+实线
来表示。数组
箭头指向父类。svg
public abstract class 动物{
}
public class 鸟 extends 动物{}
public class 大雁 extends 鸟{}
public class 鸭 extends 鸟{}
public class 企鹅 extends 鸟{}
大雁会飞翔,因此大雁这个类实现了飞翔这个接口。spa
实现接口用空心三角形
+虚线
来表示。设计
箭头指向接口。code
interface 飞翔{
void 飞();
}
public class 大雁 implements 飞翔{
}
这两种关系有这本质上的区别:xml
聚合
不少大雁聚在一块儿变成雁群,也能够说雁群里有雁,因此是总体和个体之间的关系,即has-a
的关系,此时总体与部分之间是可分离的,他们能够具备各自的生命周期。即雁群能够不存在了,可是孤雁仍然存在。
用空心的菱形
+实线箭头
表示
public class 雁群{
private 大雁[] 大雁数组名
}
组合
一只鸟由两个翅膀组合而成,它体现的是contains-a
关系,这种关系比聚合更强,也称为强聚合。他一样体现的是总体与部分间的关系,但此时总体和部分是不可分的,总体的生命周期结束也就意味着部分的生命周期结束。好比这只鸟死了,天然这两个翅膀也不存在了。
用实心的菱形
+实线箭头
表示
public class 鸟{
private 翅膀 wing;
public 鸟(){
wing = new 翅膀();
}
}
这两种关系对比着就很好理解。
企鹅和睦候有关联,企鹅须要“知道”气候的变化,须要“了解”气候规律,关联是最多见的关系,当一个类“知道”另外一个类时,能够用关联。
表示形式:实线箭头
。
代码表示:
public class 企鹅{
private Climate 气候;
}
凡是动物,生存都须要水和空气,这种必须的需求,咱们称之为依赖关系。
表示形式:虚线箭头
代码表示:
public abstract class 动物{
public 生存(Water 水,Oxygen 空气);
}
UML类图在实际开发中很是常见,通常项目经理或产品经理根据实际业务来肯定开发中须要的类以及类的结构。
(以UML类图的形式表现出来),可能有人会说为何搞这么麻烦,
由于肯定好类图不是一个简单的工做,他须要考虑不少事情,固然也会用到不少设计模式。
只有这样,程序员开发出来的程序才有更好的健壮性和易扩展性。