UML学习一:UML关系

一.前言

      一直以来,在画UML关系图的时候,都不是那么顺利,主要是其中的几种关联关系并不好理解。今天学习并总结下。

 

二.UML关系:三大类,六小类

  1. 泛化(Generalization):包含继承(Extends)和实现(Implement)。
  2. 依赖(Dependency):单独的一类。
  3. 关联(Association):包含关联(Association),聚合(Aggregation),组合(Compositon)。

三.继承(Extends) 

  1.  类继承类,接口继承接口。

四.实现(Implemet) 

  1. 类实现接口。UML学习一:UML关系_第1张图片

五.依赖(Dependency)

  1. 类A依赖类B的定义,B的变化引起A的改动。
  2. 这种关系是短暂的,偶然的。
  3. 如果A依赖B,则B体现为A的方法的参数,局部变量,静态方法的调用。UML学习一:UML关系_第2张图片
public class ClassA {
	//方法的参数
	public void function1(ClassB classB){
		System.out.println(classB.field);
	}
	
	//局部变量
	public void function1(){
		ClassB classB = new ClassB();
		classB.operator1();
	}
	
	//静态方法的调用
	public void function2(){
		ClassB.operator2();
	}
}

 

六.关联(Association) 

  1. 类A知道类B的属性和方法。
  2. 这种关系不是短暂的,一般是长期性的;而且双方一般是平等的。
  3. 如果A依赖B,则B体现为A的成员变量。
  4. 双向关联。UML学习一:UML关系_第3张图片

七.聚合(Aggregation) 

  1.  关联关系的特例,是一种强的关联关系。
  2. 双方是整体体和部分的关系;整体和部分可以分割,各有各的生命周期。
  3. 如果B聚合于A,则B体现为A的成员变量。这个和关联关系是一样的,只能在语义上区分。UML学习一:UML关系_第4张图片
public class Computer {
	public Cpu cpu;
	
	public Computer(){
		cpu = new Cpu(); //Computer和Cpu的周期可以相同
	}
	
	public void function(){
		cpu = new Cpu(); //Computer和Cpu的周期可以不相同
	}
}

 

八.组合(Compositon) 

  1.  关联关系的特例,是一种更强的关联关系。
  2. 双方是整体体和部分的关系;整体和部分不可以分割,相同的生命周期。
  3. 如果B组合于A,则B体现为A的成员变量。这个和关联关系是一样的,可以在语义上区分,也可以从初始化时刻区分。

public class People {
	public Brain brain;
	
	public Computer(){
		brain = new Brain(); //People和Brain的周期必须相同
	}
	
}

 

 

九.总结

UML学习一:UML关系_第5张图片

 

 

你可能感兴趣的:(UML)