UML的四种关系

本文详述了UML中的关联、依赖、泛化和实现四种关系,通过实例解析了它们的区别和应用场景。关联关系包括聚合和组合,分别表示松散和紧密的组成部分关系;依赖关系描述了一方对另一方的使用;泛化关系则对应继承概念;实现关系体现类与接口的契约。掌握这些关系对于软件设计至关重要。

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

        承接上篇博客,这篇主要总结的是UML中的四种关系,分别是关联关系、依赖关系、泛化关系和实现关系,这四种关系当时就有点乱,后来就更不记得了,看来及时总结才是王道啊。

        事物不是独立存在的,要靠关系把它们组合在一起,关系就是解释它们之间的联系。

        一、关联关系(实线)

        关联描述了两个或多个类之间的结构性关系,就像图书馆和图书管理员,图书馆雇佣图书管理员,图书管理员属于图书馆,这两个类就具有关联关系,而关联关系又细分为聚合关系和组合关系,但无论聚合还是组合,描述的都是整体和部分的关系。

        

        1、聚合(实线+空心菱形)

        整体和部分之间是松耦合的关系,空心菱形指向整体,在时间上的约束不严格,没有明显的附属关系,就像电视机、遥控器和电视盒子,电视机有遥控器和电视盒子,但并不意味着遥控器和电视盒子不能独立存在,它们也是可以拿出去单卖的。

         

       2、组合(实线+实心菱形)

        整体和部分之间是紧耦合的关系,实心菱形指向整体,是附属关系,就像身体、头和胳膊一样,有了身体才会有头和胳膊,头和胳膊不能独立存在。

         

       二、依赖关系(虚线+箭头)

        依赖是一种使用关系,一个类要依赖到另外一个类或一个包要依赖到另外一个包,它说明一个事物规格说明的变化可能影响到使用它的另一个事物,当然,反之未必,箭头指向被依赖的一方。就像类A和B,如果A发生了变化影响到了B,那么可以说A依赖于B。

        

        如上图,在市场中如果顾客发生了变化,那么势必会影响到供应者的商品供应量,顾客的变化影响到了供应者,那么顾客便依赖于供应者。

        三、泛化关系(实线+空心三角)

        泛化描述的是面向对象中的继承关系,子类继承父类的属性和方法,子类在继承父类的基础上还可以增加新的功能,父类要放到有箭头的一端。

          

        如上图,水果是父元素,荔枝和苹果是两个子元素,子元素继承了父元素的属性,即荔枝和苹果都是水果,如果给水果一个属性,如含糖量,那么属于它的子元素就会继承这一属性,当然,子元素还可以增加新的功能,如口感、大小等。

        四、实现关系(虚线+空心三角)

        实现是类元之间的语义关系,在该关系中的一个类元描述了另一个类元保证实现的契约,比如一个类实现了一个接口是最常见的关系。

          

         就吃饭来说,我们可以用筷子吃,也可以用勺子吃,使用筷子和使用勺子这两种方法就是两个接口。

         最后,UML设计并不是纸上谈兵的工作,它在软件开发中至关重要,就像工程师的图纸一样,因此,我们在使用这四种关系时,一定要使用最准确的关系来描述,能用继承来描述的时候就一定要用泛化关系,当描述是接口和类的实现关系的时候一定要用实现来描述,两个类之间如果有结构关系的时候一定要用关联来描述,除此之外的关系用依赖描述。

         UML继续学习中。。。

        

         

          



评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值