首页 > 其他分享 >UML类图

UML类图

时间:2022-10-03 17:35:30浏览次数:76  
标签:Test1 Test2 void 类图 class test2 UML public

UML类图

用图来表示类与类之间抽象关系的图叫做类图


笔记总结来源于:B站尚硅谷——Java设计模式
image

类之间的关系有:依赖、泛化、实现、关联、聚合和组合

类图的安装

本篇文章采用vscode安装PlantUML来实现类图的设计

一、依赖

如果一个类中是用到了另外一个类,那么这两个类之间就存在依赖关系

public class Demo06 {
    public static void main(String[] args) {
        
    }
}

class Test1{
    Test2 b = new Test2();

    public void fun1(Test3 c){
        
    }

    public Test4 fun2(){
        return null;
    }

}

class Test2{

}

class Test3{

}

class Test4{

}

程序中类Test都使用到了Test2,Test3,Test4类,因此Test1类与Test2,Test3,Test4类存在依赖关系

(关于类图语法推荐这篇博客

根据代码编写以下类图

@startuml 122

class Test1{
    Test2 b;

    void fun1(Test3 c);
    Test4 fun2();
}

class Test2{

}

class Test3{

}

class Test4{

}


Test1 ...> Test2

Test1 ...> Test3

Test1 ...> Test4


@enduml

可以的到以下类图

image

二、泛化关系

泛化关系其实是依赖关系的一种特例,其实就是继承关系

public class Demo07 {
    public static void main(String[] args) {

    }    
}

class Test1{

}

class Test2 extends Test1{

}

对应的UML类图为:

@startuml 122

class Test1{

}

class Test2{

}

Test2 ---|> Test1

@enduml

image

三、实现

对接口或者抽象类的实现关系

public class Demo08 {
    public static void main(String[] args) {

    }   
}


interface Interface1{
    public void sayHello();
}


class Test implements Interface1{


    public void sayHello(){
        System.out.println("hello world!!!");
    }
}

对应的UML类图为:

@startuml 122

interface Interface1{
    void sayHello();
}

class Test1 implements Interface1{

}

@enduml

image

四、关联

关联关系也是依赖关系的特例,分为双向关联和单向关联

4.1单向关联

public class Demo09 {
    public static void main(String[] args) {
        
    }
}

class Test1{

}


class Test2{
    private Test1 test1;
}
@startuml 122

class Test1{

}


class Test2{
    private Test1 test1;
}

Test2 ---> Test1

@enduml

image

4.2双向关联

public class Demo09 {
    public static void main(String[] args) {
        
    }
}

class Test1{
    private Test2 test2;
}


class Test2{
    private Test1 test1;
}
@startuml 122

class Test1{
    private Test2 test2;
}


class Test2{
    private Test1 test1;
}

Test2 --- Test1

@enduml

image

五、聚合

关联关系的一种特例,在创建A类时可以剥离关联对象的就叫聚合

public class Demo09 {
    public static void main(String[] args) {
        
    }
}

class Test1{
    private Test2 test2;

    public void setTest2(Test2 test2){
        this.test2 = test2;
    }
}


class Test2{
    
}

在这个代码中,在创建Test1时,属性test2不是必须的,我可以之后在通过方法设置他,因此可以理解为可以剥离出来,此方式就叫做聚合

@startuml 122

class Test1{
    private Test2 test2;
}


class Test2{
    
}

Test2 ---o Test1

@enduml

image

六、组合

关联关系的一种特例,在创建A类时不可剥离关联对象的就叫组合

public class Demo09 {
    public static void main(String[] args) {
        
    }
}

class Test1{
    private Test2 test2 = new Test2;

}


class Test2{
    
}

在这个代码中,在创建Test1时,test2已经被创建了,因此可以理解为可以不可剥离出来,此方式就叫做组合

@startuml 122

class Test1{
    private Test2 test2;
}


class Test2{
    
}

Test2 ---* Test1

@enduml

image

标签:Test1,Test2,void,类图,class,test2,UML,public
From: https://www.cnblogs.com/Star-Vik/p/16750800.html

相关文章

  • UML _ 组件图/构件图
    概述组件定义组件(Component/构件)是系统设计的一个模块化部分,并对外提供了一组接口。组件是一个独立的封装单位(封装性),是系统中可替换的物理单元(替换性),需要遵循并......
  • UMLChina建模竞赛第3赛季第1轮-列举软件开发中的“遮羞布”
    ​​软件方法(下)分析和设计第8章连载[20210723更新]>>​​人为了遮掩某些容易被人批评的东西,会有意无意地做出一些事情来“遮羞”。例如,考生知道自己不努力学习,肯定考不好,可......
  • [答疑]如何多选关联关系(类图),把line style统一修改
    尘语<xnony***q.com>10:07:36[Q]EA12,请问如何多选关联关系(类图),把linestyle统一修改?尘语<xnony***q.com>10:15:22即多选关联,统一变更连线格式潘加宇(3504847)17:05:......
  • [答疑]收款的类图
    2011/10/2310:26:51广罗得权(3075***697)ok否。请大家指点2011/10/2310:26:37广罗得权(3075***697)2011/10/2317:34:57潘加宇(704837756)这是什么,照猫画虎啊,拿着一张收款单......
  • UML和萨德
    网上看到美国海军研究生院(蒙特利)的一篇文章"弹道导弹防御系统的需求分析和技术支持",UML和萨德同框了。截几个图:​......
  • Visio添加三种UML2.5模板
    微软Visio开发团队2月23日的Blog中提到,Visio除了原有的UML模板外,新增了三种UML2.5模板,支持组件图、通信图和部署图。​​https://blogs.office.com/2017/02/23/visualize-w......
  • UML _ 对象图
    对象图一般不用,但是对象会在以后用到,因此要学习对象图是UML中的非正式图,使用较为有限,主要用于表示系统在某个特定时刻的具体情况。对象图(ObjectDiagram)可以描述系统在......
  • 【UML软件分析】常见软件过程模型
    前言为什么写这篇博客:软件工程是一门大学科,想学好必先理解总结归纳。这篇文章说了什么:介绍了常见的软件过程模型,介绍各个模型的特点,优缺点,以及适用场景一、典型的过程......
  • UML _ 状态机图
    概述对现实世界中事物的观察现实世界中的各种事物通常都有一个生命周期。在事物被创建后,经过一定阶段的变迁,它可能就结束或消亡了。例如:生物会经历出生、成长、衰老和......
  • 《UML面向对象建模与设计》———2022夏末的枫萏
    OLD一、枫萏  嗨,大家好!既然大家都能在班级内看见自己的名字了,那我就来跟大家介绍一下我的另一个名字吧——枫萏(dàn),或许它的一代名大家会更容易熟悉一些:疯蛋。  我......