UML类图

您所在的位置:网站首页 菱形符号 UML类图

UML类图

2023-06-23 01:42| 来源: 网络整理| 查看: 265

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 { + callB(ClassB classB): void } class ClassB { + bMethod(): void } @enduml  Ⅲ、组合关系

组合关系实质上是关联关系的一种,组合关系最显著的特征就是“同生共死”,如何理解?一句话解释就是:一旦整体对象不存在,那么部分对象也将不存在

代码 package org.association; /** * @author LOVEYOU */ public class ClassA { private ClassB classB; private ClassC classC; public 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 办公设备维修网 版权所有 豫ICP备15022753号-3