UML 看懂类和类之间的关系

本文详细解析了UML中各类关系(泛化、实现、聚合、组合、关联与依赖)的概念及其图形表示方法,通过具体例子展示了这些关系在代码层面的表现形式。

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

这是一个类图,关注一下类和类之间的关系

  • 车的类图结构为<<abstract>>,表示车是一个抽象类;

  • (Interface Realization)
    它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心三角的虚线表示;

  • (Generalization) 小汽车与SUV治安也是继承关系,它们之间的关系为泛化关系,使用带空心三角的实现表示;

  • (Composition)小汽车与发动机之间是组合关系,使用带实心箭头的实现表示;

  • (Aggregation)学生与班级在之间是聚合关系,使用带空心箭头的实现表示;

  • (Association)学生与省份证之间是关联关系,,使用一根实现表示;

  • (Dependency)学生上学需要用到自行车,与自行车是一种依赖关系,使用带开口三角虚线表示。


类和类之间的关系

空心三角+实线

类的继承结构表现的UML中为:泛化(generalize)和是实现(realize)

#####泛化关系(generalization)

继承关系为 is-a的关系,自行车是车,猫是动物,SUV是汽车

输入图片说明

代码表现为继承非抽象类

实现关系(realize)

空心三角+虚线

(C++中用抽象类表示, 在JAVA中有接口的概念)

输入图片说明

代码表现为继承抽象类

聚合关系和组合关系的不同:聚合关系不是强依赖的,及时整体不存在,部分任然存在;部门撤销了,人员不会消失;

聚合关系(aggregation)

空心菱形+实线

输入图片说明

组合关系(composition)

实心菱形+实线

输入图片说明

组合关系是一种强依赖的特殊聚合关系,整体不存在,部分也就不存在了,公司没了,部门也就没了

依赖关系与关联关系的不同:依赖关系是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化;依赖关系也发生变化;

关联关系(association)

一条直线

它描述不同类的对象之间的结构关系,是一种静态关系,通常与运行状态无关,一般由常识等因素决定;一般用来定义对象之间的静态的、天然的结构,是一种强关联的关系;

代码中,关联对象同城是以成员变量的形式实现

依赖关系(dependency)

开口三角+虚线

输入图片说明

描述一个对象在运行期间会用到另个对象的关系; 双向依赖是比较糟糕的结构,我们总是应该保持单项依赖,杜绝双向依赖的产生;

代码中,依赖关系体现为类构造方法及类方法的传人参数,箭头的指向为调用关系;依赖关系除了临时知道对方wait,还是“使用”对方的方法和属性

转载于:https://my.oschina.net/vhacker/blog/855314

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值