UML类图的六种关系


一、依赖关系(Dependency)

只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编译都通过不了。代码如下(示例):

package umllei;

public class PersonServiceBean {
	private PersonDao personDao;
	public void save(Person person) {}
		public IDCard getIDCard(Integer personid) {
			return null;
			}
		public  void modify() {
			Department department = new Department();
		}
}
/*
 * 1、在类中用到了对方称为依赖关系
 * 2、如果是类的成员属性
 * 3、如果是方法的返回类型、可以是方法接收的参数类型
 * 4、在类的方法中使用到
 * 这四种情况都可以称为依赖关系
 */


在这里插入图片描述

二、泛化关系(Generalization)

泛化关系实际上就是继承关系,他是依赖关系的特例。
代码如下(示例):

public abstract class DaoSupport {
	public void save(Object entity) {}//方法
	public void delete(Object id) {}//方法
		}
public class PersonServiceBean extends DaoSupport {

}

在这里插入图片描述

三、实现关系(Implementation)

实现关系实际上就是A类实现B类,也是依赖关系的一种特例。
代码如下(示例):

package umllei;

public interface PersonService{
	public void delete(Integer id);

		}


package umllei;

public class PersonServiceBean implements PersonService {
	@Override
	public void delete(Integer id) {
		System.out.println("");
		
	}

}

在这里插入图片描述

四、关联关系(Association)

关联关系实际上就是类与类之间的联系,他是依赖关系的特例关联具有导航性:即双向关系或单向关系
关系具有多重性:如“1”(表示有且仅有一个),“0…”(表示0个或者多个),“0,1”(表示0个或者一个),“n…m”(表示n到m个都可以),"m.…*”(表示至少m个)。
代码如下(示例):
单向一对一关系:

public class Person {
	private IDCard card;

	}

public class IDCard{
	}

在这里插入图片描述

双向一对一关系:

public class IDCard{
	private Person person;
	}
public class Person {
	private IDCard card;
	}

在这里插入图片描述
只要记住有单向和双向就行了。

五、聚合关系(Aggregation)

聚合关系(Aggregation)表示的是整体和部分的关系,但是整体与部分可以分开。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。
如:一台电脑由键盘(keyboard)、显示器(monitor),鼠标等组成;组成电脑的各个配件是可以从电脑上分离出来的,使用带空心菱形的实线来表示.
代码如下(示例):例如聚合关系

public class Computer {
	private Mouse mouse;//鼠标可以和电脑分离
	private Moniter moniter;//显示器也可以和电脑分离
	public void setMouse(Mouse mouse) {
		this.mouse = mouse;
	}
	public void setMoniter(Moniter moniter) {
		this.moniter = moniter;
	}
	}

在这里插入图片描述

六、组合关系(Composite)

组合关系:也就是整体与部分的关系,但是整体与部分不可以分开。
组合关系就是用实心菱形箭头表示。
程序中有一种级联删除,简单理解就是删除一个类或者其他的时候,另一个也同时删除了,这就是级联删除。他们就是组合关系。
而组合关系呢,如果设定Mouse、Moniter和Computer是不可分离的,则升级为组合关系,代码如下:

public class Computer {
	private Mouse mouse = new Mouse();
	private Moniter moniter = new Moniter();
	public void setMouse(Mouse mouse) {
		this.mouse = mouse;
	}
	public void setMoniter(Moniter moniter) {
		this.moniter = moniter;
	}
	}

在这里插入图片描述

如果关系可以分开,就是聚合,不可以分开就是组合。


版权声明:本文为qq_43968154原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。