如何快速理解类图 UML类图讲解

本文深入解析UML类图的构成元素,包括类名、属性、方法及构造型,阐述类之间的关系如关联、继承、依赖等,并通过实例展示类图在实际软件设计中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 类图表示不同的实体(人、事物和数据)如何彼此相关,显示了系统的静态结构。
  2. 类图是一个分为三个部分的矩形。
  • 最上面的部分显示类的名称,
  • 中间部分显示类的属性,
  • 最下面的部分显示类的方法(或者说“操作”)。

类名

<<类型>>
类名
在这里插入图片描述

类型

  • 类的构造型显示在一对双角括符号“<<>>”之间 , 经常放在类的名称上面。
 <<interface>>(接口类型 )
 <<utility>>(工具类)
 <<abstract>>(抽象类)
 实体类型不写

属性

作用域 : 参数类型

作用域

在属性和方法的前面有一个字符用来表示属性或方法的作用域

符号表示如下

  • “-”(private 私有)
  • “#”(protected 受保护)
  • “+”(public 公共)

下图显示了一个类Person的类图,它对应的类的C#源代码如下:

//类图示意
Person
+name: string
+sex: char
-age: int
+Work(in type: string): void
+Person(in name: string, in sex: char, in age: int): void
+Speak(): void
+Eat(): void![55a00eec41790ff127224e52803384b3.png](en-resource://database/7827:1)

class Person  {
    public string name;
    public char sex;
    private int age;

    public void Person(string name, char sex, int age){}
    public void Eat(){}
    public void Speak(){}
    public void Work(string type){}
}

类之间的关系

  1. 关联(association):类之间的关联大多用来表示变量实例持有对其他对象的引用,这种关系是半永久的,但没有包含关系。
  2. 继承(inheritance):继承是指一个类从其父类派生而来,继承了父类的属性和方法。
  3. 基于接口的继承,叫做实现(realization)。  
    基于类的继承叫做一般化(generalization),
  4. 依赖(dependency):依赖是不同类的实例之间的暂时关系。
  5. 聚合(aggregation):聚合是关联的一种特殊形式,它意味着一种整体/部分(whole/part)的关系,但是部分也可以作为其他整体的组分,而且部分和整体之间也没有生命期的依赖。
  6. 组合(composition):组合是聚合的一种特殊形式,组合的关联性比聚合更强,部分只能作为唯一的一个整体的部分,而且部分的生命周期依赖于整体的生命周期。

类的实例

实例一

  • CDSalesReport类继承自Report类。
  • 一个CDSalesReport类与一个CD类关联,但是CD类并不知道关于CDSalesReport类的任何信息。
  • CD类和Band类都彼此知道对方,两个类彼此都可以与一个或者多个对方类相关联。

实例二

  • Person类实现了IHuman接口,
  • Author类继承了Person类;
  • Book类与Author类之间的关联是1对多的,即一本书可能有一个或多个作者;
  • Person读书,这是一种暂时的单向依赖;
  • Book由一个或多个Page组成,每一个Page只能作为一本Book的一部分,这是一种组合关系;
  • Bookshelf里可以不放或者放多本Book,Book也可以放在其他的Bookshelf中,Bookshelf的存在并不能影响Book的存在性,这是一种聚合关系。

实例3

在这里插入图片描述

### 解决 PP-OCRv4 出现的错误 当遇到 `WARNING: The pretrained params backbone.blocks2.0.dw_conv.lab.scale not in model` 这样的警告时,这通常意味着预训练模型中的某些参数未能匹配到当前配置下的模型结构中[^2]。 对于此问题的一个有效解决方案是采用特定配置文件来适配预训练权重。具体操作方法如下: 通过指定配置文件 `ch_PP-OCRv4_det_student.yml` 并利用已有的最佳精度预训练模型 (`best_accuracy`) 来启动训练过程可以绕过上述不兼容的问题。执行命令如下所示: ```bash python3 tools/train.py -c configs/det/ch_PP-OCRv4/ch_PP-OCRv4_det_student.yml ``` 该方案不仅解决了参数缺失带来的警告,还能够继续基于高质量的预训练成果进行微调,从而提升最终检测效果。 关于蒸馏的概念,在机器学习领域内指的是将大型复杂网络(teacher 模型)的知识迁移到小型简单网络(student 模型)。这里 student 和 teacher 的关系是指两个不同规模或架构的神经网络之间的指导与被指导的关系;其中 teacher 已经经过充分训练并具有良好的性能,而 student 则试图模仿前者的行为模式以达到相似的效果但保持更高效的计算特性。 至于提到的 `Traceback` 错误信息部分,由于未提供具体的跟踪堆栈详情,难以给出针对性建议。不过一般而言,这报错往往涉及代码逻辑错误或是环境配置不当等问题。为了更好地帮助定位和解决问题,推荐记录完整的异常日志,并仔细检查最近修改过的代码片段以及确认依赖库版本的一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值