首页 > 其他分享 >UML类图及各种线代表的关系含义总结

UML类图及各种线代表的关系含义总结

时间:2024-02-05 16:23:11浏览次数:20  
标签:关系 对象 子类 含义 类图 关联 UML 父类

原文:UML类图及各种线代表的关系含义总结_uml各种线条代表什么意义,请用uml图例详细说明-CSDN博客

一、认识类图
类图可以说是UML里使用频率最高的,类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有 一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。类图表示类、 接口和它们之间的协作关系,用于系统设计阶段。

类图其实大家基本都见过,没见过百度一下就一堆:

 

那么类图的具体结构是什么样的呢?

 

它是由三个矩形标识的,最上面的部分标识类的名称;中间的部分标识类的属性;最下面的部分标识类的方法,如下图所示:

 

 

 

二、类与类之间的关系
当知道了一个类怎么去表示它的属性方法时,那就该来考虑类与类之间的关系了,而类之间一共有6种主要的关系,它们分别是:关联、聚合、组合、继承、实现和依赖,我们分别来看不同关系如何用不同的箭头来表示:

(ps:UML 类关系图中,没有实心箭头。)

 

 

继承关系

继承关系中,子类继承父类的所有功能,父类所具有的属性、方法,子类应该都有。子类中除了与父类一致的信息以外,还包括额外的信息。

例如出租车、公交车、货车都是属于车,它们都有自己的名字,都可以上路跑。

 

 

实现关系

接口(包括抽象类)是方法的集合,在实现关系中,类实现了接口,类中的方法实现了接口声明的所有方法。

例如:汽车和轮船都是交通工具,而交通工具只是一个可移动工具的抽象概念,船和车实现了具体移动的功能。

 

 

组合关系

组合关系表示类之间整体与部分的关系,整体和部分有一致的生存期。一旦整体对象不存在,部分对象也将不存在,是同生共死的关系。

例如:人由头部和身体组成,两者不可分割,共同存在。

 

 

聚合关系

聚合关系也表示类之间整体与部分的关系,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。

例如:公交车司机和工衣、工帽是整体与部分的关系,但是可以分开,工衣、工帽可以穿在别的司机身上,公交司机也可以穿别的工衣、工帽。

 

 

关联关系

关联关系是类与类之间最常用的一种关系,表示一类对象与另一类对象之间有联系。组合、聚合也属于关联关系,只是关联关系的类间关系比其他两种要弱。

关联关系有四种:双向关联、单向关联、自关联、多重数关联。

例如:汽车和司机,一辆汽车对应特定的司机,一个司机也可以开多辆车。

(这按一个司机固定开司机专属的车来设计)

 

 

在多重性关系中,可以直接在关联直线上增加一个数字,表示与之对应的另一个类的对象的个数。

1..1:仅一个

0..*:零个或多个

1..*:一个或多个

0..1:没有或只有一个

m..n:最少m、最多n 个(m<=n)依赖关系

依赖关系

大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。

依赖关系是一种“使用”关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。

例如:汽车依赖汽油,如果没有汽油,汽车将无法行驶。

 

 

 

到这里这六类关系就介绍完了,这六种类关系中,组合、聚合和关联的代码结构一样,可以从关系的强弱来理解。

各类关系从强到弱依次是:继承→实现→组合→聚合→关联→依赖。

 

 

三、类关系记忆技巧
箭头方向:从子类指向父类。

记忆技巧:

1、定义子类是需要通过extends 关键字指定父类;

2、子类一定是知道父类定义的,但父类并不知道子类的定义;

3、只有知道对方信息时才能指向对方;

4、所以箭头的方向是从子类指向父类。

继承实现:用线条连接两个类。

记忆技巧:

1、空心三角箭头表示继承或实现

2、实线表示继承,是is-a 的关系,表示扩展,不虚,很结实;

3、虚线表示实现,虚线代表“虚”无实体。

关联依赖:用线条连接两个类。

记忆技巧:

1、虚线表示依赖关系:

临时用一下,若即若离,虚无缥缈,若有若无;表示一种使用关系,一个类需要借助另一类来实现功能;一般是一个类将另一个类作为参数使用,或作为返回值。

2、实线表示关联关系:

关系稳定,实打实的关系,铁哥们;表示一个类对象和另一个类对象有关联;通常是一个类中有另一个类对象作为属性。

组合聚合:用菱形表示。

记忆技巧:

1、菱形就是像是一个盛东西的器皿(比如盘子);

2、聚合:空心菱形,代表空器皿里可以放很多相同的东西,聚集在一起(箭头方向所指的类);整体和局部的关系,两者有独立的生命周期,是has-a 的关系;弱关系,消极的词:弱-空。

3、组合:实心菱形,代表器皿里已经有实体结构的存在,生死与共;整体与局部的关系,和聚合关系对比,关系更加强烈;两者具有相同的生命周期,contains-a 的关系;强关系,积极的词:强-满。

四、案例分析
生活案例之动物衍生关系图

下面这张图是来自《大话设计模式》这本书中,对动物衍生关系描述的类图。这个图非常有技术含量也非常经典,大家可以好好理解一下。

 

 


————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_41576278/article/details/114886225

标签:关系,对象,子类,含义,类图,关联,UML,父类
From: https://www.cnblogs.com/bruce1992/p/18008359

相关文章

  • canonical 在计算机编程领域的含义
    canonical在计算机编程领域中有多重含义,主要取决于上下文和所指的领域。以下是canonical在不同情境下的含义及相应示例:数据结构与算法:在数据结构与算法中,canonical常用来描述一个问题或者数据结构的标准或典型表达。这通常是指最常见或最经典的表达方式,可以作为学习和理解的......
  • 理解英特尔® 酷睿™ 处理器后缀含义
     外形/功能类型/细分市场后缀经优化/设计面向台式机K高性能,未锁频 Φ需要独立显卡 S特别版 T功耗优化生活方式 X/XE高性能,未锁频移动设备(笔记本电脑和2合1设备)HX最高性能,所有SKU未锁频......
  • “类图”之旅UML继承(泛化),实现,关联依赖,组合聚合.
     开启“类图”之旅说到对系统代码中的模型梳理,其实最好的方式还是使用UML类图。上个章节中老猫没有展开和大家分享UML类图,一个是由于篇幅的原因,第二个是老猫觉得类图对于咱们后续阅读框架源码以及底层设计模式有着相当大的帮助,所以很有必要将其作为单独一篇来和大家分享。如......
  • [office] 解读Excel高手写公式使用的{}--%&符号含义
    Excel高手的世界,我们初触excel的同学们,真还不懂。高手们在编写excel函数公式,经常会玩大括号({})、双减号(--)、百分号(%)、连接空值(&"")等等稀奇古怪的符号,看得我们是一愣愣的。当然这些进阶的思路也是excel帮助文档所给不了我们的。比如这些公式的含义,亲们明白吗?=MATCH("成都......
  • 从编码角度看正则表达式的\w\s\b\d具体含义
    从基础的ascii码找出正则表达式元字符的具体意义。1<?php2//从最基础的编码ascii码表的128个字符了解正则\w\s\b\d所对应的所有匹配3$reg_w='/\w/';4$reg_s='/\s/';5$reg_b='/\b/';6$reg_d='/\d/';7$str_w='';$str_s=''......
  • 可重入锁的含义及解决的问题
    可重入锁顾名思义可以重复利用的锁,但不是任何方法都能重复使用,而是最初占有锁的方法调用的方法,即是调用方法与被调方法可以同时占用同一把锁。下面从三个角度来说明:1.被调方法没有加锁publicclassLockTest{privatestaticfinalObjectobj=newObject();publicv......
  • 【C++】前置声明导致的代码含义改变
    真的有这么离谱的事哈哈哈哈。//F.hstructF{};structS:F{};//User.h#include<iostream>structF;structS;structUser{voidf(F*){std::cout<<"F"<<std::endl;}voidf(void*){std::cout<<"void"<......
  • Linux系统平均负载3个数字的含义
    文章作者:姜南(Slyar) 文章来源:SlyarHome(www.slyar.com)转载请注明,谢谢合作。越来越多人开始接触Linux操作系统,从VPS到无线路由的刷机系统(如OpenWRT、Tomato),同时也必不可少地会在各式各样的探针和系统监测界面上看到"系统平均负载"或者"LoadAverage"这样的字眼,但是它并不......
  • MarkDown基础及表格、KaTeX公式、矩阵、流程图、UML图、甘特图语法
    概述最多可设置6级标题技巧列表有序列表MD语法:1.你好2.我也好呈现效果:你好我也好无序列表MD语法:-a-b*aa*bb+aaa+bbb效果:abaabbaaabbb结论,支持三种方式:-、*、+TODO列表MD语法:-[x]后端接口开发-[]与前端联调呈现效果:后端......
  • 阅读笔记《大象:Thinking in UML》下
    《ThinkinginUML》中的大象思考引发了我对UML在软件开发中的重要性和应用的思考。大象的比喻不仅揭示了软件项目的庞大和复杂性,同时也突显了UML作为一种建模语言的价值。首先,大象象征了软件项目的庞大复杂性。在一个庞大的项目中,各种功能、模块和组件交织在一起,形成了一个庞大......