微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UML图总结

立巨人之肩,可省登高之力

参考资料:

https://blog.csdn.net/strongman028/article/details/107352961

简介

UML类图,主要用于软件设计中反应类与类之间的关系,它也是学习设计模式之前必须熟悉的内容

类之间存在以下关系:

泛化关系
实现关系
依赖关系
关联关系
聚合关系
组合关系

泛化关系

泛化和实现都是类之间继承,泛化来说一般不重写父类函数。只是功能拓展.
继承关系是泛化关系的反关系,也就是说子类是从父类继承的,而父类则是子类的泛化。

在这里插入图片描述

可以看出 父类的show() 和 hide() 并没有重写。

实现关系

实现关系可以理解为一个类实现接口的功能(在C++里面,接口是使用纯虚函数的方式表示的)图是网上扒的

在这里插入图片描述

可以看出每个类都重新实现了draw()

耦合度:弱>>强

依赖、关联、聚合、组合

依赖关系

依赖关系定义为对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时。可以理解为,局域变量、方法的形参,或者对静态方法调用(虚线加箭头)

在这里插入图片描述

钱以形参的行驶传入人的live函数,人的eat函数中会实例化一个食物来吃掉。类图中没画,自行体会。

关联关系

关联关系,顾名思义,就是指两个对象之间存在存在一些对应的关系。
下面我们举一个商城购物的例子,比如我们在某商城购买了一个商品,那么在该商城的后台系统中就会生成一个订单,每个订单就会对应一个用户,这样,订单与用户的关系就是关联关系。

在这里插入图片描述

关联关系一般使用成员变量来实现,有时也用方法形参的形式实现。

聚合关系

聚合关系可以简单的理解为A对象拥有B对象,但B对象是独立的,好比于群体和个体之间关系。
继续上面商城购物的例子,每一个订单中,都会存在一个或多个商品的信息,订单和这些商品之间的关系就可以称之为聚合关系。

在这里插入图片描述


这里我们可能容易分不清关联和聚合的区别,在order中用户和商品都是指针的形式存在,但关系却不一样。最主要的区别是,用户是唯一的,不同的订单可能会有相同的用户,所以它不能被订单所拥有,只能与之对应。商品可以存在很多很多的,而且每一个订单所拥有的商品,在其他订单里是不会存在的,这种关系则称之为聚合关系。

组合关系

组合关系,可以理解为A对象包含B对象,B对象是A对象的组成部分,就好比与整体与部分的区别。一般一成员变量来体现(实心菱形 + 箭头)

在这里插入图片描述


与聚合不同的是订单不在了,商品还在。但是汽车销毁了,轮胎、发动机也随之消失。它俩的生命周期小于等汽车。
其实聚合和组合的区别还是非常明显的,聚合关系是把相对独立的对象聚集一块,这些被聚集的独立的对象不会随着聚合对象的销毁而销毁。而组合关系则是不一些相对不独立的部件组合成一个整体,部件会随着整体一起销毁。

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

相关推荐