JAVA(UML)类图总结

UML

统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。

JAVA 中的类图概念,markdown用mermaid编辑classDiagram语法

类图classDiagram语法

全语法介绍:https://plantuml.com/zh/class-diagram

«interface» Class01 chimp int gorilla +size() : int AveryLongClass Class09 C2 C3 C4 Class07 Object[] elementData equals() Class10 >>service>> int id size() Dummy -field1 #field2 ~method1() +method2() Cool Where am i?

一、类图说明

在UML中,类使用包含类名、属性t和操作且带有分隔线的长方形来表示,类图分为三层。

第一层

  • 是类的名称,如果是 抽象类(struct)接口(interface),就用 斜体 表示,其中接口名称的上部会用<>修饰。

第二层

  • 是类的成员变量,通常是字段和属性。表示方式为:可见性 名称:类型 [ = 缺省值 ]。例如 : + ID : int = 1

第三层

  • 是类的成员方法。表示方式为: 可见性 名称(参数列表) [ : 返回类型]。例如 + getID(): int

可见性修饰符表

可见性 修饰符 描述
private - 同 一类
default ~ 同一包
protect # 不同包的子类
public + 不同包的非子类

Java有四种访问权限, 其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符。

  1. private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
  2. default:即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。
  3. protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问
  4. public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。

下面用表格的形式来展示四种访问权限之间的异同点,这样会更加形象。表格如下所示:

同一个类 同一个包 不同包的子类 不同包的非子类
Private
Default
Protected
Public

二、类之间的关系

类之间的关系有

  • 实现(Realize),用来表示类与接口、抽象类与接口之间的关系。
  • 泛化(Generalize),泛化(就是继承),用来表示类与类、类与抽象类、抽象类与抽象类、接口与接口之间的关系。
  • 依赖(Dependency)依赖用来表示两者之间的依从关系。关联可以是双向的,也可以是单向的;
  • 关联(Associate),关联关系可以是抽象的,例如花朵依赖阳光,也可以进一步具体划分为聚合及组合关系。
    • 聚合(Aggregate),聚合用来表示整体与部分的关系,是一种弱的关联关系,体现为A可以包含B,但B不一定是A的一部分(可分割)。
    • 组合(Compose)。组合用来表示整体与部分的关系,是一种强的关联关系,体现了严格的整体和部分的关系(不可分割),整体和部分的生命周期一样(人和身体器官)。

其中,聚合(Aggregate),组合(Compose)属于关联(Associate),是特殊的关联(Associate)关系。

关系强度(耦合度)由高到低为:泛化=实现>组合>聚合>关联>依赖。

图例参考:https://www.cnblogs.com/shamao/p/10875550.html

关系 语法 描述 图示
实现 –|> 实线 + 空心三角 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NiXmHTtK-1609490352752)(imges/实现.png)]
泛化(继承) …|> 虚线 + 空心三角 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NDRPhTsZ-1609490352755)(imges/泛化.png)]
关联 –> 实线 + 箭头 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lPSn3Nw4-1609490352756)(imges/关联.png)]
聚合 –o 实线 + 空心四边形 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xzp3x7uw-1609490352757)(imges/聚合.png)]
组合 –* 实线 + 实心四边形 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-le5YRMEd-1609490352758)(imges/组合.png)]
依赖 …> 虚线 + 箭头 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qk4k83b0-1609490352759)(imges/依赖.png)]

你可能感兴趣的:(Java笔记,类)