这是本人系统学习设计模式之前的一篇记录类之间的关系的文章。
首先感谢老师透彻的讲解,在这里我只做一些复习工作:
一、关联关系
关联关系在英文中用万能动词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();
... ...
}
}
三、泛化关系
泛化关系实际上就是通常讲的那些继承啦、实现啦……
分享到:
相关推荐
7.1 建立类和对象的模型 7.2 寻找系统中的类 7.3 确定类或对象之间关系 7.4 设计类的属性 7.5 设计类的职责 7.6 小结
C++ MSDN的类总图,显示了所有类 之间的关系 非常有用!~~
java类的阐述,简单的讲述类与类之间的关系。
C++类之间的关系2课程实验及报告
C++类之间的关系1课程实验及报告
JAVA类之间的关系思维导图,便捷整理思路,泛化、实现、依赖、关联、组合、聚合……
在Java中,了解类与类之间的关系。帮助初学者去理解
类之间的关系演示,比较简洁明了,很不错的资料!
阐述类之间的关系,类之间有六种关系,一一介绍
类间关系有很多种,在大的类别上可以分为两种:纵向关系、横向关系。 纵向关系就是继承关系,它的概念非常明确,也成为OO的三个重要特征之一,这里不过多的讨论。
类与类之间关系(继承、实现、依赖、关联、聚合、组合)
类之间关系,泛化、实现、关联、聚合、依赖五大关系
java面相对相类与类之间的关系,理论详细
基于UML类图的类之间依赖关系图论问题研究.pdf
能够很好的了解java中类与类之间的关系,如依赖,泛化,关联,聚合。以及它们之间的关系和区别。
桂林电子科技大学老师为了让我们搞懂C#类与类之间的调用,给我们的经典例子,里面用完整的源码,今天拿出来给大家分享。
io包中常用类的作用、重要方法及类之间的继承关系。
Cocoa框架类之间的继承关系,对初学苹果系统MACOS开发,了解COCOA函数框架很有用