类图

一、什么是类图?


   类图是根据系统中的类以及各类之间的关系描述系统的静态图。类图不仅显示系统内信息的结构,还描述系统内这些信息的行为。它一个最重要目的就是为其他图(如顺序图。交互图)定义一个基础。类图由多个类以及这些类之间的关系组成。

二、类图的基本画法

   

  类的矩形表示法:

     一个类用一个矩形框表示,这个矩形框分为三部分,也就是三个层,它代表一个类(Class)。如下图所示:
     
类图分为三层:
       第一层:显示类的名称,如果是抽象类用斜体表示。
       第二层:显示类的特性,通常是类的属性和字段。
       第三层:显示类的操作,通常是方法和行为。

接口的矩形表示法如下图所示:

 

     接口的矩形表示法顶端有“<<interface>>”,第一行是接口名,第二行是接口方法。

接口的棒棒糖表示法如下图所示:


        接口的棒棒糖表示方法:圆圈旁为接口名,接口方法在实现口类中体现。

符号:“+”代表 public  “-”代表 private  “#”代表 protected

三、类图的关系:

1. 依赖关系(Dependency):
    单向,表示一个类依赖于另一个类,其中一个类的变化将影响另一个类。如果A依赖于B,则B是A的局部变量、方法参数、静态方法等,在画图时用“虚线”表示,例如:

public class Bird {

    public void haveWing(){
        //局部变量
        Wing wing = new Wing();
    }

    public void haveWing(Wing wing){
        //方法参数
    }


    public void haveWings(){
        //静态方法调用
        Wing.getWing();
    }
}
由上边的代码可以看出Bird依赖于Wing,可以用下面的图表示:

2. 关联关系(Association)

        单向或双向(通常要避免使用双向关联关系),它是一种“has a”的关系,如果A单向关联B,则可以说A has a B,在代码中通常表现为全局变量,在画图时用“实线箭头”表示。

public class Bird {

    private Wing wing;

    public Wing getWing() {
        return wing;
    }

    public void setWing(Wing wing) {
        this.wing = wing;
    }
    
}

由上边的代码可以看出Bird和Wing有关联,可以用下面的图表示:

    

3. 聚合关系(Aggregation)

    单向,关联关系的一种,与关联关系之间的区别是语义上的,关联的两个对象通常是平等的,聚合则一般不平等,有一种整体和局部的感觉,画图时用“空心菱形+实线”表示,例如:

public class Team {
    private Student student;
}

Team由 student 组成,他们的生命周期不同,整体不存在了,部分依然存在,当Team不存在,student依然存在,还可以加入别的组,可以用下面的图表示:


4. 组合关系(Composition)

     单向,是一种强依赖的特殊聚合关系,体现了严格的部分和整体关系,部分和整体的生命周期一样,它们的生命周期相同,如果整体不存在了,部分也将消亡,画图时用“实心菱形+实线”表示,例如:

public class Person {
     private Head head;
     private Body body;
     private Arm arm;
     private Leg leg;
}

  人由身体、头、胳膊、腿组成,当人这个整体不存在的时候,这些部分也不存在了,可以用下图表示:


5. 继承关系(Inheritance)

     类实线接口,类继承抽象类,类继承父类都属于这种关系,画图时用“空心三角形+实线”表示。

     继承关系的细化:

          实现(Realization):类实现接口属于这种关系。

          泛化(Generalization): 就是“is a”的关系,类继承抽象类,类继承父类都属于这种关系。

       例如:

public class Dog extends Animal {

}

      可以看出Dog类继承了Animal类,可以用下图表示:

        

               

  • 2
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值