快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图

这篇具有很好参考价值的文章主要介绍了快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

一个合格的程序员,要想成长为一个高级工程师,不仅仅需要大量代码的编写,更需要对设计模式具有深入的了解和灵活的应用。从本篇文章开始,我将通过对【尚硅谷设计模式】视频课程的学习总结,尝试以最简单,最通俗易懂的方式完成对设计模式的讲解。

学习设计模式必不可少的一项能力就是能读懂UML类图,能够将自己的设计思路绘制成UML类图便于相互交流,其实稍有经验的程序员应该对UML类图都不陌生,因为我们平常会使用很多二次开发包,一般二次开发包都会提供一份包含本开发包的所有类相关的UML类图,通过UML类图可以让程序员快速的了解开发包中各个类的功能以及各个类之间的关系。

因为后面设计模式,都离不开UML类图进行解释说明,为避免有些博友对UML类图不是很清楚,本文详细讲解和梳理UML类图,并介绍通过为IDEA安装PlantUML Intergration插件实现UML类图的绘制,为后续设计模式的讲解做铺垫。本文所有代码都是以JAVA语言为例

一、UML类图简介

统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言。简单来说UML就是通过一系列规定好的符号,将复杂的文字表述转为清晰明了的符号关系图。

UML图分为三大类:

  1. 用例图
  2. 静态结构图:类图,对象图,包图,组件图,部署图
  3. 动态行为图:交互图(时序图与协作图),状态图,活动图

对于软件开发来说,最常用的就是UML类图,类图通过一系列规定好的符号对类与类之间的关系进行描述。

类图中类与类之间主要包括六大关系,描述这些关系的符号如下图所示。
类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

二、类之间的六大关系及UML类图

1、依赖关系及UML类图表示

只要一个类用到了其它类,那这个类和其它类就构成了依赖关系。如A类中用到了B,C,D类,则A类就依赖于B,C,D类。

那么一个类如何算用到了其它类?有以下几种情况:

  1. 其它类作为该类的成员属性,这种情况下,如A类用到了B类的代码示例。
class A{
    private B b;
}
  1. 其它类作为该类中方法的接收参数类型,这种情况下,如A类用到了B类的代码示例。
class A{
    public void test(B b)
    {
        //...
    }
}
  1. 其它类作为该类中方法的返回参数类型,这种情况下,如A类用到了B类的代码示例。
class A{
    public B test()
    {
        //...
        return null;
    }
}
  1. 其它类在该类的方法中使用到,这种情况下,如A类用到了B类的代码示例。
class A{
    public void test()
    {
        B b;
        System.out.println(b.toString());
    }
}

以上四种情况,都称作A类依赖于B类,UML类图中依赖关系由虚线加实心箭头表示,由依赖方指向被依赖方,A类依赖于B类的UML类图表示如下:
类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

2、泛化关系及UML类图表示

泛化关系就是继承关系,它是继承关系的特例。如A类与B类之间是泛化关系,B类继承于A类,示例代码如下:

class B
{
    
}

class A extends B
{
    
}

泛化关系也就是继承关系,在UML类图中由实线加空心箭头表示,由继承方指向被继承方,如A类继承自B类的UML类图表示如下:
类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

3、实现关系及UML类图表示

实现关系就是指一个类对另一个接口的实现,它也是依赖关系的特例。如A类与B接口直接是实现关系,A类实现B接口的代码示例如下:

class A implements B
{

}

interface B
{

}

实现关系在UML类图中由虚线加空心箭头表示,由实现方指向接口方,如A类实现B接口的UML类图表示如下:
类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

4、关联关系及UML类图表示

关联关系是指类与类之间的联系,它也是依赖关系的特例。类与类之间的关联关系包括如下几种情况:

  1. 一对一,如一个人(Person)只能对应一个身份证(IDCard),而一个身份证只能对应一个人,代码示例如下:
class Person
{
    private IDCard idCard;//一个人对应一个身份证
}
class IDCard
{
    private Person person;//一个身份证对应一个人
}

关联关系在UML类图中是由实线加实心箭头表示,该案例在UML类图中的表达如下所示:
类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

  1. 一对多,如一个教室(Classroom)可以包含多个学生(Student),代码示例如下:
class Classroom{
    List<Student> students;//一个教室可以包含多个学生
}

class Student
{
    
}

该案例在UML类图中的表达如下所示:
类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML
3. 多对多,如一个老师(Teacher)可以教多个学生(Student),而一个学生也可以有多个老师,示例代码如下:

class Teacher{
    private List<Student> students;//一个老师教多个学生
}

class Student
{
    private List<Teacher> teachers;//一个学生有多个老师
}

该案例在UML类图中的表达如下所示:
类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

5、聚合关系及UML类图表示

聚合关系表示的是整体与部分的关系但整体与部分可以分开,整体没了,部分还存在它是关联关系的特例聚合关系一般通过set方法将部分注入到整体中
如一个电脑(Computer)有键盘(Keyboard),鼠标(Mouse)等组成,电脑坏了,不一定代码键盘和鼠标就不能用了。示例代码如下:

class Computer
{
    private Keyboard keyboard;
    private Mouse mouse;

    public void setKeyboard(Keyboard keyboard) {
        this.keyboard = keyboard;
    }

    public void setMouse(Mouse mouse) {
        this.mouse = mouse;
    }
}

class Keyboard
{
    //...
}

class Mouse
{
    //...
}

聚合关系在UML类图中由实线和空心菱形表示,由部分指向整体该案例在UML类图中的表达如下所示:
类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

6、组合关系及UML类图表示

组合关系表示的也是整体与部分的关系但整体与部分不可分开,表现出同生共死的关系它是关联关系的特例组合关系一般在整体创建的时候就自动创建部分了
如一个人(Person)由头(Head)、手(Hand)、腿(Leg)等构成,一个人可以没有手和腿,但是一定不能没有头,因此人与头是组合关系,而人与手和腿是聚合关系,示例代码如下:

class Person
{
    private Head head=new Head();//与Person是组合关系,Person创建,则Head创建;Person销毁,则Head销毁;
    private Hand hand;//与Person是聚合关系
    private Leg leg;//与Person是聚合关系

    public void setHand(Hand hand) {
        this.hand = hand;
    }

    public void setLeg(Leg leg) {
        this.leg = leg;
    }
}
class Head
{
    
}
class Hand
{
    
}
class Leg
{
    
}

组合关系在UML类图中由实线和实心菱形表示,由部分指向整体该案例在UML类图中的表达如下所示:类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

三、如何绘制UML类图?

1. IDEA安装PlantUML Intergration插件

打开IDEA,点击File -> Settings,打开Settings窗口,选择Plugins,在搜索栏搜索PlantUML,点击PlantUML Intergration 后面的安装,完成插件安装,重启IDEA后,即可使用该插件。
类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

2. PlantUML用法

  1. 选择一个包,右键选择New,然后点击PlantUML File
    类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML
  2. 选择UML类图,并为之命名,创建一个UML类图文件
    类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML
  3. UML类图文件由编辑区和视图区两部分组成,用户通过编辑区按照指定的语法编写代码,视图区自动根据语法绘制类图。通常我们新建完UML类图后,可以通过参考自动生成的代码及其对应的视图,学习常用的语法,然后,我们就可以将@startuml和@enduml之间的代码删除,然后根据自己的设计编写代码,绘制自己的类图。
    类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML
    note:如果你的试图区不能正常显示,可以参考该文章:https://plantuml.com/graphviz-dot(包括Linux等各个平台的处理方法)
  4. 关于绘制UML类图的常见语法,下面进行详解讲解。

3. PlantUML绘制UML类图的常见语法

3.1 语法精髓

UML类图中最重要的就是绘制类与类之间的关系,每种关系有不同的图形元素连接,每种图形元素对应不同的语法,我总结出UML类图中涉及的图形元素及其对应的语法如下

  1. 实线 对应语法是两个减号 “–”
  2. 虚线 对应语法是两个点 “…”
  3. 实心左箭头 对应语法是一个左括号 “<”
  4. 实心右箭头 对应语法是一个右括号 “>”
  5. 空心箭头 对应语法是一个左括号加竖线 “<|”
  6. 空心菱形 对应语法是字母o “o”
  7. 实心菱形 对应语法是符号* “*”

通过对以上图形语法的组合,即可绘制UML类图中所有的关系图形,如UML类图中依赖关系是通过虚线加空心箭头表达,那么对应的语法就是 <|…

3.2 绘制类与类之间的依赖关系语法

如A类依赖于B类,而UML类图中依赖关系是由虚线(…)加实心箭头(<)表示的,因此示例代码如下:

@startuml

class A{
int a;
void fun1();
'可根据你类的设计补充相关的属性及方法,
'属性不带括号,方法带括号
}
class B

B <.. A

@enduml

类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

3.3 绘制类与类之间的泛化关系语法

如A类继承于B类,而UML类图中泛化关系是由实线(–)加空心箭头(<|)表示的,因此示例代码如下:

@startuml

class A
class B

B <|-- A

@enduml

类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

3.4 绘制类与类之间的实现关系语法

如A类实现接口B类,而UML类图中实现关系是由虚线(…)加空心箭头(<|)表示的,因此示例代码如下:

@startuml

interface A
class B

A <|.. B

@enduml

类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

3.5 绘制类与类之间的关联关系语法

如A类和B类之间是一对一的关联关系,而UML类图中关联关系是由实线(–)加实心箭头(<)表示的,因此示例代码如下:

@startuml

class A
class B

'通过在语法前的双引号中添加文字
'可以为线两端上添加注释
A "1"<..>"1" B

@enduml

类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

3.6 绘制类与类之间的聚合关系语法

如A类和B类之间是聚合关系,B聚合于A,而UML类图中聚合关系是由实线(–)加空心菱形(o)表示的,因此示例代码如下:

@startuml

class A
class B

'通过在最后一个类后加冒号,
'冒号后面的文字可以添加带线中间显示
A o-- B:聚合

@enduml

类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

3.7 绘制类与类之间的组合关系语法

如A类和B类之间是组合关系,B组合于A,而UML类图中组合关系是由实线(–)加实心菱形(*)表示的,因此示例代码如下:

@startuml

class A
class B

A *-- B

@enduml

类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML

四、UML类图所有类之间关系及符号表示一览图

本文开篇我就放了这张图,如果您是从头看到现在,那么再看这张图,您就能发现它涵盖了本文的所有内容,图中包含了类之间的六种关系,每种关系的表达符号,每个符号的语法。
类关系图解释,设计模式,uml,java,类图,依赖关系,PlantUML文章来源地址https://www.toymoban.com/news/detail-722354.html

到了这里,关于快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++漂流记】一文搞懂类与对象中的对象特征

    在C++中,类与对象是面向对象编程的基本概念。类是一种抽象的数据类型,用于描述对象的属性和行为。而对象则是类的实例,具体化了类的属性和行为。本文将介绍C++中类与对象的对象特征,并重点讨论了对象的引用。 相关链接: 一文搞懂类与对象的封装 一文搞懂C++中的

    2024年02月07日
    浏览(39)
  • UML-类图和类图转化为代码

    提示:文章详细的讲解了类图的四种关系,以及每种关系如何转化为对应的代码。 依赖关系 是一种 使用关系 ,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。 依赖关系使用一个 带箭头的虚线 表示, 箭头指向

    2024年02月02日
    浏览(36)
  • UML类图学习

    第一层表示类名(斜体表示抽象类) 第二层表示该类属性和字段 第三层表示该方法 注意:属性、字段或方法前面+表示Public -表示Private #表示protected,如果是静态的可以在前面加上static。 抽象类: 普通类: 第一层表示接口名称。 第二层表示接口方法。 还有一种方法是棒棒

    2024年01月23日
    浏览(41)
  • UML 类图

    用动物园的类图结构来举例,先抽象化动物类如图所示: 一个类图包括类名、属性和行为,类名不用解释,在介绍属性和行为前,先了解一下访问权限: ‘ - ’ private:只有类内部的成员才能访问 ‘ + ’ public:类内部和类外部都能访问 ‘ # ’ protected:类内部和它的子类才

    2024年01月20日
    浏览(45)
  • UML的类图规则

    public:+号 private:-号 protected:#号 类图多重关系: 泛化关系: 概念:也就是继承关系。 表示方式:用带空心三角形的直线来表示。 例子:动物和猫,人和老师 关联关系: 概念:用于表示一类对象与另一类对象之间的联系。 子关系: 双向关联: 表示方式:一条直线 例子:客

    2024年02月13日
    浏览(43)
  • UML--类图的表示

    1.1 访问属性 + : public - : private # : protected 1.2 接口与抽象类 斜体 表示抽象类和抽象方法 Interface 类表示接口 1.3 类图示意 Mclass - val: int + getVal(): int 2.1 实现关系 空心三角形和虚线组成 B实现A,则三角形尖尖朝向A,在三角形底边引一条虚线再连接B。 2.2 泛化关系 is a 关系, 继承关系

    2024年02月05日
    浏览(52)
  • UML类图(二)

    相信希望,相信自己 上一章简单介绍了 设计模式的原则(一), 如果没有看过,请观看上一章 本文参考文章: 常见UML符号详解 UML (Unified modeling language) 统一建模语言,是一种用于软件系统分析和设计的语言工具, 它用于帮助软件开发人员进行思考和记录思路的结果。 如: 修饰符

    2024年02月09日
    浏览(37)
  • 一文搞懂 x64 IA-64 AMD64 Inte64 IA-32e 架构之间的关系

    想要搞清楚 x64、IA64、AMD64 指令集之间的关系,就要先了解 Intel 和 AMD 这两家公司在生产处理器上的发展历史。 1978年 Intel 生产了它的第一款 16bit 处理器8086,之后几款处理器名字也都以86结尾,包括80186,80286, 80386,80486,这些处理器的架构被统一称为 x86 架构。其中8086、

    2024年02月02日
    浏览(56)
  • 什么是统一建模语言(UML)UML与UML类图的基本概念

    UML(统一建模语言)是一种通用的建模语言,用于描述软件系统的结构、行为和交互。它提供了一组符号和规则,用于创建可视化的图形模型,帮助开发人员、设计师和利益相关者之间进行沟通和理解。 UML起源于20世纪90年代初,由James Rumbaugh、Grady Booch和Ivar Jacobson等知名软件

    2024年02月16日
    浏览(56)
  • 设计模式(1) - UML类图

    从这一节开始,我们将一起学习设计模式。我们的学习目标是什么呢? 了解常用设计模式以及它们的使用场景; 分析实际工程中设计模式的使用,揣摩实际意图,了解作者设计思路; 尝试运用设计模式迭代、重构自己的代码; 提升软件架构设计思路。 最近在阅读 Android 源

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包