- 首先类之间的关系从宏观上可以分为:关联、依赖、继承,而其中关联又有两种特例:聚合和组合,不过在UML2.X中聚合和组合合成一种关系了。
- 从使用的频率来看,关联(包括聚合和组合)关系是使用最为广泛的;其次是依赖和继承
- 关联和依赖的区别:
- 从类之间关系的强弱程度来分,关联表示类之间的很强的关系;依赖表示类之间的较弱的关系;
- 从类之间关系的时间角度来分,关联表示类之间的“持久”关系,这种关系一般表示一种重要的业务之间的关系,需要保存的,或者说需要“持久化”的,或者说需要保存到数据库中的。比如学生管理系统中的Student类和Class(班级)类,一个Student对象属于哪个Class是一个重要的业务关系,如果这种关系不保存,系统就无法管理。另外,依赖表示类之间的是一种“临时、短暂”关系,这种关系是不需要保存的,比如Student类和StuEditScreen(学生登录界面)类之间就是一种依赖关系,StuEditScreen类依赖Student类,依赖Student对象的信息来显示编辑学生信息。
- 设计类之间的关系是遵循的原则:首先判断类之间是否是一种“关联”关系,若不是再判断是否是“依赖关系”,一般情况下若不是关联,就是依赖关系
- 依赖一般情况下是以下几种情况之一:a、ClassA中某个方法的参数类型是ClassB;这种情况成为耦合;b、ClassA中某个方法的参数类型是ClassB的一个属性;这种情况成为紧耦合;c、ClassA中某个方法的实现实例化ClassB;d、ClassA中某个方法的返回值的类型是ClassB;如果出现了上述四种情况之一,两个类很有可能就是“依赖”关系。
-
依赖关系(Dependency):是类与类之间的连接,依赖总是单向的。依赖关系代表一个类依赖于另一个类的定义。下面的例子中class A 依赖与class B、C、D。
java 代码
- public class A{
- public B getB(C c, D d){
- E e = new E();
- B b = new B(c, d, e);
- }
- }
- 关联是一种结构关系,说明一个事物的对象与另一个事物的对象相联系。给定一个连接两各类的关联,可以从一个类的对象导航到另一个类的对象。
关联可以有方向,即导航。一般不作说明的时候,导航是双向的,不需要在线上标出箭头。大部分情况下导航是单向的,可以加一个箭头表示。关联在代码中一般表示为属性(成员变量),例如下面例子中 class A与B关联
java 代码
- public class A{
- private B b;
- }
如果B也关联到A,那么它们就是双向的关联。
java 代码
- public class B{
- private A a;
- }
- 聚合关系(Aggregation):是关联关系的一种,是强的关联关系。聚合是整体与个体之间的关系。如汽车类与引挚类,轮胎类之间的关系就是整体与个体的关系。
与关联关系一样,聚合关系也是通过实例变量来实现的。
***关联关系所涉及的两个类是处于同一层次上的,而在聚合关系中,两个类处在不平等的层次上的,一个代表整体,一个代表部分。(关联与聚合仅仅从语法上是区分不开的,需要察所涉及的类之间的逻辑关系。)
- 组成关系(Composition):是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表的对象负责代表部分的对象的生命周期,合成关系是不能共享的。
代表整体的对象需要负责保持对象的存活,在一些情况下负责将代表部分的对象湮灭掉。代表整体的对象可以将代表部分的对象传递给另一个对象,由后者负责此对象的生命周期。换言之,
*******代表部分的对象在每一个时刻只能与一个对象发生合成关系,由后者排它的负责其生命周期。
以上是自己的简单总结。下一篇总结下关联中的单向关联、双向关联区别,以及关联与聚合、组合的区别。
分享到:
相关推荐
### 类与类之间的关系 #### 1. 继承关系 **定义**:继承是指一个类(称为子类或子接口)继承另一个类(称为父类或父接口)的功能,并可以在此基础上添加新的功能。在Java中,继承关系通过关键字`extends`明确表示...
### Java中类与类之间的关系 #### 泛化(Generalization) 在面向对象编程中,泛化是指一种类从另一种类获取属性和行为的方式。在Java语言中,泛化主要通过继承来实现。继承允许一个类(子类或派生类)继承另一个类...
关联是最常见的类间关系之一,它表示两个或多个类之间的结构连接。这种关系可以是单向的、双向的,甚至是自关联。例如,在一个图书馆管理系统中,书籍与作者之间就存在一种关联关系,每本书都对应着一个或多个作者,...
在这个"uml 实验类的关系"中,我们将深入探讨类之间的三种主要关系:关联、泛化和依赖。 1. **关联关系**:关联是描述类之间的一种结构关系,它表示一个类的对象与另一个类的对象之间存在某种联系。在图书管理系统...
### Cocoa框架类之间的继承关系详解 #### 一、概述 Cocoa框架是苹果为开发者提供的一个强大且完整的软件开发框架,主要用于Mac OS X和iOS应用的开发。它由多个子框架构成,其中最为基础和核心的是Foundation框架和...
### io包中常用类的作用、重要方法及类之间的继承关系 #### 一、概述 Java的`io`包提供了大量的类来处理输入/输出操作,包括文件读写、网络通信等场景。这些类的设计遵循了良好的面向对象设计原则,通过抽象类和...
#### 三、类之间的继承关系 1. **`CObject`类**:作为MFC中最基础的类,它提供了序列化、RTTI等功能。所有MFC类都直接或间接地从`CObject`继承。 2. **文档/视图体系结构**: - `CView`和`CDocument`都是直接从`...
根据给定文件的信息,我们可以提炼出关于Java软件开发中类之间的关系的重要知识点,特别是针对第7章中的“类之间的关系”部分。这部分内容是面向对象编程(OOP)的基础之一,对于理解并构建复杂的软件系统至关重要。 ...
文档类、子框架类及视图类之间的关系是MFC应用程序的核心组成部分。文档类负责保存数据,子框架类负责管理用户界面,视图类负责显示和编辑数据。它们之间的关系可以用以下图表表示: 文档类子框架类视图类 文档类...
接下来,我们将深入探讨`Date`和`Time`类之间的关系以及如何在实际代码中实现这一概念。 首先,`Date`类通常用来表示日期,可能包括年、月、日等信息,而`Time`类则用来表示时间,如小时、分钟和秒。当`Time`类的...
这种结构不仅能够提高代码的组织性,还能帮助我们更好地处理类与类之间的关系。根据描述,本文将对Java内部类进行深入总结,包括内部类的不同类型、特点及其应用场景。 #### 一、内部类的基本概念 内部类分为四类...
Hibernate关联关系是Java持久化框架Hibernate中的核心概念,它允许我们在数据库中建立对象之间的关系映射,以便在程序中操作对象时,可以自动处理与数据库的交互。本篇将深入探讨Hibernate的四种主要关联关系:一对...
C#是一种面向对象的编程语言,其核心概念之一就是类与对象之间的关系。类是对象的模板或蓝图,它定义了创建对象的属性和方法。对象则是类的具体实例,是实际存在的实体。 在C#中,创建类意味着定义了一组属性和方法...
在UML类图中,类与类之间的关系对于理解系统的结构至关重要。本文将详细介绍UML类图中的六种基本关系:依赖、类属、关联、实现、聚合和组合。 #### 二、依赖(Dependency) **定义**: - 当元素A的变化会影响元素B...
在面向对象编程中,类与类之间的关系对于构建清晰、高效且可维护的软件系统至关重要。这些关系不仅体现在代码的结构中,也是设计模式和架构原则的基础。通过UML(统一建模语言)图,我们能够直观地理解和展示这些...
MFC框架结构复杂而有序,其中包含了各种类,这些类之间存在明确的继承关系,形成了一个强大的层次体系。 首先,MFC的核心类是CWinApp,它是所有MFC应用程序的基础。CWinApp类负责初始化应用程序,管理应用程序的...
类之间的关系是UML中核心的概念,它们反映了类之间的相互作用和依赖。本文将详细探讨四种主要的UML类关系——依赖、泛化、关联和实现,并通过Java代码示例来阐述这些关系的实现。 1. **依赖(Dependency)**:依赖...