UML类图 | 您所在的位置:网站首页 › 类图中0n › UML类图 |
UML类图最常用的6种类间关系,分别是关联关系、依赖关系、组合关系、聚合关系、泛化关系和接口与实现关系。那这六种类间关系我们到底该如何理解,如何画图,我们废话不多说,直接开始讲解。 Ⅰ、关联关系关联关系是类与类之间最常用的一种关系,那该如何判断什么是关联关系?一句话解释就是:全局变量就是关联关系 代码 package org.association; /** * @author LOVEYOU */ public class ClassA { private ClassB classB; } package org.association; /** * @author LOVEYOU */ public class ClassB { } 类图类图用的是PlantUML,实现代码如下(可忽略) @startuml skinparam classAttributeIconSize 0 ClassA --> ClassB: contains class ClassA { - classB: ClassB } class ClassB { } @enduml Ⅱ、依赖关系依赖关系是一种使用关系,那该如何判断什么是依赖关系?一句话解释就是:局部变量就是依赖关系 代码 package org.association; /** * @author LOVEYOU */ public class ClassA { public void CallB(ClassB classB) { classB.classBMethod(); } } package org.association; /** * @author LOVEYOU */ public class ClassB { public void bMethod() { System.out.println("我是ClassB的方法"); } } 类图
类图用的是PlantUML,实现代码如下(可忽略) @startuml skinparam classAttributeIconSize 0 ClassA ..> ClassB class ClassA { + callBMethod(ClassB classB): void } class ClassB { + bMethod(): void } @enduml Ⅲ、组合关系组合关系实质上是关联关系的一种,组合关系最显著的特征就是“同生共死”,如何理解?一句话解释就是:一旦整体对象不存在,那么部分对象也将不存在。 代码 package org.association; /** * @author LOVEYOU */ public class ClassA { private ClassB classB; private ClassC classC; public void ClassA() { classB = new ClassB(); classC = new ClassC(); } } package org.association; /** * @author LOVEYOU */ public class ClassC { } 类图类图用的是PlantUML,实现代码如下(可忽略) @startuml skinparam classAttributeIconSize 0 ClassA *--> ClassB: has ClassA *--> ClassC: has class ClassA { -classB: ClassB -classC: ClassC +ClassA() } class ClassB { } class ClassC { } @enduml Ⅳ、聚合关系聚合关系也是关联关系的一种,那么该如何判别聚合关系呢?一句话解释就是:聚合关系既是关联关系又是依赖关系。 代码 package org.association; /** * @author LOVEYOU */ public class ClassA { private ClassB classB; public ClassA(ClassB classB) { this.classB = classB; } public void setClassB(ClassB classB) { this.classB = classB; } } package org.association; /** * @author LOVEYOU */ public class ClassB { } 类图类图用的是PlantUML,实现代码如下(可忽略) @startuml skinparam classAttributeIconSize 0 ClassA o--> ClassB: contains class ClassA { - classB: ClassB + ClassA(ClassB classB) + setClassB(ClassB classB): void } class ClassB { } @enduml Ⅴ、泛化关系泛化关系也就是继承关系。一句话解释就是:Java中看到“extends”关键字就是泛化关系。 代码 package org.association; /** * @author LOVEYOU */ public class ClassA { public String name; public int age; public void aMethod() { System.out.println("A方法"); } } package org.association; /** * @author LOVEYOU */ public class ClassB extends ClassA{ private int BPhoneNumber; public void bMethod() { System.out.println("B方法"); } } package org.association; /** * @author LOVEYOU */ public class ClassC extends ClassA{ private int CPhoneNumber; public void cMethod() { System.out.println("C方法"); } } 类图类图用的是PlantUML,实现代码如下(可忽略) @startuml skinparam classAttributeIconSize 0 ClassA |
CopyRight 2018-2019 实验室设备网 版权所有 |