UML各个关系的对应代码

本文详细介绍了UML中的五种基本关系:依赖、泛化、关联、聚合与组合及实现,并通过具体的代码示例来帮助理解这些关系在实际编程中的应用。

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

UML的几种关系介绍请移步《UML中的关系》

      要真正画好UML图,透彻的理解各个关系的具体含义,需要明白各个关系对应的代码实现。

一、依赖
      依赖是类的五种关系中耦合最小的一种关系。





依赖关系可以描述为:Uses a
在生成代码的时候,这两个关系类都不会增加属性。

  1. Public class FilmClip{  
  2.      public FilmClip() {}  
  3. }  

  1. Public class Channel{  
  2.      public Channel(){}  
  3. }  
依赖关系的表现形式 1 Channel 类是全局的,则 FilmClip 类可以调用它

       例如:VB中的公共模块,任何使用这个模块的类都叫做依赖于这个模块

表现形式2Channel类是FilmClip类的某个方法中的变量FilmClip类可以调用它。

表现形式3Channel类是作为FilmClip类中某个方法的参数或者返回值

如:

  1. Public FilmClip{  
  2.     Public Channel Grownup(Channel channel) {  
  3.                return null;  
  4.        }  
  5. }  
二、泛化
      泛化关系可以描述为:Is a ,子类将继承父类的所有属性和方法










对应代码:

  1. class Shape{}  
  2.   
  3. public class Circle : Shape{}  
  4.   
  5. public class Polygon : Shape{}  

三、关联

(1)双向关联







(2)单向关联







C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。没有生命期的依赖。一般是表示为一种引用。

(3)自身关联










代码对应:

1、单向关联代码:













  1. Public class Water {  
  2.      public Climate m_Climate;  
  3.      public Water(){}  
  4. }  


  1. Public class Climate {  
  2.      public Climate() {}  
  3. }  

可见生成的代码中,Water类的属性中增加了Climate类。

2、双相关联代码示例:


  1. Public class Water {  
  2.      public Climate m_Climate;  
  3.      public Water(){}  
  4. }  

  1. Public class Climate {  
  2.    public Water m_Water;  
  3.      public Climate() {}  
  4. }  

可见生成的代码中,两个类的属性都添加了!
3、聚合












聚合:表示雁群类是由大雁类聚合而成。 雁群类聚合大雁类,但是大雁可以离开雁群而独立存在

  1. Public class GooseGroup {  
  2.     public Goose goose;  
  3.     Public GooseGroup(Goose goose) {  
  4.                this.goose = goose;  
  5.        }  
  6. }  
4、组合












  1. Public class Goose {  
  2.    public Wings wings;  
  3.    public Goose() {  
  4.        wings = new Wings();  
  5.     }  
  6. }  

聚合组合的区别:
1)构造函数不同:
聚合类的构造函数中包含了另一个类作为参数。
雁群类(GooseGroup)的构 造函数中要用到大雁(Goose)作为参数传递进来。大雁类(Goose)可以脱离雁群类而独立存在。
组合类的构造函数中包含了另一个类的实例化。
表明大雁类在实例化之前,一定要先实例化翅膀类(Wings),这两个类紧密的耦合在一起,同生共灭。翅膀类(Wings)是不可以脱离大雁类(Goose)而独立存在。
2)信息的封装性不同
在聚合关系中,客户端可以同时了解雁群类和大雁类,因为他们都是独立的。
在组合关系中,客户端只认识大雁类,根本就不知道翅膀类的存在,因为翅膀 类被严密的封装在大雁类中。


四、实现







实现指的是一个class类实现interface接口(可以是多个)的功能。

实现是类与接口之间最常见的关系之一。

  1. interface interfaceA{}  
  2.   
  3. class classA :interfaceA{} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值