UML类图学习


在这里插入图片描述

UML类图,作为UML的核心组成部分之一,扮演着至关重要的角色。UML类图是一种静态结构图,用于描述系统中的类及其之间的关系。通过类图,设计师和开发者能够直观地理解系统的组件构成,以及各组件如何协同工作,从而促进团队间的沟通,提高开发效率,确保软件质量。

一、UML类图简介

UML类图是UML中最常用的图之一,主要用于描述系统中的类、接口、协作和它们之间的关系,如继承、聚合、组合、依赖和实现。它以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法。类图用来描述系统中有意义的概念,包括具体的概念、抽象的概念、实现方面的概念等,是对现实世界中事物的抽象。

类图不仅帮助我们理解系统的静态结构,还能够辅助设计阶段的工作。它们提供了对系统组件的高层次视图,有助于识别系统的关键概念,并促进团队成员之间的交流。此外,类图还可以作为编码前的设计文档,确保开发人员遵循预定的设计模式和技术规范。

UML类图的用途比较多,常用的给大家列举几个:

1.设计系统架构: 类图帮助设计者在早期阶段规划系统的架构,定义类和它们之间的关系。

2.代码生成: 一些工具可以基于UML类图自动生成代码框架,加速开发过程。

3.文档化系统: 类图可以作为系统文档的一部分,帮助团队成员理解系统的结构和功能。

4.交流和协作: 类图提供了一种通用的语言,便于开发团队、利益相关者和客户之间的沟通。

二、UML类图中的基本元素

在这里插入图片描述
在这里插入图片描述

三、六大类图关系

1. 继承 (Inheritance) 或泛化 (Generalization)

继承关系用一条带空心箭头的直接表示。

继承关系表示子类从父类继承了属性和行为。例如,Student类和Teacher类都可以继承自Person类。
在这里插入图片描述

class Person {};
class Student : public Person {}; // 学生继承人
class Teacher : public Person {}; // 教师继承人

2. 实现(Realization)

实现关系用一条带空心箭头的虚线表示。

例如,”车”为一个抽象概念,在现实中并无法直接用来定义对象;只有指明具体的子类(汽车还是自行车)才可以用来定义对象。

在这里插入图片描述

class Car //抽象类
{
public:
	Car();
	virtual ~Car();
	virtual run() = 0;
};
class SmallCar : public Car {}; 

另外,需要注意的是实现除了实现和矩形表示的方法,还有棒棒糖表示法。
在这里插入图片描述

3. 聚合(Aggregation)

聚合关系用一条带空心菱形箭头的直线表示。
聚合关系表示整体与部分的关系,在这种关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。例如,汽车发动机(Engine)是汽车(Car)的组成部分,但是汽车发动机可以独立存在,因此,汽车和发动机是聚合关系。
在这里插入图片描述

class Car {
private:
    Engine* engine; // 引擎可以独立于汽车存在
};

4. 组合 (Composition)

组合关系用一条带实心菱形箭头直线表示。

组合关系也是整体与部分的关系,但与聚合不同的是,部分不能离开整体而单独存在。例如,公司(Company)和部门(Department)之间的关系可以通过组合来表示。
在这里插入图片描述

class Company {
private:
    Department departments[10]; // 部门依赖于公司存在
};

5. 关联 (Association)

关联关系是用一条直线表示的。

关联关系是类与类之间最常用的一种关系,它是一种结构化的关系,用于表示某一类对象与另一类对象之间有联系。例如,顾客(Customer)购买商品(Product)并拥有商品,反之,卖出的商品总有某个顾客与之关联。因此,Customer类和Product类之间具有双向关联关系。
关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向,如下图,表示A知道B,但 B不知道A。
在这里插入图片描述

class Customer {
private:
    Product products[10];
};

class Product {
private:
    Customer customer;
};

6. 依赖(Dependency)

依赖关系是用一套带箭头的虚线表示的。
依赖关系表示一个类的实现需要另一个类的帮助才能完成。例如,Driver类依赖于Car类。
在这里插入图片描述

class Driver {
public:
    void drive(Car& car); // 驾驶员依赖汽车
};

四、类图模板案例

1. 汽车类图

在这里插入图片描述

2. 动物UML类图

在这里插入图片描述

3. 微信支付类图

在这里插入图片描述

五、总结

综上所述,UML类图是软件开发过程中不可或缺的一部分,尤其对于复杂系统的分析和设计而言。通过将UML类图的概念应用到具体的编程语言如C++中,我们可以创建出既符合设计意图又易于维护的高质量代码。同时,利用UML类图进行前期规划还可以减少后期修改的成本,提高项目的成功率。

参考文献

[1] 九种常见UML图(分类+图解)
[2] 系统架构 深入理解类图
[3] 这个聚合弄反了 干货!3分钟掌握UML类图
[4] 如何绘制UML类图 详解和实例解读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值