UML类图

523 阅读3分钟

Java是一门纯面向对象的编程语言,所以就有类的存在,因此将类进行抽象的表达十分重要。

存在一个Person类

public class Person {
    private String name;
    private int age;
    private String address;

    public void addAge(int age) {
        this.age += age;
    }

    public String newName(String newName) {
        this.name += newName;
    }

    protected void doWork() {
        System.out.println("Do Work");
    } 

    private void sayHello() {
        System.out.println("Say Hello!");
    }
}

根据上面的类,我们就可以将其抽象表达为

类图解释说明

类图共分为三层

  • 第一层为类名
  • 第二层为类的属性
  • 【访问限定符】【属性名】:【属性类型】
  • 第三层为类的行为
  • 【访问限定符】【方法名(参数名 : 参数类型)】:返回值类型

其中,表示类的访问限定符为private(-)、protected(#)、public(+)。

类之间的关系表示方法

泛化(继承)

继承又称之为泛化,在UML中,采用空心箭头表示,箭头指向的类为父类

存在Studengt类,继承自Person

public class Student extends Person {
    private String schoolName;
    private String schoolAddress;

    public String getSchoolName() {
        return this,schoolName;
    }

    public void setSchoolName(String schoolName) {
        this.schoolName = schoolName;
    }
}

实现

接口的实现

接口的实现使用的是虚线状的空心箭头表示,类似于图中,Circle实现了Shape接口,有一点需要注意的是在Shape的前面必须加上<<interface>>。

抽象类的实现

关于抽象类的表示方法,抽象类的方法名以及其中的抽象方法采用斜体表示,且实现方式也是虚线状的空心箭头。

依赖

依赖主要表现为一个类中使用到了另一个类,而这个使用是非必须的,在下面的类中,类B在方法中使用到了类A,从而就形成了B依赖A的关系。

关联

关联为一种更强的依赖关系,一般为另一个类出现在了某一个类的属性中。

聚合

聚合的含义为一个对象由其他的对象构成,并且这些构成的对象是可以独立的,他们可以有自己的生命周期,并非与主对象共存亡,只能够从语义上进行区分。

例如公司和员工,他们是两个是相互独立的,并非公司倒闭了员工这个人就不在了,他还可以属于其他公司。

组合

组合为一种强聚合,要求部分与整体是不可独立的,整体消亡部分也要消亡,是一种contains-a的关系。跟聚合只能从语义上进行区分。

例如人和大脑,人挂掉了,那么大脑也挂掉了。