关于Java中UML图的说明

  • 1 类图
    • 1 类的表示方法
    • 2 类之间的关系
      • 1 关联关系
        • 1 单向关联
        • 2 双向关联
        • 3 自关联
      • 2 聚合关系
      • 3 组合关系
      • 4 依赖关系
      • 5 继承关系
      • 6 实现关系

在学习Spring源码过程中,出现了非常多的设计模式等,也因此需要去查看UML图,对于UML图的相关知识,整理一下.

统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。

UML 从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等 9 种图。

Java作为一款优秀的面向对象的编程语言,使用UML的类图能够更好表达出其对象间的结构关系.

1 类图

类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分,可以简化了人们对系统的理解.

1 类的表示方法

在UML类图中,类使用包含类名(className)、属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个用户User类,它包含name,age和address这3个属性,以及work()方法。

#mermaid-svg-UKXQcKon2KMhphmT {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-UKXQcKon2KMhphmT .error-icon{fill:#552222;}#mermaid-svg-UKXQcKon2KMhphmT .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-UKXQcKon2KMhphmT .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-UKXQcKon2KMhphmT .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-UKXQcKon2KMhphmT .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-UKXQcKon2KMhphmT .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-UKXQcKon2KMhphmT .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-UKXQcKon2KMhphmT .marker{fill:#333333;stroke:#333333;}#mermaid-svg-UKXQcKon2KMhphmT .marker.cross{stroke:#333333;}#mermaid-svg-UKXQcKon2KMhphmT svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-UKXQcKon2KMhphmT g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-UKXQcKon2KMhphmT g.classGroup text .title{font-weight:bolder;}#mermaid-svg-UKXQcKon2KMhphmT .nodeLabel,#mermaid-svg-UKXQcKon2KMhphmT .edgeLabel{color:#131300;}#mermaid-svg-UKXQcKon2KMhphmT .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-UKXQcKon2KMhphmT .label text{fill:#131300;}#mermaid-svg-UKXQcKon2KMhphmT .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-UKXQcKon2KMhphmT .classTitle{font-weight:bolder;}#mermaid-svg-UKXQcKon2KMhphmT .node rect,#mermaid-svg-UKXQcKon2KMhphmT .node circle,#mermaid-svg-UKXQcKon2KMhphmT .node ellipse,#mermaid-svg-UKXQcKon2KMhphmT .node polygon,#mermaid-svg-UKXQcKon2KMhphmT .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-UKXQcKon2KMhphmT .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-UKXQcKon2KMhphmT g.clickable{cursor:pointer;}#mermaid-svg-UKXQcKon2KMhphmT g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-UKXQcKon2KMhphmT g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-UKXQcKon2KMhphmT .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-UKXQcKon2KMhphmT .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-UKXQcKon2KMhphmT .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-UKXQcKon2KMhphmT .dashed-line{stroke-dasharray:3;}#mermaid-svg-UKXQcKon2KMhphmT #compositionStart,#mermaid-svg-UKXQcKon2KMhphmT .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UKXQcKon2KMhphmT #compositionEnd,#mermaid-svg-UKXQcKon2KMhphmT .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UKXQcKon2KMhphmT #dependencyStart,#mermaid-svg-UKXQcKon2KMhphmT .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UKXQcKon2KMhphmT #dependencyStart,#mermaid-svg-UKXQcKon2KMhphmT .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UKXQcKon2KMhphmT #extensionStart,#mermaid-svg-UKXQcKon2KMhphmT .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UKXQcKon2KMhphmT #extensionEnd,#mermaid-svg-UKXQcKon2KMhphmT .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UKXQcKon2KMhphmT #aggregationStart,#mermaid-svg-UKXQcKon2KMhphmT .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UKXQcKon2KMhphmT #aggregationEnd,#mermaid-svg-UKXQcKon2KMhphmT .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-UKXQcKon2KMhphmT .edgeTerminals{font-size:11px;}#mermaid-svg-UKXQcKon2KMhphmT :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

User
- name : String
- age : int
- address : String
+work()

属性/方法名称前加的加号和减号表示了这个属性/方法的可见性,UML类图中表示可见性的符号有三种:

  • +:表示public
  • -:表示private
  • #:表示protected
  • 默认不填: 表示default

属性的完整表示方式是: 可见性 名称 :类型 [ = 缺省值]

方法的完整表示方式是: 可见性 名称(参数列表) [ : 返回类型]

注意:

​ 1,中括号中的内容表示是可选的

​ 2,也有将类型放在变量名前面,返回值类型放在方法名前面

2 类之间的关系

1 关联关系

关联关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,通常分为一般关联关系、聚合关系和组合关系.

1 单向关联

在UML类图中单向关联用一个带箭头的实线表示。表示每个用户对象都有一个地址对象.

#mermaid-svg-eCj6EGPR3Q91TKNW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-eCj6EGPR3Q91TKNW .error-icon{fill:#552222;}#mermaid-svg-eCj6EGPR3Q91TKNW .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-eCj6EGPR3Q91TKNW .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-eCj6EGPR3Q91TKNW .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-eCj6EGPR3Q91TKNW .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-eCj6EGPR3Q91TKNW .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-eCj6EGPR3Q91TKNW .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-eCj6EGPR3Q91TKNW .marker{fill:#333333;stroke:#333333;}#mermaid-svg-eCj6EGPR3Q91TKNW .marker.cross{stroke:#333333;}#mermaid-svg-eCj6EGPR3Q91TKNW svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-eCj6EGPR3Q91TKNW g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-eCj6EGPR3Q91TKNW g.classGroup text .title{font-weight:bolder;}#mermaid-svg-eCj6EGPR3Q91TKNW .nodeLabel,#mermaid-svg-eCj6EGPR3Q91TKNW .edgeLabel{color:#131300;}#mermaid-svg-eCj6EGPR3Q91TKNW .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-eCj6EGPR3Q91TKNW .label text{fill:#131300;}#mermaid-svg-eCj6EGPR3Q91TKNW .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-eCj6EGPR3Q91TKNW .classTitle{font-weight:bolder;}#mermaid-svg-eCj6EGPR3Q91TKNW .node rect,#mermaid-svg-eCj6EGPR3Q91TKNW .node circle,#mermaid-svg-eCj6EGPR3Q91TKNW .node ellipse,#mermaid-svg-eCj6EGPR3Q91TKNW .node polygon,#mermaid-svg-eCj6EGPR3Q91TKNW .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-eCj6EGPR3Q91TKNW .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-eCj6EGPR3Q91TKNW g.clickable{cursor:pointer;}#mermaid-svg-eCj6EGPR3Q91TKNW g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-eCj6EGPR3Q91TKNW g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-eCj6EGPR3Q91TKNW .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-eCj6EGPR3Q91TKNW .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-eCj6EGPR3Q91TKNW .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-eCj6EGPR3Q91TKNW .dashed-line{stroke-dasharray:3;}#mermaid-svg-eCj6EGPR3Q91TKNW #compositionStart,#mermaid-svg-eCj6EGPR3Q91TKNW .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-eCj6EGPR3Q91TKNW #compositionEnd,#mermaid-svg-eCj6EGPR3Q91TKNW .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-eCj6EGPR3Q91TKNW #dependencyStart,#mermaid-svg-eCj6EGPR3Q91TKNW .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-eCj6EGPR3Q91TKNW #dependencyStart,#mermaid-svg-eCj6EGPR3Q91TKNW .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-eCj6EGPR3Q91TKNW #extensionStart,#mermaid-svg-eCj6EGPR3Q91TKNW .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-eCj6EGPR3Q91TKNW #extensionEnd,#mermaid-svg-eCj6EGPR3Q91TKNW .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-eCj6EGPR3Q91TKNW #aggregationStart,#mermaid-svg-eCj6EGPR3Q91TKNW .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-eCj6EGPR3Q91TKNW #aggregationEnd,#mermaid-svg-eCj6EGPR3Q91TKNW .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-eCj6EGPR3Q91TKNW .edgeTerminals{font-size:11px;}#mermaid-svg-eCj6EGPR3Q91TKNW :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

User
-address : Address
Address
-name : String
2 双向关联

双向关联就是双方各自持有对方类型的成员变量.

#mermaid-svg-4FsxL4Bs8c9Kyv48 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .error-icon{fill:#552222;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .marker.cross{stroke:#333333;}#mermaid-svg-4FsxL4Bs8c9Kyv48 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-4FsxL4Bs8c9Kyv48 g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-4FsxL4Bs8c9Kyv48 g.classGroup text .title{font-weight:bolder;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .nodeLabel,#mermaid-svg-4FsxL4Bs8c9Kyv48 .edgeLabel{color:#131300;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .label text{fill:#131300;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .classTitle{font-weight:bolder;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .node rect,#mermaid-svg-4FsxL4Bs8c9Kyv48 .node circle,#mermaid-svg-4FsxL4Bs8c9Kyv48 .node ellipse,#mermaid-svg-4FsxL4Bs8c9Kyv48 .node polygon,#mermaid-svg-4FsxL4Bs8c9Kyv48 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-4FsxL4Bs8c9Kyv48 g.clickable{cursor:pointer;}#mermaid-svg-4FsxL4Bs8c9Kyv48 g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-4FsxL4Bs8c9Kyv48 g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .dashed-line{stroke-dasharray:3;}#mermaid-svg-4FsxL4Bs8c9Kyv48 #compositionStart,#mermaid-svg-4FsxL4Bs8c9Kyv48 .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-4FsxL4Bs8c9Kyv48 #compositionEnd,#mermaid-svg-4FsxL4Bs8c9Kyv48 .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-4FsxL4Bs8c9Kyv48 #dependencyStart,#mermaid-svg-4FsxL4Bs8c9Kyv48 .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-4FsxL4Bs8c9Kyv48 #dependencyStart,#mermaid-svg-4FsxL4Bs8c9Kyv48 .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-4FsxL4Bs8c9Kyv48 #extensionStart,#mermaid-svg-4FsxL4Bs8c9Kyv48 .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-4FsxL4Bs8c9Kyv48 #extensionEnd,#mermaid-svg-4FsxL4Bs8c9Kyv48 .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-4FsxL4Bs8c9Kyv48 #aggregationStart,#mermaid-svg-4FsxL4Bs8c9Kyv48 .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-4FsxL4Bs8c9Kyv48 #aggregationEnd,#mermaid-svg-4FsxL4Bs8c9Kyv48 .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-4FsxL4Bs8c9Kyv48 .edgeTerminals{font-size:11px;}#mermaid-svg-4FsxL4Bs8c9Kyv48 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

User
-address : Address
Address
-user : User
3 自关联

自关联, 使用一个带有箭头且指向自身的线表示自己包含自己.

#mermaid-svg-gQsN9j8TfV8a6XZp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gQsN9j8TfV8a6XZp .error-icon{fill:#552222;}#mermaid-svg-gQsN9j8TfV8a6XZp .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-gQsN9j8TfV8a6XZp .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-gQsN9j8TfV8a6XZp .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-gQsN9j8TfV8a6XZp .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-gQsN9j8TfV8a6XZp .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-gQsN9j8TfV8a6XZp .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-gQsN9j8TfV8a6XZp .marker{fill:#333333;stroke:#333333;}#mermaid-svg-gQsN9j8TfV8a6XZp .marker.cross{stroke:#333333;}#mermaid-svg-gQsN9j8TfV8a6XZp svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-gQsN9j8TfV8a6XZp g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-gQsN9j8TfV8a6XZp g.classGroup text .title{font-weight:bolder;}#mermaid-svg-gQsN9j8TfV8a6XZp .nodeLabel,#mermaid-svg-gQsN9j8TfV8a6XZp .edgeLabel{color:#131300;}#mermaid-svg-gQsN9j8TfV8a6XZp .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-gQsN9j8TfV8a6XZp .label text{fill:#131300;}#mermaid-svg-gQsN9j8TfV8a6XZp .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-gQsN9j8TfV8a6XZp .classTitle{font-weight:bolder;}#mermaid-svg-gQsN9j8TfV8a6XZp .node rect,#mermaid-svg-gQsN9j8TfV8a6XZp .node circle,#mermaid-svg-gQsN9j8TfV8a6XZp .node ellipse,#mermaid-svg-gQsN9j8TfV8a6XZp .node polygon,#mermaid-svg-gQsN9j8TfV8a6XZp .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-gQsN9j8TfV8a6XZp .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-gQsN9j8TfV8a6XZp g.clickable{cursor:pointer;}#mermaid-svg-gQsN9j8TfV8a6XZp g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-gQsN9j8TfV8a6XZp g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-gQsN9j8TfV8a6XZp .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-gQsN9j8TfV8a6XZp .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-gQsN9j8TfV8a6XZp .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-gQsN9j8TfV8a6XZp .dashed-line{stroke-dasharray:3;}#mermaid-svg-gQsN9j8TfV8a6XZp #compositionStart,#mermaid-svg-gQsN9j8TfV8a6XZp .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-gQsN9j8TfV8a6XZp #compositionEnd,#mermaid-svg-gQsN9j8TfV8a6XZp .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-gQsN9j8TfV8a6XZp #dependencyStart,#mermaid-svg-gQsN9j8TfV8a6XZp .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-gQsN9j8TfV8a6XZp #dependencyStart,#mermaid-svg-gQsN9j8TfV8a6XZp .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-gQsN9j8TfV8a6XZp #extensionStart,#mermaid-svg-gQsN9j8TfV8a6XZp .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-gQsN9j8TfV8a6XZp #extensionEnd,#mermaid-svg-gQsN9j8TfV8a6XZp .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-gQsN9j8TfV8a6XZp #aggregationStart,#mermaid-svg-gQsN9j8TfV8a6XZp .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-gQsN9j8TfV8a6XZp #aggregationEnd,#mermaid-svg-gQsN9j8TfV8a6XZp .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-gQsN9j8TfV8a6XZp .edgeTerminals{font-size:11px;}#mermaid-svg-gQsN9j8TfV8a6XZp :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

User
-son : User

2 聚合关系

聚合关系是关联关系的一种,是强关联关系,是整体和部分之间的关系.如学校和学生的关系.

#mermaid-svg-bi2auZ8Ap90dBdNX {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bi2auZ8Ap90dBdNX .error-icon{fill:#552222;}#mermaid-svg-bi2auZ8Ap90dBdNX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bi2auZ8Ap90dBdNX .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-bi2auZ8Ap90dBdNX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bi2auZ8Ap90dBdNX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bi2auZ8Ap90dBdNX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bi2auZ8Ap90dBdNX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bi2auZ8Ap90dBdNX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bi2auZ8Ap90dBdNX .marker.cross{stroke:#333333;}#mermaid-svg-bi2auZ8Ap90dBdNX svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bi2auZ8Ap90dBdNX g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-bi2auZ8Ap90dBdNX g.classGroup text .title{font-weight:bolder;}#mermaid-svg-bi2auZ8Ap90dBdNX .nodeLabel,#mermaid-svg-bi2auZ8Ap90dBdNX .edgeLabel{color:#131300;}#mermaid-svg-bi2auZ8Ap90dBdNX .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-bi2auZ8Ap90dBdNX .label text{fill:#131300;}#mermaid-svg-bi2auZ8Ap90dBdNX .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-bi2auZ8Ap90dBdNX .classTitle{font-weight:bolder;}#mermaid-svg-bi2auZ8Ap90dBdNX .node rect,#mermaid-svg-bi2auZ8Ap90dBdNX .node circle,#mermaid-svg-bi2auZ8Ap90dBdNX .node ellipse,#mermaid-svg-bi2auZ8Ap90dBdNX .node polygon,#mermaid-svg-bi2auZ8Ap90dBdNX .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bi2auZ8Ap90dBdNX .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-bi2auZ8Ap90dBdNX g.clickable{cursor:pointer;}#mermaid-svg-bi2auZ8Ap90dBdNX g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-bi2auZ8Ap90dBdNX g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-bi2auZ8Ap90dBdNX .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-bi2auZ8Ap90dBdNX .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-bi2auZ8Ap90dBdNX .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-bi2auZ8Ap90dBdNX .dashed-line{stroke-dasharray:3;}#mermaid-svg-bi2auZ8Ap90dBdNX #compositionStart,#mermaid-svg-bi2auZ8Ap90dBdNX .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-bi2auZ8Ap90dBdNX #compositionEnd,#mermaid-svg-bi2auZ8Ap90dBdNX .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-bi2auZ8Ap90dBdNX #dependencyStart,#mermaid-svg-bi2auZ8Ap90dBdNX .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-bi2auZ8Ap90dBdNX #dependencyStart,#mermaid-svg-bi2auZ8Ap90dBdNX .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-bi2auZ8Ap90dBdNX #extensionStart,#mermaid-svg-bi2auZ8Ap90dBdNX .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-bi2auZ8Ap90dBdNX #extensionEnd,#mermaid-svg-bi2auZ8Ap90dBdNX .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-bi2auZ8Ap90dBdNX #aggregationStart,#mermaid-svg-bi2auZ8Ap90dBdNX .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-bi2auZ8Ap90dBdNX #aggregationEnd,#mermaid-svg-bi2auZ8Ap90dBdNX .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-bi2auZ8Ap90dBdNX .edgeTerminals{font-size:11px;}#mermaid-svg-bi2auZ8Ap90dBdNX :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

School
-stu : List
Student
-name : String

3 组合关系

组合表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系.

如头和嘴巴的关系.

#mermaid-svg-dJdB6GSaWXcPAlry {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-dJdB6GSaWXcPAlry .error-icon{fill:#552222;}#mermaid-svg-dJdB6GSaWXcPAlry .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-dJdB6GSaWXcPAlry .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-dJdB6GSaWXcPAlry .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-dJdB6GSaWXcPAlry .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-dJdB6GSaWXcPAlry .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-dJdB6GSaWXcPAlry .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-dJdB6GSaWXcPAlry .marker{fill:#333333;stroke:#333333;}#mermaid-svg-dJdB6GSaWXcPAlry .marker.cross{stroke:#333333;}#mermaid-svg-dJdB6GSaWXcPAlry svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-dJdB6GSaWXcPAlry g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-dJdB6GSaWXcPAlry g.classGroup text .title{font-weight:bolder;}#mermaid-svg-dJdB6GSaWXcPAlry .nodeLabel,#mermaid-svg-dJdB6GSaWXcPAlry .edgeLabel{color:#131300;}#mermaid-svg-dJdB6GSaWXcPAlry .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-dJdB6GSaWXcPAlry .label text{fill:#131300;}#mermaid-svg-dJdB6GSaWXcPAlry .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-dJdB6GSaWXcPAlry .classTitle{font-weight:bolder;}#mermaid-svg-dJdB6GSaWXcPAlry .node rect,#mermaid-svg-dJdB6GSaWXcPAlry .node circle,#mermaid-svg-dJdB6GSaWXcPAlry .node ellipse,#mermaid-svg-dJdB6GSaWXcPAlry .node polygon,#mermaid-svg-dJdB6GSaWXcPAlry .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-dJdB6GSaWXcPAlry .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-dJdB6GSaWXcPAlry g.clickable{cursor:pointer;}#mermaid-svg-dJdB6GSaWXcPAlry g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-dJdB6GSaWXcPAlry g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-dJdB6GSaWXcPAlry .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-dJdB6GSaWXcPAlry .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-dJdB6GSaWXcPAlry .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-dJdB6GSaWXcPAlry .dashed-line{stroke-dasharray:3;}#mermaid-svg-dJdB6GSaWXcPAlry #compositionStart,#mermaid-svg-dJdB6GSaWXcPAlry .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-dJdB6GSaWXcPAlry #compositionEnd,#mermaid-svg-dJdB6GSaWXcPAlry .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-dJdB6GSaWXcPAlry #dependencyStart,#mermaid-svg-dJdB6GSaWXcPAlry .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-dJdB6GSaWXcPAlry #dependencyStart,#mermaid-svg-dJdB6GSaWXcPAlry .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-dJdB6GSaWXcPAlry #extensionStart,#mermaid-svg-dJdB6GSaWXcPAlry .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-dJdB6GSaWXcPAlry #extensionEnd,#mermaid-svg-dJdB6GSaWXcPAlry .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-dJdB6GSaWXcPAlry #aggregationStart,#mermaid-svg-dJdB6GSaWXcPAlry .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-dJdB6GSaWXcPAlry #aggregationEnd,#mermaid-svg-dJdB6GSaWXcPAlry .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-dJdB6GSaWXcPAlry .edgeTerminals{font-size:11px;}#mermaid-svg-dJdB6GSaWXcPAlry :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

Head
-mouth : Mouth
Mouth
+eat()

4 依赖关系

依赖关系是一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性的关联.

#mermaid-svg-kTGitAyBEqJBfGtF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kTGitAyBEqJBfGtF .error-icon{fill:#552222;}#mermaid-svg-kTGitAyBEqJBfGtF .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kTGitAyBEqJBfGtF .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-kTGitAyBEqJBfGtF .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kTGitAyBEqJBfGtF .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kTGitAyBEqJBfGtF .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kTGitAyBEqJBfGtF .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kTGitAyBEqJBfGtF .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kTGitAyBEqJBfGtF .marker.cross{stroke:#333333;}#mermaid-svg-kTGitAyBEqJBfGtF svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kTGitAyBEqJBfGtF g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-kTGitAyBEqJBfGtF g.classGroup text .title{font-weight:bolder;}#mermaid-svg-kTGitAyBEqJBfGtF .nodeLabel,#mermaid-svg-kTGitAyBEqJBfGtF .edgeLabel{color:#131300;}#mermaid-svg-kTGitAyBEqJBfGtF .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-kTGitAyBEqJBfGtF .label text{fill:#131300;}#mermaid-svg-kTGitAyBEqJBfGtF .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-kTGitAyBEqJBfGtF .classTitle{font-weight:bolder;}#mermaid-svg-kTGitAyBEqJBfGtF .node rect,#mermaid-svg-kTGitAyBEqJBfGtF .node circle,#mermaid-svg-kTGitAyBEqJBfGtF .node ellipse,#mermaid-svg-kTGitAyBEqJBfGtF .node polygon,#mermaid-svg-kTGitAyBEqJBfGtF .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kTGitAyBEqJBfGtF .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-kTGitAyBEqJBfGtF g.clickable{cursor:pointer;}#mermaid-svg-kTGitAyBEqJBfGtF g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-kTGitAyBEqJBfGtF g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-kTGitAyBEqJBfGtF .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-kTGitAyBEqJBfGtF .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-kTGitAyBEqJBfGtF .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-kTGitAyBEqJBfGtF .dashed-line{stroke-dasharray:3;}#mermaid-svg-kTGitAyBEqJBfGtF #compositionStart,#mermaid-svg-kTGitAyBEqJBfGtF .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-kTGitAyBEqJBfGtF #compositionEnd,#mermaid-svg-kTGitAyBEqJBfGtF .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-kTGitAyBEqJBfGtF #dependencyStart,#mermaid-svg-kTGitAyBEqJBfGtF .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-kTGitAyBEqJBfGtF #dependencyStart,#mermaid-svg-kTGitAyBEqJBfGtF .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-kTGitAyBEqJBfGtF #extensionStart,#mermaid-svg-kTGitAyBEqJBfGtF .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-kTGitAyBEqJBfGtF #extensionEnd,#mermaid-svg-kTGitAyBEqJBfGtF .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-kTGitAyBEqJBfGtF #aggregationStart,#mermaid-svg-kTGitAyBEqJBfGtF .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-kTGitAyBEqJBfGtF #aggregationEnd,#mermaid-svg-kTGitAyBEqJBfGtF .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-kTGitAyBEqJBfGtF .edgeTerminals{font-size:11px;}#mermaid-svg-kTGitAyBEqJBfGtF :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

Driver
-driver(Car car)
Car
+move()

5 继承关系

继承关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系.

#mermaid-svg-Nd5Xf1O1pS0qcTk6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .error-icon{fill:#552222;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .marker.cross{stroke:#333333;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 g.classGroup text .title{font-weight:bolder;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .nodeLabel,#mermaid-svg-Nd5Xf1O1pS0qcTk6 .edgeLabel{color:#131300;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .label text{fill:#131300;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .classTitle{font-weight:bolder;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .node rect,#mermaid-svg-Nd5Xf1O1pS0qcTk6 .node circle,#mermaid-svg-Nd5Xf1O1pS0qcTk6 .node ellipse,#mermaid-svg-Nd5Xf1O1pS0qcTk6 .node polygon,#mermaid-svg-Nd5Xf1O1pS0qcTk6 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 g.clickable{cursor:pointer;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .dashed-line{stroke-dasharray:3;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 #compositionStart,#mermaid-svg-Nd5Xf1O1pS0qcTk6 .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 #compositionEnd,#mermaid-svg-Nd5Xf1O1pS0qcTk6 .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 #dependencyStart,#mermaid-svg-Nd5Xf1O1pS0qcTk6 .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 #dependencyStart,#mermaid-svg-Nd5Xf1O1pS0qcTk6 .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 #extensionStart,#mermaid-svg-Nd5Xf1O1pS0qcTk6 .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 #extensionEnd,#mermaid-svg-Nd5Xf1O1pS0qcTk6 .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 #aggregationStart,#mermaid-svg-Nd5Xf1O1pS0qcTk6 .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 #aggregationEnd,#mermaid-svg-Nd5Xf1O1pS0qcTk6 .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 .edgeTerminals{font-size:11px;}#mermaid-svg-Nd5Xf1O1pS0qcTk6 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

Person
-name : String
-speak()
Student
-no : String
+study()

6 实现关系

实现关系是接口与实现类之间的关系。类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作.

#mermaid-svg-NEdNQBY4GYoECbtb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NEdNQBY4GYoECbtb .error-icon{fill:#552222;}#mermaid-svg-NEdNQBY4GYoECbtb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-NEdNQBY4GYoECbtb .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-NEdNQBY4GYoECbtb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-NEdNQBY4GYoECbtb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-NEdNQBY4GYoECbtb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-NEdNQBY4GYoECbtb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-NEdNQBY4GYoECbtb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-NEdNQBY4GYoECbtb .marker.cross{stroke:#333333;}#mermaid-svg-NEdNQBY4GYoECbtb svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-NEdNQBY4GYoECbtb g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-NEdNQBY4GYoECbtb g.classGroup text .title{font-weight:bolder;}#mermaid-svg-NEdNQBY4GYoECbtb .nodeLabel,#mermaid-svg-NEdNQBY4GYoECbtb .edgeLabel{color:#131300;}#mermaid-svg-NEdNQBY4GYoECbtb .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-NEdNQBY4GYoECbtb .label text{fill:#131300;}#mermaid-svg-NEdNQBY4GYoECbtb .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-NEdNQBY4GYoECbtb .classTitle{font-weight:bolder;}#mermaid-svg-NEdNQBY4GYoECbtb .node rect,#mermaid-svg-NEdNQBY4GYoECbtb .node circle,#mermaid-svg-NEdNQBY4GYoECbtb .node ellipse,#mermaid-svg-NEdNQBY4GYoECbtb .node polygon,#mermaid-svg-NEdNQBY4GYoECbtb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-NEdNQBY4GYoECbtb .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-NEdNQBY4GYoECbtb g.clickable{cursor:pointer;}#mermaid-svg-NEdNQBY4GYoECbtb g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-NEdNQBY4GYoECbtb g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-NEdNQBY4GYoECbtb .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-NEdNQBY4GYoECbtb .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-NEdNQBY4GYoECbtb .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-NEdNQBY4GYoECbtb .dashed-line{stroke-dasharray:3;}#mermaid-svg-NEdNQBY4GYoECbtb #compositionStart,#mermaid-svg-NEdNQBY4GYoECbtb .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NEdNQBY4GYoECbtb #compositionEnd,#mermaid-svg-NEdNQBY4GYoECbtb .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NEdNQBY4GYoECbtb #dependencyStart,#mermaid-svg-NEdNQBY4GYoECbtb .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NEdNQBY4GYoECbtb #dependencyStart,#mermaid-svg-NEdNQBY4GYoECbtb .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NEdNQBY4GYoECbtb #extensionStart,#mermaid-svg-NEdNQBY4GYoECbtb .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NEdNQBY4GYoECbtb #extensionEnd,#mermaid-svg-NEdNQBY4GYoECbtb .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NEdNQBY4GYoECbtb #aggregationStart,#mermaid-svg-NEdNQBY4GYoECbtb .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NEdNQBY4GYoECbtb #aggregationEnd,#mermaid-svg-NEdNQBY4GYoECbtb .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NEdNQBY4GYoECbtb .edgeTerminals{font-size:11px;}#mermaid-svg-NEdNQBY4GYoECbtb :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

Vehicle
+void speak()
Car
+void speak()

关于Java中UML图的说明相关推荐

  1. java测试类要画UML图吗,如何从Java代码生成UML图(尤其是序列图)?

    如何从Java代码生成UML图(尤其是序列图)? 如何从现有Java代码生成UML图(尤其是序列图)? 14个解决方案 249 votes ObjectAid UML Explorer 是我用过的. ...

  2. 如何从Java代码生成UML图(尤其是序列图)?

    本文翻译自:How to generate UML diagrams (especially sequence diagrams) from Java code? 如何从现有Java代码生成UML图( ...

  3. 移动架构 (一) 详解架构设计中UML图的使用

    距离上一个 "性能优化系列" 已经快一个月没有发布文章了,最近公司真的是太忙了,甚是想念掘友们啊.最近把学习架构方面的知识记录下来,供自己和掘友们一起学习. 注意: 文章中 UML ...

  4. 基于JDK 1.8 的 Java 容器UML图

    2019独角兽企业重金招聘Python工程师标准>>> 这张图主要描述Java中容器框架,基于JDK 1.8 的. 网上现有的相关图都是基于老版本的JDK,而且也比较简陋. 图中省略 ...

  5. 【Java】Java绘制UML图

    1.继承关系(Inheritance) 继承指的是一个类(子类.子接口)继承另外的一个类(父类.父接口)的功能,通过关键字 extends 明确标识 UML图 继承用一条带空心三角箭头的实线表示,从子 ...

  6. Java代码序列图生成,如何从Java代码生成UML图(特别是序列图)?

    编辑: 如果你是个设计师 Papyrus 是您的最佳选择,它非常先进,而且功能齐全,但是如果您只想绘制一些UML图并方便地安装,那么 ObjectAid 很酷,不需要任何插件,我只是在EclipseJ ...

  7. IDEA制作java项目UML图

    手把手教学 步骤一 1.0 鼠标置于项目文件夹上 1.1 单击鼠标右键 步骤二 2.0移动鼠标至Diagrams选项 2.1水平移动鼠标打开子菜单 2.2单击子菜单第一个选项 2.3单击弹窗第一个选项 ...

  8. UML中依赖,关联,聚合,组合的含义(结合UML图和实战代码详解)

    UML中各种关系的含义 1. 什么是UML图? 2. UML图中的各种关系含义 2.1 依赖 2.1.1 简单理解及画法 2.1.2 那么在UML中的依赖是怎样的呢? 2.1.3 实战中UML图的画法 ...

  9. SVG与UML图详解

    一.SVG 可缩放矢量图形(SVG)是W3C的推荐标准,它使用XML描述两维图形结构和图形应用,可以在Web浏览器.手持设备或移动电话等多种上显示.目前稳定版本为1.1版,最新的版本是以草案形式存在的 ...

最新文章

  1. 添加Page_Init事件
  2. 获得WebApi用Post方法获得新增数据的信息
  3. Java 技术篇-利用ClipboardOwner实现实时监听剪切板功能实例演示
  4. python 学堂在线_最新网课答案2020学堂在线Python 交互式程序设计导论
  5. python 获取运行文件的路径
  6. 使用PADDING-TOP:(PERCENTAGE)实现响应式背景图片
  7. 多重加载Bean方式
  8. 关于Boost的Asio的信号灯超时时间已到错误
  9. 迅雷下载链接转为普通链接
  10. 简易cad导出pdf程序源码
  11. 2022.3.14-3.20 AI行业周刊(第89期):商业计划书
  12. 强智教务系统模拟登陆经验【附源码】
  13. Dubbo扩展点注解之@Adaptive
  14. 在HMM中,如果已知观察序列和产生观察序列的状态序列,那么可用以下哪种方法直接进行参数估计
  15. SpringCloud Alibaba实战第九课 分布式事务理论、DevOps运维
  16. VS+OpenCV+VC超详细的配置教程
  17. STM32F1单片机零基础学习(1)
  18. iOS 8 状态栏保持黑底白字 亲测有效
  19. 联盟链开发 区块链联盟链开发
  20. mPEG-Tert 甲氧基PEG叔丁酯

热门文章

  1. 【读书笔记->统计学】11-02 总体和样本的估计-总体比例、样本比例、根据总体预测样本比例概念简介
  2. vimperator
  3. mysql设置最大连接数
  4. Apache Benchmark测试结果数据解析
  5. EasyUI datagrid列名包含特殊字符(如:%等),会导致表格错位
  6. medoo支持的php版本,Medoo入门:安装和配置-Medoo使用指南
  7. 十分钟明白什么是容器技术
  8. C语言实战小项目(传统卡牌游戏)
  9. Java求和元素_实现一个List集合中的某个元素的求和
  10. 模拟射击训练系统需要准备多大的场地