类和类之间的关系

    xiaoxiao2021-12-14  23

    1.类:具有相同属性分方法的一组对象的集合

    语法: Public class<类名>{    属性1的类型,属性1;    ..........   属性n的类型,属性n;  方法1;    ......... 方法n; } 定义一个类的步骤如下 1,定义类名 2,编写类的属性,3,编写类的方法

    2. 类和类之间的几种关系:

    1.依赖 2.关联 3.聚合 4.组合

    (1)依赖:

    简单理解,依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。表现在代码层面,为类B作为参数被类A某个method方法中使用。在UML类图设计中,依赖关系用由类A指向类B的带箭头虚线表示。

    实例方法:

    Public class Students{ //学生类 } Public class Score{ //成绩类  public float getAvg(Students s){  //计算平均分 } }

    (2)关联:

    关联体现的是两个类之间语义级别的一种强依赖关系,比如我和我的朋友,这种关系敝依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的,关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联系用由关联类A指向被关联类B的带箭头实现表示,在关联的两端可以标注关联双方的角色和多重标记。

    实例方法:

    class Subject{//课程类 private int no;//课程编号 private String subjectName//课程名称 } class Student{//学生类 }

    (3)聚合:

    聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系。此时整体与部分之间是可以分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如计算机与cpu、公司与员工的关系等,比如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分,在UML类图设计中,聚合关系以空心菱形加箭头表示。

    实例:

    Class Grade{  private String gradeName; } Class Students{  private String name; grade[]:Grade }

    (4)组合:

    组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,组合关系以实心菱形加实线箭头表示。

    实例:

    Class Cat{//猫类 } Class Duck(){//鸭子类 private Cat cat; private Duck duck; }

    总结:

    对于继承、实线这两种关系没多少疑问,它们体现的是一种类和类、或者类与接口间的纵向关系。其他的四种关系体现的是类和类、或者类与接口间的引用、横向关系,是比较难区分的,由很多事物的关系要想准确定位是很难的。几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖。

    转载请注明原文地址: https://ju.6miu.com/read-968045.html

    最新回复(0)