Loading

UML类图

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

posted @ 2022-10-03 17:15  StarVik  阅读(48)  评论(0编辑  收藏  举报