如何画UML类图

如何画UML类图简单介绍统一建模语言 UnifiedModel UML 是用来设计软件蓝图的可视化建模语言 面向对象的建模语言的国际标准 它的特点是简单 统一 图形化 能表达软件设计中的动态与静态信息 类 接口 类图类类 Class 是指具有相同属性 方法和关系的对象的抽象 它封装了数据和行为 是面向对象程序设计 OOP 的基础 具有封装性 继承性和多态性等三大特性 在 UML 中 类使用包含类名 属性和操作且带有分隔线的矩形来表示 类名类名 Name 是一个字符串 例如

简单介绍

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

类、接口、类图

类(Class)是指具有相同属性、方法和关系的对象的抽象,它封装了数据和行为,是面向对象程序设计(OOP)的基础,具有封装性、继承性和多态性等三大特性。在 UML 中,类使用包含类名、属性和操作且带有分隔线的矩形来表示。

类名

类名(Name)是一个字符串,例如,Student(注意java语言类名的命名规范)

属性

属性(Attribute)是指类的特性,即类的成员变量。UML 按以下格式表示:

[可见性]属性名:类型[=默认值]

eg.-name:String

注意:“可见性”表示该属性对类外的元素是否可见,包括公有(Public)、私有(Private)、受保护(Protected)和朋友(Friendly)4 种,在类图中分别用符号+、-、#、~表示。

操作

类的成员方法。UML 按以下格式表示:

[可见性]名称(参数列表)[:返回类型]

eg.+display():void

图.如何画UML类图

接口

如何画UML类图

类图

“计算长方形和圆形的周长与面积”的类图
图  “计算长方形和圆形的周长与面积”的类图

类和类之间的关系

在软件系统中,类不是孤立存在的,类与类之间存在各种关系。根据类与类之间的耦合度从弱到强排列,UML 中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

依赖关系

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

四种情况:

(4) 静态方法调用

如何画UML类图

下图所示是人与手机的关系图,人通过手机的语音传送方法打电话。

依赖关系的实例

 

关联关系

关联(Association)关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。我们先介绍一般关联。

在代码中通常将一个类的对象作为另一个类的成员变量来实现关联关系

关联关系分为双向关联,单向关联,自关联

双向关联-一般用直线来表示,例如顾客购买商品并拥有商品,反之卖出的商品总是某个顾客与之相关联:

如何画UML类图

 

也可以这样表示

如何画UML类图

如何画UML类图

单向关联

如何画UML类图

如何画UML类图

自关联,系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系为自关联,常见于链表:

如何画UML类图

 

聚合关系

聚合关系的实例
图6 聚合关系的实例

组合关系

组合(Composition)关系也是关联关系的一种,也表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系,是 cxmtains-a 关系。

在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。

在 UML 类图中,组合关系用带实心菱形的实线来表示,菱形指向整体。图 7 所示是头和嘴的关系图。
 




组合关系的实例
图7 组合关系的实例

泛化关系

泛化关系的实例
图8 泛化关系的实例

实现关系

实现关系的实例

 

一遍UML比较好的文章:https://zhuanlan.zhihu.com/p/

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231452.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数学思想方法-分布式计算-linux/unix技术基础(5)

    数学思想方法-分布式计算-linux/unix技术基础(5)

    2022年1月17日
    40
  • mybatis底层通过什么实现_priorityqueue java

    mybatis底层通过什么实现_priorityqueue java一、概述最近接触了一些项目,发现很多项目最开始的时候Service接口和实现类一个方法都没有,通过继承通用底层能够使用基本的增删改查操作了。这种骚操作以前听过但是着实没有亲手实现过,今天参考着自己实

    2022年8月16日
    8
  • c语言字符数组初始化的三种方式_c语言赋值字符串

    c语言字符数组初始化的三种方式_c语言赋值字符串C语言中字符数组的初始化与赋值,字符串相关函数!1.字符数组初始化在C语言中,字符串是当做字符数组来处理的;所以字符串有两种声明方式,一种是字符数组,一种是字符指针。(1)直接逐个初始化字符数组:字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。charstr[10]={‘I’,”,’a’,’m’,”,‘h’,’a’,’p’,’p’…

    2022年8月30日
    4
  • jupyter notebook的安装与使用

    jupyter notebook的安装与使用最近由于项目需要,开始学习python,然后发现一个非常有用的python交互式编辑器,非常容易上手而且非常有用和实在,本博文是对学习jupyternotebook的一个汇总和记录,与大家一起分享!下面的内容是针对ubuntu系统的,当然,jupyternotebook在windows也是支持的。

    2022年6月8日
    26
  • 【数学建模】数学建模学习4—动态规划(例题+matlab代码实现)

    【数学建模】数学建模学习4—动态规划(例题+matlab代码实现)文章目录 toc 1 动态规划 1 1 动态规划的发展及研究内容 1 2 决策过程的分类 2 基本概念 基本方程和计算方法 2 1 动态规划的基本概念和基本方程 2 1 1 阶段 2 1 2 状态 2 1 3 决策 2 1 4 策略 2 1 5 状态转移方程 3 若干典型问题的动态规划模型 3 1 最短路线问题 3 2 生产计划问题 3 3 资源分配问题 4 具体的应用实例 1 动态规划 1 1 动态规划的发展及研究内容 动态规划 dynamicprogr 是运筹学的一个分支 是求解决策过程 decisionp

    2025年11月28日
    4
  • css float属性用法_不属于float的常用属性

    css float属性用法_不属于float的常用属性clear:both表示不允许左右两边的floatclear:left表示不允许左边floatclear:right表示不允许右边float

    2025年8月30日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号