首页 > 其他分享 >UML类图(二)

UML类图(二)

时间:2023-06-17 21:07:08浏览次数:50  
标签:关系 类图 private class 箭头 接口 UML public


相信希望,相信自己

上一章简单介绍了 设计模式的原则(一), 如果没有看过,请观看上一章

本文参考文章: 常见UML符号详解

UML (Unified modeling language) 统一建模语言,是一种用于软件系统分析和设计的语言工具,
它用于帮助软件开发人员进行思考和记录思路的结果。

一. UML 类图描述

如:

UML类图(二)_成员变量

一.一. 修饰符

修饰符有 public private protected

其中,

public 用 + 号表示 (sex属性)

private 用 - 号表示 (name属性)

protected 用 # 表示 (age 属性)

一.二 类

单个类图,一般分三层,第一层表示类的名称;第二层表示类的特性,通常就是字段和属性;第三层是类的操作,通常是方法或行为

UML类图(二)_成员变量

一.三 接口

接口类似单个类图也分三层,第一层表示接口的名称;第二层表示接口的特性,通常就是字段;第三层是接口的操作,通常是方法或行为。

接口表示方式有两种

  • 顶部有 <>显示:如IFly接口
  • 棒棒糖表示法:如Swim接口

UML类图(二)_修饰符_03

一.四 字段

表示方式:修饰符 字段名:字段类型

例如:

  • - name:String
  • + sex:String
  • # age:int

一.五 方法

表示方式:修饰符 方法名(参数类型 参数):返回值类型

例如:

  • - think():void
  • # work(int type): void
  • + playGame(int type): String

二. 相互关系

UML 本身是一套符号的支付宝, 就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,
比如, 类,接口,实现,泛化,依赖,组合,聚合等。

继承(extends),实现(implement),关联(Association),聚合(Aggregation),合成(Composition),依赖(Dependency)。

UML类图(二)_修饰符_04

二.一 依赖(Dependency)

定义:

  • 依赖是单向的,通常以方法参数的形式、局部变量的形式,及对静态方法调用的形式出现

代码体现:方法参数,局部变量,静态方法

表示方式:

虚线箭头来表示

UML类图(二)_UML_05

public class PersonServiceBean {
    private PersonDao personDao;

    public void save(Person person) {

    }

    public IDCard getIdCard(Integer personId){
        return new IDCard();
    }

    public Dept getDept() {
        Dept dept = new Dept();
        return dept;
    }
}

依赖,是只要两个类有联系, 成员变量,方法参数, 方法返回值, 方法内变量(不遵守 迪米特法则时) 都属于 依赖

UML类图(二)_依赖实现_06

二.二 继承 (extends)

继承有的文章使用泛化(Generalization)来表示。

定义:

  • 接口与接口之间的继承关系
  • 类与类之间的继承关系

表示方式:
带三角箭头的实线空心三角形,箭头指向父类

UML类图(二)_UML类图_07

如果 A extends B, 那么就说 A 和 B 之间存在泛化关系。

@Data
public class Student extends Person{

}

UML类图(二)_修饰符_08

二.三 实现(implement)

定义:

  • 类对接口的实现关系

表示方式:
带三角箭头的虚线,箭头指向接口

UML类图(二)_修饰符_09

如果 A 类 implements B 接口, 那么就是实现

public interface PersonService {
    
}


public class PersonServiceBean  implements PersonService{

}

UML类图(二)_UML类图_10

二.四 关联关系(Association)

定义:

  • 是一种拥有的关系,它使一个类知道另一个类的属性和方法,当一个类‘知道’另一个类时,我们可以说它们之间相互关联;
  • 双向关联:可以有两个箭头或者没有箭头(不推荐);
  • 单向关联:有一个箭头,且箭头方向指向被关联的对象;

代码体现:成员变量

表示方式:
实线箭头,且箭头指向被拥有者

UML类图(二)_成员变量_11

关联关系实际上就是类与类之间的联系,是依赖关系的特例。
相比于依赖关系, 它具有导航性: 有双向关系 或者单向关系
关系有多重性: 1 (有且只有1个) 0 (0个或者多个) 0,1 (0个或者1个) n…m (n到m个都可以) m…* (至少m个)

@Data
public class IDCard {
    private Person person;
}

@Data
public class Person {
    private IDCard idCard;
}

UML类图(二)_依赖实现_12

二.四.一 聚合关系 (Aggregation)

定义:

  • 一种弱的‘拥有’关系,体现的是 A 对象可以包含 B 对象,但 B 对象不是 A 对象的一部分;
  • 整体与部分的关系,如文学俱乐部全体成员与文学俱乐部成员

代码体现:成员变量

表示方式:
带空心菱形的实心线,菱形指向整体

UML类图(二)_UML类图_13

聚合关系 表示的是整体和部分的关系, 整体与部分可以分开。
聚合关系是关联关系的特例, 所以他具有关联的导航性和多重性。

public class Computer {
    private Mouse mouse;
    private Monitor monitor;

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

    public void setMonitor(Monitor monitor) {
        this.monitor = monitor;
    }
}

UML类图(二)_修饰符_14

二.四.二 合成关系(Composition)

定义:

  • 一种强的‘拥有’关系,体现了部分与整体的关系,它们拥有相同的生命周期

代码体现:成员变量

表示方式:
带实心菱形的实线,菱形指向整体

UML类图(二)_UML类图_15

如: 人 和头

@Data
public class Person {
   private IDCard idCard;
   
   // 不可以分割,在成员变量时,直接构造。
   private Head head = new Head();
}

UML类图(二)_依赖实现_16

二.五 关系图

强弱顺序:

继承=实现>组合>聚合>关联>依赖

这些之间的关系图大概是这样:

UML类图(二)_UML_17



本章节的代码放置在 github 上:

https://github.com/yuejianli/DesignPattern/tree/develop/UML





标签:关系,类图,private,class,箭头,接口,UML,public
From: https://blog.51cto.com/yueshushu/6506188

相关文章

  • UML用例图
    原文合集地址如下,有需要的朋友可以关注本文地址合集地址介绍UML(UnifiedModelingLanguage)用例图的缩写为UCD,其中UCD代表UseCaseDiagram。用例图是软件系统设计中的一种图形化表示工具,用于描述系统的功能需求和用户与系统之间的交互。用例图主要用于捕捉系统的行为视图,展示系统中......
  • UML用例图
    原文合集地址如下,有需要的朋友可以关注本文地址合集地址介绍UML(UnifiedModelingLanguage)用例图的缩写为UCD,其中UCD代表UseCaseDiagram。用例图是软件系统设计中的一种图形化表示工具,用于描述系统的功能需求和用户与系统之间的交互。用例图主要用于捕捉系统的行为视图,展示......
  • Learn UML with JUDE(一)
    我希望你能够使用JUDE去学习和体验UML,JUDE是一个建模工具,你可以用它去画UML。下面我会指导你通过一些实例去学习使用JUDE来画UML。一、Overview    UMLandUMLtools l    DescriptionofJUDE l    InstallationofJUDE l    FundamentalComponentsandB......
  • UML图详解
    引用1、为什么需要类图?类图的作用我们做项目的需求分析,最开始往往得到的是一堆文字,请看下面这堆文字:本项目是在一期的基础上增加对电缆、通讯工程的管理和施工详细数据的记录和统计,使整个系统更好的管理各工程项目从中标开始到竣工验收的全部过程和资料和分析施工过程的数据。......
  • UML类图说明
    1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。对象引用本身就是有向......
  • 三层架构程序设计用户故事用例图,设计的类图活动图及用户故事
    用例图: 类图: 活动图:  用户故事:餐厅经理作为餐厅经理:我应该能够更新有关我餐厅的信息作为餐厅经理:我应该能够查看我的商店的每周销售情况作为餐厅经理:我应该可以查看餐厅当前的库存情况顾客作为客户:我应该能够浏览菜单并查看餐厅提供的各种食物选择以及每件商品的......
  • 系统架构设计师笔记第4期:统一建模语言(UML)
    统一建模语言(UnifiedModelingLanguage,简称UML)是一种用于软件系统分析、设计和文档化的标准建模语言。它提供了一组图形符号和规则,用于描述系统的结构、行为、交互和其他相关方面,以便开发人员、设计师和利益相关者之间进行沟通和共享理解。通过使用UML,开发人员和设计师可以使用标......
  • UML
    UML:统一建模语言。UML2.2分类UML2.2定义了14种图示,分类如下:结构式图形:强调的是系统式的建模。静态图(类图,对象图,包图)实现图(组件图,部署图)剖面图复合结构图行为式图形:强调系统模型中触发的事件。活动图状态图用例图交互式图形:属于行为式图形子集合,强调系统......
  • 会流程图却不会UML活动图?活动图深度剖析,就怕你学不会!
    1.UML活动图是啥?也许很多人都不怎么了解活动图,但是却对流程图很熟悉,你暂且可以简单的把活动图理解为UML里的流程图,用来描述系统的行为特征。不过UML活动图对比于流程图来说也存在不少差异,本文将在第三章节讲解活动图与流程图和其他相关类型绘图之间的区别。活动图是用于描述系......
  • UML图
    格子说明:三个格子从上至下分别表示:类名称(如果是接口,就使用斜体表示)类的特性(一般是类的字段和属性,可以没有)类的操作(一般是类的方法或行为)它们前边的符号有以下几类:“+”表示public“-”表示private“#”表示protected"~"表示default,也就是包权限“_”下划线表示sta......