这是本人系统学习设计模式之前的一篇记录类之间的关系的文章。
首先感谢老师透彻的讲解,在这里我只做一些复习工作:
一、关联关系
关联关系在英文中用万能动词have可以形象的说明。
据我们对英文的了解,用到have的时候大致可以分为两种:
1)I have blue eyes. 2)I have a girlfriend.
对于第一种,我和蓝眼睛是整体和部分的关系;第二种则不是。而且,第二句话通常情况下还可以说成某某girl has a boyfriend. 他们之间存在一对一、一对多以及多对多的关系。
关联关系在代码上的实现,基本上是通过将一个类的对象写成另一个类的成员变量。以下代码表示A has B.
class ClassB {
... ...
}
class ClassA {
private ClassB b;
... ...
}
对于具备整体和部分关系的关联关系可以进一步细分为聚合关系和组合关系。
它们的共同点在于整体和部分遵守一对一或一对多的关系,都不会出现多对多关系。
区别很简单,假想聚合的聚字就是朋友间聚会的聚字,那么一句话就搞定——天下没有不散的宴席。
聚合关系的几个对象都是可以单独存在的,如汽车和轮胎、电脑和显示器。
组合关系顾名思义只有组合在一起才是个东东,这些东西一旦拆开后重用性不是很大,比如一个人和他的蓝眼睛。
在实现上两种关系更容易区别:
聚合关系的成员变量通过外部实例化好后以参数传入赋值,叫做注入。通常有两种注入:构造注入和Set注入。
class ClassB {
... ...
}
class ClassA {
private ClassB b;
... ...
/* 构造注入; */
public ClassA(ClassB b) {
this.b=b;
}
/* Set注入; */
public setB(ClassB b) {
this.b=b;
}
... ...
}
组合关系的成员变量则通过在方法体内部实例化对象。
class ClassB {
... ...
}
class ClassA {
private ClassB b;
... ...
public void method() {
... ...
b=new ClassB();
... ...
}
... ...
}
二、依赖关系
依赖关系与关联关系是不同的,用 A depend on B 记忆较为贴切。
依赖关系理解上没有障碍,在代码实现上以下有三种:
class ClassB {
public void method1(){
... ...
}
public static void method2(){
... ...
}
}
1)类A的方法需传入类B的对象;
class ClassA {
public void method(ClassB b) {
... ...
b.method1();
... ...
}
}
2)类A的方法实现时调用类B的静态方法;
class ClassA {
public void method() {
... ...
ClassB.method2();
... ...
}
}
3)类A的方法体中有类B类型的局部变量。
class ClassA {
public void method() {
... ...
ClassB b=new ClassB();
... ...
}
}
三、泛化关系
泛化关系实际上就是通常讲的那些继承啦、实现啦……
分享到:
相关推荐
继承是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. 依赖...
类与类之间关系(继承、实现、依赖、关联、聚合、组合)