从宏观上类之间的关系有3种
一、关联,分为聚合和组合(has_a)
1)聚合:弱关联 指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例
如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。
2)组合:强关联 也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。
聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合
关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就
删除了代表部分事物的对象。
我们用浅显的例子来说明聚合和组合的区别。“国破家亡”,国灭了,家自然也没有了,“国”和“家”显然也是组
合关系。而相反的,计算机和它的外设之间就是聚合关系,因为它们之间的关系相对松散,计算机没了,外设还可以独立存在,还可以接在别的计算机上。在聚合关
系中,部分可以独立于聚合而存在,部分的所有权也可以由几个聚合来共享,比如打印机就可以在办公室内被广大同事共用
关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的,例如一个公司包含了很多员工,其实现上是差不
多的。聚合和组合的区别则在语义和实现上都有差别,组合的两个对象之间其生命期有很大的关联,被组合的对象是在组合对象创建的同时或者创建之后创建,在组
合对象销毁之前销毁。一般来说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象,例如一个文档的版本,必须依赖于文档的存在,也只能属于
一个文档。聚合则不一样,被聚合的对象可以属于多个聚合对象,例如一个员工可能可以属于多个公司。
我想举个通俗的例子。
你和你的心脏之间是composition关系(心脏只属于你自己)
你和你买的书之间是aggregation关系(书可能是别人的)
你和你的朋友之间是association关系
二、依赖 依赖和关联之间很难界限的。
1)类A中一个方法的返回值是类B类型
2)类A中一个方法的参数的类型是类B ,此时也称为耦合
3)类A中一个方法实例化了类B
三、继承 (is_a)
分享到:
相关推荐
继承是C++类之间关系的基础,允许一个类(子类或派生类)从另一个类(基类或父类)继承属性和行为。通过继承,子类可以重用基类的功能,并根据需要添加新的特性和方法。继承有助于代码复用,提高程序的可维护性和...
7.3 确定类或对象之间的关系,如继承、关联、聚合和组合,有助于建立对象间的结构和交互。这些关系帮助我们理解类如何协同工作以完成系统功能,同时提高代码的重用性和可维护性。 7.4 设计类的属性涉及定义每个类的...
### 类与类之间的关系 #### 1. 继承关系 **定义**:继承是指一个类(称为子类或子接口)继承另一个类(称为父类或父接口)的功能,并可以在此基础上添加新的功能。在Java中,继承关系通过关键字`extends`明确表示...
C++ MSDN的类总图,显示了所有类 之间的关系 非常有用!~~
### Java中类与类之间的关系 #### 泛化(Generalization) 在面向对象编程中,泛化是指一种类从另一种类获取属性和行为的方式。在Java语言中,泛化主要通过继承来实现。继承允许一个类(子类或派生类)继承另一个类...
类之间的关系是理解复杂系统设计的关键,这通常涉及到继承、多态性和关联等概念。在这个“C++类之间的关系1”课程实验及报告中,我们将深入探讨这些核心主题。 **1. 继承(Inheritance)** 继承允许一个类(子类或...
- **关联**:表示类之间的结构关系,比如“学生”类和“课程”类之间的关联。 - **聚合**:一种强关联,表示整体与部分的关系,如“汽车”类包含“轮胎”类。 - **组合**:比聚合更强的关系,部分和整体有生命...
这张图表提供了对Qt5.1中类之间关系的直观理解,这对于深入学习和开发基于Qt的应用程序至关重要。 在Qt5.1中,类的关系主要分为以下几种类型: 1. **继承关系**:这是最基础的关系,一个类可以继承自另一个类,...
JAVA类之间的关系思维导图,便捷整理思路,泛化、实现、依赖、关联、组合、聚合……
### 基于UML类图的类之间依赖关系图论问题研究 #### 摘要及背景介绍 本文探讨了UML(统一建模语言)类图中的类间依赖关系,并通过图论的方法对其进行深入分析。随着面向对象编程方法在软件开发领域的广泛应用,UML...
在Java编程语言中,类与类之间的关系是构建复杂系统结构的基础,这些关系不仅限于继承和封装,还包括了关联、依赖、聚合和组合等多种形式。以下是对这些关系的深入探讨: ### 1. 关联关系(Association) 关联关系...
4. **类之间的关系**:类之间常见的关系有继承、多态和组合。**继承**(Inheritance)允许一个类(子类)从另一个类(父类)继承属性和方法。这有助于代码重用和创建层次结构。例如: ```csharp class Student : ...
Java 中类与类之间的关系 Java 中类与类之间的关系是理解面向对象编程的关键概念。这些关系包括泛化、依赖、关联和聚合等。了解这些关系对于设计和实现软件系统非常重要。 一、泛化关系 泛化关系是类与类之间的...
类之间的关系演示,比较简洁明了,很不错的资料!
关联是最常见的类间关系之一,它表示两个或多个类之间的结构连接。这种关系可以是单向的、双向的,甚至是自关联。例如,在一个图书馆管理系统中,书籍与作者之间就存在一种关联关系,每本书都对应着一个或多个作者,...
"Qt5类继承关系图"是一个重要的参考资料,它直观地展示了Qt5库中各个类之间的关系,有助于开发者理解和使用Qt5的各种组件。 这个PDF文档很可能包含了Qt5的主要模块,如Qt Widgets、Qt GUI、Qt Network、Qt Database...
Java 类与类之间的关系是面向对象编程的核心概念之一,它帮助我们组织代码,实现代码的重用和模块化。在 Java 中,类与类的关系主要包括依赖(uses-a)、聚合(has-a)和继承(is-a)这三种主要类型。 1. 依赖...
类与类之间关系(继承、实现、依赖、关联、聚合、组合)