UML类图(类与类之间的关系:依赖、关联、继承、实现、聚合、组合)

一、类图——依赖关系
只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,编译通过不了。用虚线箭头。
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编译也不通过。
UML类图(类与类之间的关系:依赖、关联、继承、实现、聚合、组合)
二、类图——关联关系
关联关系实际上就是类与类之间的联系,是依赖关系的特例。
用实线箭头
关联具有导航性:即双向或单向关系。
关联具有多重性:
“1”(表示有且仅有一个);
“0…”(表示0个或多个);
“0,1”(表示0个或1个);
“n…m”(表示n到m个都可以);
“m…*”(表示至少m个);
1、单向一对一关系
//一个人一个身份证号 一对一单向的 一对一
public class Person{proivate IDCard card;}
public class IDCard{}UML类图(类与类之间的关系:依赖、关联、继承、实现、聚合、组合)
2、 双向一对一关系
//一个人对应一个身份证号 一对一
//一个身份证也对应一个人
public class Person {private IDCard card;}
public class IDCard{private Person person;}
UML类图(类与类之间的关系:依赖、关联、继承、实现、聚合、组合)
三、类图——继承关系
继承关系也称泛化关系,是依赖关系的特例。A类继承了B类也相当于A类用到了B类。用空心三角形+实线表示
UML类图(类与类之间的关系:依赖、关联、继承、实现、聚合、组合)
public abstract class DaoSupport{
public void save(Object entity){}
public void delete(Object id){}
}
public class PersonServiceBean extends DaoSupport{}
PersonServiceBean继承了DaoSupport
四、类图——实现关系
实现关系实际上就是A类实现B接口,是依赖关系的特例,依赖关系更强。用空心三角形+虚线表示
UML类图(类与类之间的关系:依赖、关联、继承、实现、聚合、组合)
public interface PersonService{
public void delete(Integer id);
}
public class PersonServiceBean implements PersonService
{public void delete(Integer id);
}
PersonServiceBean实现了PersonService这个接口-实现关系
实现关系实际上就是A类实现B接口。
五、
类图——聚合关系
聚合关系表示的是整体和部分的关系,整体和部分可以分开。聚合关系是关联关系的特例,所以它具有关联的导航性和多重性。
1、 认为可以分开就是聚合关系
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}
}
UML类图(类与类之间的关系:依赖、关联、继承、实现、聚合、组合)
聚合关系表示整体和部分的关系,整体可以与部分分开,聚合关系是关联关系的特例,具有:
导航性:
谁聚合谁?
多重性:
B聚合一个A——单聚合
B里面可以聚合多个A——多重聚合
2、认为不可以分开,是组合关系
public class Computer{
private Mouse mouse=new Mouse();//鼠标不可以与computer分离——组合关系
private Monitor monitor=new Monitor();//显示器不可以与computer分离——组合关系
public void setMouse(Mouse mouse){this.mouse=mouse;}
public void setMonitor(Monitor monitor){
this.monitor=monitor}
}
UML类图(类与类之间的关系:依赖、关联、继承、实现、聚合、组合)
六、类图——组合关系
组合关系:也是整体和部分的关系,但是整体和部分不可以分开。用实心菱形+实线
例:定义类:Person、IDCard与Head,那么
Head和Person是组合——人不能没有头。
IDCard和Person是聚合——一个人可以没有身份证,去补办就可以了。
如果在程序中Person类中定义了对IDcard进行级联删除,即删除Person时连同IDCard一起删除,那么IDCard和Person就是组合了

组合关系:也是整体与部分的关系,但是整体与部分不可以分开。
public class Person
{
private IDCard card;//聚合
private Head head=new Head();//组合
}
public class IDCard{}
public class Head{}
UML类图(类与类之间的关系:依赖、关联、继承、实现、聚合、组合)
组合关系:也是整体与部分,但是整体与部分不可以分来。
public class Person
{
private IDCard card=new IDCard();//组合
private Head head=new Head();//组合
}
public class IDCard{}
public class Head{}
UML类图(类与类之间的关系:依赖、关联、继承、实现、聚合、组合)