UML六种关系在代码中的体现你真的清楚吗?

前言

小编采用代码与图(IDE逆向工程生成)对应的方式进行输出此篇内容。

众所周知,uml六种关系强弱表示:继承>实现>组合>聚合>关联>依赖,下文就以从强到弱的关系一一进行介绍。

继承

public class Jeep extends Car {
}

在这里插入图片描述

实现

public class Car implements Fly {
}

在这里插入图片描述

组合

小编使用的IDE工具是IDEA,在IDEA逆向工程生成的图中,组合,聚合,关联三种关系用的同一种方式展现。

public class Car{
	private Framework framework;
	public Car() {
        this.framework = new Framework(null);
    }
}

在这里插入图片描述
上面类Car与类Framework的关系如图所示,一条依赖关系<<create>>,一条关联关系(在idea生成的图中关联,聚合,组合关系用同一种方式表示。)在这里,最弱的关系是关联,所以,二者间至少是关联关系。其中,菱形指向的一方代表整体,而箭头指向的一方代表局部,1代表在1个Car类中有1个Framework类实例。

其中,把代码中Car构造方法去掉,就会发现类间关系变成了只有一个关联关系(上图中Car与Framework右侧的线),可得,在构造方法中创建Framework类的实例代表的是 依赖关系<<create>>这条线。

而为什么小编得出上面的代码就是组合关系呢??别急,我们和聚合关系对比来看。

聚合

public class Car{
	private Framework framework;
	public Car(Framework framework) {
        this.framework = framework;
    }
}

在这里插入图片描述

我们可以看到通过代码逆向工程生成的图中,类Car与类Framework间关系是:一条依赖关系,一条关联关系,和组合中的做法相同,我们把Car构造方法代码去掉,会发现只剩下关联关系,所以,Car构造方法中代表的是两个类间的 依赖关系。

这种写法和组合中的代码有什么不同呢?一个是在构造方法中实例化另一个类,一个是通过参数将另一个类的实例传进来。我们思考一下组合和聚合的区别就能轻易得出,这两个情况分别代表的关系。

由此得出,依赖关系上带有 <<create>>标志的关系相对于不带有 <<create>>标志的耦合更强一些,也就是关系更强。由此,得出结论:在Idea逆向工程生成的图中,依赖关系 <<create>>标志+关联,可以理解为组合关系,而普通依赖关系+关联,可以理解为聚合关系。当然,组合和聚合关系的前提是关联关系。(代码体现也就是Car类内部,方法外部声明的 Framework 类变量)

关联

public class Car{
	private Framework framework;
}

在这里插入图片描述

了解了组合和聚合关系后,我们对关联关系自然也明白了,因为关联关系是聚合和组合的基础。在类A内部,方法外部声明的类B的变量,这两类间的关系就可以说成是关联关系。因为类B变量的生命周期与类A是相同的,比依赖关系要强,所以,是关系关系。但确定了关联关系后再寻找更强的关系,还需要进一步观察代码。

依赖

依赖关系在代码中有三种体现:

  • 参数
  • 返回值
  • 方法内变量
// 类Car与类Framework
public class Car{
	//case 1:参数
	public Car(Framework framework) {
	......
	}
	
	//case 2:返回值
	public Framework run() {
		return null;
	}
	
	//case 3:方法内变量

    public void run() {
        Framework framework;
    }
}

在这里插入图片描述

这三种情况下类间关系是依赖,因为Framework类在Car类的生命周期中占了局部,对于类来说,方法是局部的,类本身是全局的,所以局部的关系一定比全局弱,所以在方法内部声明的类变量,类间关系是依赖。简单一句话总结:区分依赖与关联关系就要看一个类在另一个类中生命周期的长短。

总结

以上对于UML的六种关系,都是经过小编根据代码与图对应实践后得出的结论,如有不同观点,欢迎交流。

  • 27
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 34
    评论
第1章课程定位与教学案例综述. 1.1职业岗位能力需求分析 1.2课程设置和课程定位分析 1.3WebShop电子商城介绍 1.3.1电子商城需求分析 1.3.2电子商城系统设计 1.3.3电子商城数据库设计 1.4LibraryMIS图书管理系统介绍 1.4.1图书管理系统需求分析 1.4.2图书管理系统系统设计 1.4.3图书管理系统数据库设计 习题 第2章面向对象技术和建模基础 2.1面向对象方法 2.1.1面向对象方法的基本思想 2.1.2面向对象方法的发展 2.2面向对象的基本概念与特征 2.2.1面向对象的基本概念 2.2.2面向对象的主要特征 2.3面向对象分析 .2.3.1处理复杂问题的原则 2.3.200A方法的基本步骤 2.4面向对象设计 2.5面向对象实现 2.6面向对象方法的内涵 2.7软件建模概述 2.7.1软件建模的概念 2.7.2软件建模的用途 2.7.3软件建模的优点 习题 第3章UML简介 3.1UML的发展 3.1.1UML的发展历程 3.1.2理解UML建模 3.2UML的特点 3.3UML的结构 3.3.1UML的事物 3.3.2UML关系 3.4UML的视图 3.4.1用例视图 3.4.2逻辑视图 3.4.3并发视图 3.4.4组件视图 3.4.5部署视图 3.5UML图形符号 3.5.1用例图 3.5.2类图 3.5.3对象图 3.5.4状态图 3.5.5活动图 3.5.6顺序图 3.5.7协作图 3.5.8组件图 3.5.9部署图 3.5.10UML 2.0新特性 3.6UML建模基本流程 习题 第4章UML建模工具简介 4.1常用UML建模工具 4.1.1 Rational Rose 4.1.2Enterprise Architect 4.1.3Together 4.1.4PowerDesigner 4.1.5 Visi0 4.1.6Tnffun Plat0 4.2Rational Rose安装与配置 4.2.1Rational Rose的运行环境 4.2.2Rational Rose的安装 4.2.3Rational Rose的配置 4.3使用Rational Rose建模 4.3.1Rational Rose主菜单 4.3.2Rational Rose的视图 4.3.3 Rational Rose建模的基本过程 习题 第5章需求建模 5.1用例模型概述 5.2用例图组成 5.2.1参与者 5.2.2系统 5.2.3用例 5.3识别和描述用例.. 5.3.1识别用例 5.3.2绘制WebShop电子商城用例图 5.3.3通过包对用例进行合理规划 5.3.4WebShop电子商城用例图(不含关系) 5.3.5用例描述 5.4用例间的关系 5.4.1泛化关系 5.4.2使用关系 5.4.3包含关系 5.4.4扩展关系 5.4.5关系小结 5.4.6WebShop电子商城用例图(含关系) 习题 第6章静态建模 6.1静态建模概述 6.2类图概述 6.3类图的基本组成 6.3.1类的概述 6.3.2绘制带属性的实体类 6.3.3绘制带操作的实体类 6.3.4绘制边界类图 6.3.5绘制控制类图 6.3.6UML的类与语言的类 6.4类之间的关系 6.4.1关联关系 6.4.2聚合关系 6.4.3组合关系 6.4.4泛化关系 6.4.5实现关系 6.4.6依赖关系 6.5对象图 6.5.1对象图概述 6.5.2对象图组成 6.5.3类图和对象图的比较 习题 第7章数据库建模 7.1PowerDesigner简介 7.2PowerDesigner安装和启动 7.2.1PowerDesigner的安装 7.2.2PowerDesigner的启动 7.3PowerDesigner概念数据模型 7.3.1概念数据模型概述 7.3.2PowerDesigner概念数据模型概述 7.4 PowerDesigner物理数据模型 习题 第8章动态建模 8.1动态建模概述 8.2状态图 8.2.1状态图概述 8.2.2状态图组成 8.2.3绘制员工下班回家状态图 8.3活动图 8.3.1活动图概述 8.3.2活动图组成 8.3.3绘制WebShop电子商城活动图 8.4活动图拾遗 8.4.1活动图与流程图的比较 8.4.2活动图与状态图的比较 8.5顺序图 8.5.1顺序图概述 8.5.2顺序图组成 8.5.3绘制WebShop电子商城顺序图 8.6协作图 8.6.1协作图概述 8.6.2协作图组成 8.6.3绘制WebShop电子商城协作图 8.7 顺序图拾遗 8.7.1 顺序图与协作图的比较 8.7.2 顺序图与协作图的互换 习题 第9章物理建模 9.1物理建模概述 9.1.1硬件 9.1.2软件 9.2组件图 9.2.1组件图概述 9.2.2组件图组成 9.2.3绘制WebShop电子商城组件图 9.3部署图 9.3.1部署图概述 9.3.2部署图组成 9.3.3绘制WebShop电子商城部署图 习题 第10章双向工程 10.1双向工程简介 10.2正向工程(生成Java代码) 10.3逆向工程 习题 第11章统一软件过程RUP 11.1RUP简介 11.2RUPT作流程 11.2.1业务建模 11.2.2需求 11.2.3分析设计 11.2.4实施 11.2.5测试 11.2.6部署 11.2.7配置与变更管理 11.2.8项目管理 11.2.9环境 11.3RUP迭代过程 11.3.1初始 11.3.2细化 11.3.3构造 11.3.4移交 11.3.5迭代计划示例(构造阶段) 习题 附录A综合实训 附录B Rational Rose2003主菜单 参考文献...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值