我们平常要使用UML工具画类之间的关系,因此经常会见到依赖、关联、泛化、继承、实现、聚合、组合等概念,那么他们是怎么样的,区别在哪里呢?我在这里整理一下:
依赖是指类A要完成一定的功能,必须要类B的帮助,例如使用到类B的方法,而类A和类B之间并没有比较亲密的联系,只是要利用B而已,他们之间的关系是偶然的,临时性的,比较脆弱,体现在代码形式上:类B只需作为类A的方法参数,或者类A直接使用类B的静态方法,而类B不会形成类A的属性
。
在UML类图关系表示上:
虚线+箭头指向被依赖方,依赖关系好的实践是单向依赖,坏的实践的相互依赖,,千万不要出现双向依赖。
关联是指类A和类B之间存在比较强的关系,与依赖相比,这种关系不是偶然性的,例如人和人的常用住址,就是一种比较强的关系,不是临时的,是长期的,体现在代码层面:类B作为类A的一个属性存在,体现出他们的关系比较紧密。
在UML类图关系上:
实线+箭头指向被关联方,关联关系可以是双向,即A和B相互为对方的一个属性。
至于到底是用依赖还是关联关系,主要是看类之间关系的强弱,这个需要在一定的语境中来确定。
泛化关系其实就是继承关系,包括接口继承和类继承,这个比较好理解。
在UML关系图上表现:
实线+空心三角箭头指向被继承的基类或接口
实现关系也很好理解,类实现了一个接口。
UML关系图如下:
虚线+空心三角箭头指向被实现接口
聚合是关联的一种特例,语义上表示整体和个体
概念,表示has-a关系,整体和个体是可以分离的,整体和个体生命周期是独立的,例如,公司和员工,社团和成员,成员可以属于多个不同的整体,在代码层面上,聚合与关联是一样的,因此只能从语义上来区分。
在UML类图关系如下:
组合也是关联的一种特例,语义上表示主体和部分
概念,表示contains-a关系,整体和部分是不可以分离的,他们的生命周期是关联在一起的,主体灭亡,部分也随着灭亡,代码层面上,组合关系与聚合和关联都是一样的,因此也只能从语义上进行区分。
可见,其实这几个区别还是比较明显的,他们之间的关系基本都体现在语义关系上,代码上的实现可能基本类似,不过有一点,有了语义上的区分,那么在代码层面上尽量体现出语义来,也是一个比较好的做法,例如,代码中最好不要带着hand对象单独到处跑,应该跟着person才是最好的选择。
分享到:
相关推荐
《UML面向对象设计与分析》是清华大学出版社出版的一本专著,由牛丽平编著,主要探讨了面向对象设计的重要工具——统一建模语言(UML)。这本书深入浅出地介绍了UML的各种图表及其在软件开发过程中的应用,为读者...
1. **UML基础**:介绍UML的基本元素,如类、对象、接口、关联、聚合、组合等,以及它们在软件设计中的作用。此外,还会讲解用例图、顺序图、协作图、状态图和活动图等主要图表类型,这些都是UML中用来描绘系统不同...
1. **UML基础知识**:试卷可能会涵盖UML的基本元素,如类(Class)、对象(Object)、接口(Interface)、包(Package)、用例(Use Case)、协作(Collaboration)和状态机(State Machine)等。这些基本概念是理解...
2. **类图与对象图**:类图描述类的结构和关系,包括类的属性、操作以及类之间的关联、继承和组合关系。对象图则是类图的具体实例。 3. **用例图**:用例图展示了用户(Actors)与系统(System)之间的交互,用以...
面向对象设计与分析(Object-Oriented Design and Analysis, OOD&A)是软件工程领域中的重要概念,UML(Unified Modeling Language)则是用于可视化、规格化和构建软件系统的一种标准化建模语言。本教程旨在深入讲解...
《UML面向对象设计与分析教程》是一本广泛应用于高等学校计算机应用领域的规划教材,由薛均晓和石磊两位专家主编。UML(统一建模语言)是软件工程中用于描述面向对象系统的一种标准化建模工具,它为复杂的系统设计...
UML(Unified Modeling Language),即统一建模语言,是一种标准的图形化建模语言,用于软件工程领域,特别是面向对象设计和分析。UML提供了一种可视化的方式来描述系统的需求、结构和行为,使得开发团队能够更清晰...
**UML(统一建模语言)面向对象分析与设计教程** UML,全称为Unified Modeling Language,是一种在软件工程领域广泛使用的标准化建模语言。它为面向对象的系统开发提供了图形化表示方法,用于捕捉、可视化、构造和...
《UML面向对象建模基础》是一门深入探讨面向对象设计和...对于软件开发者、系统分析师以及项目管理人员来说,掌握UML面向对象建模基础是非常重要的,它有助于团队之间的沟通,减少误解,确保软件开发过程的顺利进行。
面向对象设计与分析是软件开发过程中至关重要的一环,UML(Unified Modeling Language)作为这一领域的通用语言,为软件工程师提供了一套标准化的方式来描述系统模型。本教程“UML面向对象设计与分析基础教程”旨在...
**UML(统一建模语言)面向对象分析与设计**是软件工程领域中一个至关重要的概念,它提供了一种标准化的方式来描述和可视化软件系统。UML作为一种图形化语言,可以帮助开发者、分析师和项目团队理解、沟通和构建复杂...
UML(Unified Modeling Language),统一建模语言,是一种标准化的图形建模语言,用于软件开发中的面向对象分析和设计。它为软件工程提供了丰富的图形表示法,帮助开发者清晰地表达软件系统的设计和结构。 **面向...
学习《面向对象分析与设计》(UML 2.0版),读者将掌握如何使用UML进行系统建模,包括识别系统的需求、设计类和对象的结构、描述系统的行为以及规划系统的实现和部署。这本书对于软件工程师、项目经理和系统分析师来说...
UML(Unified Modeling Language),统一建模语言,是面向对象设计和分析的一种标准化表示工具,用于描述、可视化、构建和文档化软件系统。本教程的目标群体包括系统分析员、项目经理、系统设计师和开发人员,旨在...
《UML面向对象建模基础》是一门深入探讨UML(Unified Modeling Language)技术的课程,旨在教授如何使用UML进行面向对象的系统分析与设计。徐锋作为该课程的作者,通过电子教案的形式,为学习者提供了丰富的教学资源...
UML提供了一套图形化的表示法,用于描述系统中的类、对象、关系和交互,帮助开发者理解并表达复杂的系统结构和行为。 一、面向对象建模 面向对象建模的核心在于创建模型来代表现实世界的系统。模型通过提取关键...
《UML面向对象分析与设计-设计性实验报告》 本设计报告主要围绕UML(统一建模语言)面向对象的分析与设计方法,应用于一个大学生论文选题系统的开发。UML是一种图形化的建模工具,它能清晰地表达软件系统的需求、...