C++ 类图 Astah画类图

article/2025/10/21 5:17:57

类图

基本概念:
类图(Class Diagram):
类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。

类图的3个基本组件:

类名、属性、方法。
在这里插入图片描述

在UML类图中,常见的有以下几种关系:

泛化(Generalization)
实现(Realization)
关联(Association)
依赖(Dependency)
聚合(Aggregation)
组合(Composition)

1. 泛化(Generalization)

【泛化关系】:
是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
例如:老虎是动物的一种,即有老虎的特性也有动物的共性。

【箭头指向】:
带三角箭头的实线,箭头指向父类

在这里插入图片描述

2. 实现(Realization)

【实现关系】:
是一种类与接口的关系,表示类是接口所有特征和行为的实现.

【箭头指向】:
带三角箭头的虚线,箭头指向接口
在这里插入图片描述

3. 关联(Association)

【关联关系】:
是一种拥有的关系,它使一个类知道另一个类的属性和方法;
如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。
双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

【代码体现】:
成员变量

【箭头及指向】:
带普通箭头的实心线,指向被拥有者

在这里插入图片描述
上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。
但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。

下图为自身关联:
在这里插入图片描述

4. 依赖(Dependency)

【依赖关系】:
是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.

【代码表现】:
局部变量、方法的参数或者对静态方法的调用

【箭头及指向】:
带箭头的虚线,指向被使用者
在这里插入图片描述

5. 聚合(Aggregation)

【聚合关系】:
是整体与部分的关系,且部分可以离开整体而单独存在。
如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

聚合关系是关联关系的一种,是强的关联关系;
关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

【代码体现】:
成员变量

【箭头及指向】:
带空心菱形的实心线,菱形指向整体
在这里插入图片描述

6. 组合(Composition)

【组合关系】:
是整体与部分的关系,但部分不能离开整体而单独存在。
如公司和部门是整体和部分的关系,没有公司就不存在部门。

组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

【代码体现】:
成员变量

【箭头及指向】:
带实心菱形的实线,菱形指向整体
在这里插入图片描述
各种关系的强弱顺序:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

下面这张UML图,比较形象地展示了各种类图关系:
在这里插入图片描述
多重性(Multiplicity) :
通常在关联、聚合、组合中使用。就是代表有多少个关联对象存在。使用数字…星号(数字)表示。如下图,一个割接通知可以关联0个到N个故障单。

UML实例分析

联通客户响应OSS。系统有故障单、业务开通、资源核查、割接、业务重保、网络品质性能等功能模块。现在我们抽出部分需求做为例子讲解。

大家可以参照着类图,好好理解。
在这里插入图片描述

  1. 通知分为一般通知、割接通知、重保通知。这个是继承关系。
  2. NoticeService和实现类NoticeServiceImpl是实现关系。
  3. NoticeServiceImpl通过save方法的参数引用Notice,是依赖关系。同时调用了BaseDao完成功能,也是依赖关系。
  4. 割接通知和故障单之间通过中间类(通知电路)关联,是一般关联。
  5. 重保通知和预案库间是聚合关系。因为预案库可以事先录入,和重保通知没有必然联系,可以独立存在。在系统中是手工从列表中选择。删除重保通知,不影响预案。
  6. 割接通知和需求单之间是聚合关系。同理,需求单可以独立于割接通知存在。也就是说删除割接通知,不影响需求单。
  7. 通知和回复是组合关系。因为回复不能独立于通知存在。也就是说删除通知,该条通知对应的回复也要级联删除。经过以上的分析,相信大家对类的关系已经有比较好的理解了。大家有什么其它想法或好的见解,欢迎拍砖。

重点讲一下聚合和组合的关系:
聚合关系图:
在这里插入图片描述
组合关系图:
在这里插入图片描述
从代码上看这两种关系的区别在于:
构造函数不同,重点在于整体是否控制被关联的对象的什么周期。

可以参考下面的函数理解。

/* 雁群类: */public  class GooseGroup  {  public Goose goose;  public GooseGroup(Goose goose)  {  this.goose = goose;  }}/* 大雁类:*/
public class Goose  
{  public Wings wings;  public Goose()  {  wings = new Wings();  }  
}  

聚合关系的类里含有另一个类作为参数:

雁群类(GooseGroup)的构造函数中要用到大雁(Goose)作为参数把值传进来。
大雁类(Goose)可以脱离雁群类而独立存在,即大雁类的生命周期,不受雁群类控制。

组合关系的类里含有另一个类的实例化:

大雁类(Goose)在实例化之前,一定要先实例化翅膀类(Wings) ,两个类紧密耦合在一起,它们有相同的生命周期
翅膀类(Wings)不可以脱离大雁类(Goose)而独立存在。

信息的封装性不同
在聚合关系中,客户端可以同时了解雁群类和大雁类,因为他们都是独立的
而在组合关系中,客户端只认识大雁类,根本就不知道翅膀类的存在,因为翅膀类被严密的封装在大雁类中。

另外,还有一种关系Nest嵌套内部类

嵌套(Nest)

【组合关系】:
将一个类的定义放到另一个类中,这个类就叫嵌套类。

【箭头及指向】:
带内部有十字线的圆的实线,内部有十字线的圆指向被嵌套的类。

如下图,Class2、Class3是嵌套类,在Class1的内部。
在这里插入图片描述

Astah 画C++类图

在这里插入图片描述
内部类UML 类图画法:

所用工具:
在这里插入图片描述
名称Nest,使用时先点击外部类,再点击内部类
在这里插入图片描述
Structure:
在这里插入图片描述
第2种方法:
在Structure界面直接在ClassA上右键,选择Create Model -> Nested Class,然后命名好类名之后,把内部类拖到画图界面即可

更多Astah画类图的方法请参考:
https://astah.net/support/astah-pro/user-guide/class-diagrams/
或者
Astah Reference Manual(PDF手册)

感谢

C++ UML类图详解
C++(21)–Astah uml 画C++类图
用Astah画UML表示内部类的画法


http://chatgpt.dhexx.cn/article/EhHOlxGP.shtml

相关文章

画java类图_java UML类图的使用

类图 是用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。学习好类图的绘制,是一位合格的软件工程师应有的技能。 1.类的UML图示 在UML中,类使用包含类名,属性和方法且带有…

【系统架构】类图的画图规范

最后一弹&#xff0c;放在了类图上面&#xff0c;这也是需要引起注意的最重要的地方。 格式 接口 抽象类 类 注意&#xff1a; 1、接口一定有 <> 的标识&#xff0c;接口中的方法必须斜体&#xff08;默认都是抽象方法&#xff09; 2、抽象类名和抽象方法必须斜体…

java怎么画类图_UML类图基本画法

类 简要画法 类有三个单元格的矩形(看上图中的动物类) 第一格:类名称(如果是抽象类,名称标注为斜体字) 第二格:类属性名称 第三格:类操作名称 类属性或者操作的访问修改符的标注: public用加号标注 private用减号标注 protected用#号标注 接口 简要画法 接口有两个单元格的…

如何画UML类图

简单介绍 统一建模语言&#xff08;Unified Modeling Language&#xff0c;UML&#xff09;是用来设计软件蓝图的可视化建模语言&#xff0c;面向对象的建模语言的国际标准。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。 类、接口、类图 类 类&#…

visio uml 画java类图_用visio画UML类图

对于画类图的工具很多&#xff0c;曾经学过用starUML画类图&#xff0c;但这个是用于Java语言的&#xff0c;对于用vs编程C语言&#xff0c;个人感觉用visio会好一点。以下用以前面的俄罗斯方块游戏中的一个Block类为例来讲述 class Block { public: Block(void); void Init();…

【系统架构】类图怎么画

文章目录 类图是什么&#xff1f;类图组成元素类图六大关系强弱关系&#xff1a;依赖<关联<聚合<组合<实现<继承 类图是什么&#xff1f; 类图中包含从用户的客观世界模型中抽象出来的类、类的内部结构和类与类之间的关系。它是构建其他设计模型的基础&#xf…

PowerDesigner 画类图

PowerDesigner 画类图&#xff1a; 目录 1&#xff0c;建立class的Model 2&#xff0c;UML基础 类 接口&#xff1a; 关系 1, 泛化 generalization 用空心三角形实线来表示 2, 实现 Realization用空心三角形 虚线 来表示 3, 关联 Association用实线箭头来表示   …

EA画类图

EA画类图 演示所使用软件版本&#xff1a; 1 准备工作 1.1 新建工程 新建工程时取个工程名字然后确定&#xff0c; 之后会进入这个界面&#xff0c;选择Class&#xff0c;并确定&#xff1a; 展开Model&#xff0c;再展开Class Model&#xff0c;点击下方Class Model&…

php类图怎么画,类图怎么画?

类图怎么画&#xff1f; 步骤&#xff1a; 1、打开visio画图软件&#xff0c;在左边的导航中选择“软件”选项&#xff0c;在右边会有很多图&#xff0c;我们会看到UML图&#xff0c;点击选择进入。 2、我们会进入画图的界面&#xff0c;在上面导航区有个百分比的选项&#xff…

StarUML画类图

一. 前言 工作中&#xff0c;在写文档总结时&#xff0c;需要画类图&#xff0c;有助于理清楚类之间的调用关系和内部组成, Ubuntu下推荐使用StarUML 来画, 如果不知道这个工具&#xff0c;请参考笔者这篇文章下载安装&#xff1a; Ubuntu StarUML安装教程 当然StarUML这个…

类图到底该如何画

什么是类图&#xff1f; 要学习如何画类图的话那么我们首先要明确一下什么是类图&#xff1f; 顾名思义&#xff0c;类图是显示了模型的静态结构&#xff0c;特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要…

通俗易懂教你画类图

1. 类图 1.1类的内容 第一层&#xff1a;类的名称&#xff0c;如果是抽象类&#xff0c;则就用斜体显示。 第二层&#xff1a;字段和属性。 第三层&#xff1a;方法。 前面的符号&#xff1a; “” 表示public&#xff1b;"-“ 表示private&#xff1b;"#"…

UML详解(1):类的关系与如何绘制类图

作为一个程序员&#xff0c;我们经常会使用UML来绘制各种图&#xff0c;类图就是其中常用之一。对于初学者来讲&#xff0c;如何读懂类图可能是一件有些困惑的事情&#xff0c;这里通过逐步梳理&#xff0c;帮助你详细了解类的关系&#xff0c;以及以后如何绘制类图。 1.0 定义…

保姆级教程--类图怎么画

类图怎么画 类与类之间的关系 类和类之间存在着六种关系 由弱到强分别是 依赖<关联<聚合<组合<实现继承 相对应的 每一种类的关系在类图里面都有一种画法来表示 首先是依赖 这是一种什么关系呢 就好像人使用用计算机一样 在人这个类里面用到了计算机 那么 我们就…

[UML] 类图介绍 —— 程序员(灵魂画手)必备画图技能之一

统一建模语言(Unified Modeling Language&#xff0c;UML) 可分类成&#xff1a; 功能模型&#xff1a;从用户的角度展示系统的功能&#xff0c;包括用例图。对象模型&#xff1a;采用对象&#xff0c;属性&#xff0c;操作&#xff0c;关联等概念展示系统的结构和基础&#…

【OS学习笔记】七 Bochs的下载、安装和配置

参考&#xff1a;《X86汇编语言-从实模式到保护模式》-李忠。纯学习笔记&#xff0c;更详细内容请阅读正版书籍。 1 开源的BOCHS虚拟机软件 Bochs是开源软件。它用软件来模拟处理器取指令和执行指令的过程&#xff0c;以及整个计算机硬件。当它开始运行时&#xff0c;就直接模…

emulator教程 lbochs pc_bochs模拟器怎么用?bochs模拟器安装使用教程

bochs模拟器怎么用呢?你是否还在xp系统停止服务而惋惜呢?那就来系统天堂看看bochs模拟器安装使用教程吧。bochs模拟器能够把xp系统装进手机或者平板电脑哦;具体bochs模拟器怎么用我们一起来学习一下。 我们先来了解一下bochs是什么&#xff1a; Bochs是一个x86硬件平台的开源…

bochs core教程linux,ubuntu14.04中安装配置bochs详解(二)

这里面又很有用的东西。。 上一篇主要说安装的事情&#xff0c;安装成工的标志就是在命令行中有bochs这个程序&#xff0c;来张图片&#xff1a; 有这个界面的话就说明安装成功了。。。 接下来要干的事就是制作软盘和配置了&#xff0c;如果配置不成功的话&#xff0c;选6进去以…

bochs的安装和配置

参考书籍&#xff1a;《操作系统 真象还原》 书上使用的是bochs-2.6.2.tar.gz。是2013的版本&#xff0c;老旧老旧了&#xff0c;我不使用。 我的系统是Ubuntu18.04。 这篇文章的安装教程并不能正常运行。&#xff08;只能清楚的熟悉配置文件位置信息等&#xff09; 对于我而言…

bochs2.7安装

Bochs安装 谨以此篇博客记录长达一个星期之久的bochs安装之旅 实测Ubuntu18.04及Ubuntu20.04均可通过自带软件仓库顺利安装并使用&#xff0c;安装指令&#xff0c;远离折腾烦恼 sudo apt-get install bochs bochs-x问题 选用系统&#xff1a;debian11 debian11自带软件仓库…