【设计模式】UML类图介绍
UML类图简介
一、注释
注释(comment)
注释就是对类图的补充说明,可以附加在任何元素上,用右上角有折角的矩形来表示,其内放置说明文字,通过虚线连接被注释的元素。(如下图)
二、类
类(Class)
在面向对象(OO) 编程中,类是对现实世界中一组具有相同特征的物体的抽象。在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示:
类的属性的完整表示方式:
可见性 名称 :类型 [ = 缺省值]
类的方法的完整表示方式:
可见性 名称(参数列表) [ : 返回类型]
三、接口
在UML中,接口有两种表达方式:
1.普通接口表示法(飞翔)
2.棒棒糖表示法(讲人话),使用一个带有名称的小圆圈来表示,在旁边写上相应接口名称,没有具体接口方法。
接口名称通常以大写字母I(interface)开头。
四、类与类之间的关系
1.依赖关系
只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,编绎通过不了。(虚线箭头)
例如:
public class PersonDao{}
public class IDCard{}
public class Person{}
public class Department{}
public class PersonServiceBean {
private PersonDao personDao;
public IDCard getIDCard(Integer personid) { }
public void save(Person person){}
public void modify(){Department department = new Department();
} }
如果A类用到了B类 ,则A依赖于B, 没有B,A编译也不通过。
2.关联关系
关联关系实际上就是类与类之间的联系,是依赖关系的特例。(实线箭头)
1)单向一对一关系
public class Person { private IDCard card;}
public class IDCard{}
2)双向一对一关系
public class Person { private IDCard card;}
public class IDCard{ private Person person; }
3.继承关系
继承关系也称泛化关系,是依赖关系的特例。 A类继承了B类也相当于A类用到了B类。(空心三角形+实线)
public abstract class DaoSupport{
public void save(Object entity){ }
public void delete(Object id){ }
}
public class PersonServiceBean extends DaoSupport{ }
PersonServiceBean继承了DaoSupport
4.实现关系
实现关系实际上就是A类实现B接口,是依赖关系的特例,依赖关系更强。(空心三角形+虚线)
public interface PersonService {
public void delete(Interger id);
}
public class PersonServiceBean implements PersonService {
public void delete(Interger id){}
}
PersonServiceBean实现了PersonService这个接口-实现关系
实现关系实际上就是A类实现B接口。
5.聚合关系
聚合关系表示的是整体和部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。
显示器也是可以分离的;鼠标类、显示器类与电脑类构成聚合关系。对应类图:
认为可以分开的,是聚合关系:
public class Computer {
private Mouse mouse; // 鼠标可以和computer分离
private Monitor monitor; //显示器可以和Computer分离
public void setMouse(Mouse mouse) {this.mouse = mouse; }
public void setMonitor (Monitor monitor) {
this.monitor = monitor;}
认为不可分开的,是组合关系:
public class Computer {
private Mouse mouse = new Mouse();
//鼠标不可以和computer分离——组合关系
private Moniter monitor = new Monitor();
//显示器不可以和Computer分离——组合关系
public void setMouse(Mouse mouse) {this .mouse=mouse;}
public void setMonitor(Monitor monitor) {
this .monitor = monitor;}
}
6.组合关系
组合关系:也是整体与部分的关系,但是整体与部分不可以分开。(实心菱形+实线)
public class Person{
private IDCard card; //聚合
private Head head = new Head(); //组合
}
public class IDCard{}
public class Head{}
public class Person{
private IDCard card = new IDCard(); //组合
private Head head = new Head(); //组合
}
public class IDCard{}
public class Head{}
在UML类图中,常见的关系如下: