`

Java中类与类的关系

阅读更多
1、泛化(继承)Generalization        

2、依赖   Dependency         

3、关联   Assocation 你和你的朋友 (关系平等)

     3.1、聚合   Aggregation 你和你买的书 (可以分离而存在)

     3.2、组合   Composition 你和你的心脏 (不可以单独存在)



耦合度高低:  组合 > 聚合 > 关联

 

首先类之间的关系从宏观上可以分为:关联、依赖、继承,而其中关联又有两种特例:聚合和组合,不过在UML2.X中聚合和组合合成一种关系了。
从使用的频率来看,关联(包括聚合和组合)关系是使用最为广泛的;其次是依赖和继承
关联和依赖的区别:
   1. 从类之间关系的强弱程度来分,关联表示类之间的很强的关系;依赖表示类之间的较弱的关系;
   2. 从类之间关系的时间角度来分,关联表示类之间的“持久”关系,这种关系一般表示一种重要的业务之间的关系,需要保存的,或者说需要“持久化”的,或者说需要保存到数据库中的。比如学生管理系统中的Student类和Class(班级)类,一个Student对象属于哪个Class是一个重要的业务关系,如果这种关系不保存,系统就无法管理。另外,依赖表示类之间的是一种“临时、短暂”关系,这种关系是不需要保存的,比如Student类和 StuEditScreen(学生登录界面)类之间就是一种依赖关系,StuEditScreen类依赖Student类,依赖Student对象的信息来显示编辑学生信息。
   3. 设计类之间的关系是遵循的原则:首先判断类之间是否是一种“关联”关系,若不是再判断是否是“依赖关系”,一般情况下若不是关联,就是依赖关系
   4. 依赖一般情况下是以下几种情况之一:a、 ClassA中某个方法的参数类型是ClassB;这种情况成为耦合;b、ClassA中某个方法的参数类型是ClassB的一个属性;这种情况成为紧耦合;c、ClassA中某个方法的实现实例化ClassB;d、ClassA中某个方法的返回值的类型是ClassB;如果出现了上述四种情况之一,两个类很有可能就是“依赖”关系。
   5. 依赖关系(Dependency):是类与类之间的连接,依赖总是单向的。依赖关系代表一个类依赖于另一个类的定义。下面的例子中class A 依赖与class B、C、D。
      java 代码
         1.    public class A{ 
         2.      public B getB(C c, D d){ 
         3.        E e = new E(); 
         4.        B b = new B(c, d, e); 
         5.     } 
         6.    }

   6. 关联是一种结构关系,说明一个事物的对象与另一个事物的对象相联系。给定一个连接两各类的关联,可以从一个类的对象导航到另一个类的对象。
      关联可以有方向,即导航。一般不作说明的时候,导航是双向的,不需要在线上标出箭头。大部分情况下导航是单向的,可以加一个箭头表示。关联在代码中一般表示为属性(成员变量),例如下面例子中 class A与B关联
      java 代码
     
         1. public class A{ 
         2.     private B b; 
         3. } 
      如果B也关联到A,那么它们就是双向的关联。
      java 代码
         1. public class B{ 
         2.     private A a; 
         3. }
   7. 聚合关系(Aggregation):是关联关系的一种,是强的关联关系。聚合是整体与个体之间的关系。如汽车类与引挚类,轮胎类之间的关系就是整体与个体的关系。

      与关联关系一样,聚合关系也是通过实例变量来实现的。

      ***关联关系所涉及的两个类是处于同一层次上的,而在聚合关系中,两个类处在不平等的层次上的,一个代表整体,一个代表部分。(关联与聚合仅仅从语法上是区分不开的,需要察所涉及的类之间的逻辑关系。)
   8. 组成关系(Composition):是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表的对象负责代表部分的对象的生命周期,合成关系是不能共享的。

      代表整体的对象需要负责保持对象的存活,在一些情况下负责将代表部分的对象湮灭掉。代表整体的对象可以将代表部分的对象传递给另一个对象,由后者负责此对象的生命周期。换言之,

      *******代表部分的对象在每一个时刻只能与一个对象发生合成关系,由后者排它的负责其生命周期。
分享到:
评论

相关推荐

    java中类与类之间的关系

    Java 中类与类之间的关系 Java 中类与类之间的关系是理解面向对象编程的关键概念。这些关系包括泛化、依赖、关联和聚合等。了解这些关系对于设计和实现软件系统非常重要。 一、泛化关系 泛化关系是类与类之间的...

    Java中类与类之间的关系

    ### Java中类与类之间的关系 #### 泛化(Generalization) 在面向对象编程中,泛化是指一种类从另一种类获取属性和行为的方式。在Java语言中,泛化主要通过继承来实现。继承允许一个类(子类或派生类)继承另一个类...

    Java类与类的关系

    Java类与类的关系,对java开发有很大帮助

    java基础第七章内部类与异常类.doc

    Java 基础第七章内部类与异常类 Java 语言支持在一个类中定义另一个类,这样的类称做内部类。内部类和外嵌类之间存在着紧密的关系:内部类可以访问外嵌类的成员变量和方法,而外嵌类也可以使用内部类声明的对象作为...

    JAVA类与对象及数组习题

    JAVA类与对象及数组习题 JAVA类和对象及数组是JAVA编程语言的基础概念。下面是关于JAVA类和对象及数组的习题,涵盖了构造方法、继承、多重继承、变量声明、数组初始化等方面的知识点。 1. 构造方法的调用方式: ...

    Java中类的组合概念

    在Java中,类的组合是一种重要的概念,它允许我们构建更复杂、更丰富的对象模型,能够反映现实世界中的复杂关系。通过类的组合,可以将基本类型、基本类型的类、以及自定义的类通过创建新的类进行组合,实现功能和...

    java类与类之间的关系

    在Java编程语言中,类与类之间的关系是构建复杂系统结构的基础,这些关系不仅限于继承和封装,还包括了关联、依赖、聚合和组合等多种形式。以下是对这些关系的深入探讨: ### 1. 关联关系(Association) 关联关系...

    MySQL表自动生成Java实体类

    Java实体类(Entity Class)作为数据模型的表示,与数据库中的表进行映射,使得开发者能够更方便地操作数据库。本主题主要讲解如何利用工具或自定义脚本将MySQL数据表自动生成对应的Java实体类,提高开发效率。 ...

    mysql数据库生成java实体类

    这个小工具的目的是将MySQL数据库中的表结构转换为对应的Java类,这样开发者就不需要手动创建这些表示数据库记录的类。下面将详细解释这个过程涉及的知识点。 1. **MySQL数据库**: MySQL是一种流行的开源关系型...

    java等级分类例子

    在Java编程语言中,"等级分类"通常...这些文件可能包含不同层次的类定义,展示了如何通过继承和多态性来构建一个复杂的Java类体系。通过研究这些示例,你可以更好地理解如何在实际项目中有效地使用Java的等级分类功能。

    学生类和老师(java)

    在Java编程语言中,面向对象编程是核心特性之一,它允许我们通过类来定义对象的结构和行为。在这个"学生类和老师类"的项目中,我们将深入探讨如何使用Java来创建这两个特定的类,以及它们如何交互和共享数据。 首先...

    JAVA_API1.6文档(中文)

    javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据类型之间的可序列化映射关系。 javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类和接口。 javax.swing 提供...

    Java IO类继承关系

    JavaIO类InputStream/OutputStream继承关系图,使您对IO类一目了然

    MySql转Java实体类

    - **生成实体类**:工具会解析SQL脚本,根据表的列信息生成对应的Java类,包括字段、getter和setter方法以及可能的构造函数。 - **整合到项目**:将生成的Java实体类添加到你的Java项目中,然后就可以在代码中使用...

    java中接口与抽象类的详细分析与比较

    1. **继承数量**:Java类可以实现多个接口,但只能继承一个抽象类。这使得接口更适合实现多继承的场景。 2. **成员变量**:抽象类可以有实例变量,而接口只能有常量(final static)。 3. **方法实现**:抽象类可以...

    java类与对象实例

    "java类与对象实例" 在 Java 中,类和对象是两个紧密相连的概念。类是一种蓝图,用于创建对象,而对象是类的一个实例。类描述了对象的基本结构,包括属性、方法和事件等。类设计的关键概念包括封装、继承和多态。 ...

    Java类思维导图

    Java类思维导图是理解Java编程语言中类与类之间关系的重要工具,它通过图形化的方式,清晰地展示了Java各类的结构、继承关系以及方法的使用。这份"Java思维导图"很可能包含了从基础的面向对象概念到高级特性的全面...

    java类加载器

    Java类加载器遵循双亲委派模型,其目的是提高系统的稳定性。该模型规定除了顶层的启动类加载器外,其余的类加载器都应当有一个父类加载器。类的加载请求会首先传递给父类加载器处理,如果父类加载器无法处理,则交给...

    1.java类的六种关系.zip

    1.java类的六种关系.zip1.java类的六种关系.zip1.java类的六种关系.zip1.java类的六种关系.zip1.java类的六种关系.zip1.java类的六种关系.zip1.java类的六种关系.zip1.java类的六种关系.zip1.java类的六种关系.zip1....

Global site tag (gtag.js) - Google Analytics