美文网首页
UML类图详解

UML类图详解

作者: CarsonCao | 来源:发表于2019-03-01 18:40 被阅读0次

uml对类之间的表示关系分为以下几种:

  • 依赖
  • 关联
  • 聚合
  • 组合
  • 泛化/继承
  • 实现

以下借用 https://www.jianshu.com/p/6b634106a7ba 中的代码和示意图进行详细说明。

1.依赖

用虚线箭头表示,这是一种最弱的关系,当B的方法中调用了A的时候(局部变量或者形参),则B类依赖了A类,表示为:B---->A。两个类的生命周期没有什么依赖关系。

public class Car {
    public void run(){
        
    }
}
---

public class Driver {

    public void driver(Car car){
        car.run();
    }


}

image.png

2.关联

关联用实线箭头表示,表示两个类之间的关系又近了一步,为啥更近一步呢,这次不是函数调用了,而是属性中,假如B类的属性中含有A类的对象,则B ——>A。

public class Address {  
}
---
public class Student {
    private Address address;

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }
}
image.png

还有一种关系是双向关联,如果A和B类互为对方属性,那A和B就是双向关联,用实线表示:A——B
在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联

3.聚合

如果一个类中(主类)包含另一个类的对象作为属性,并且构造函数中含有该类的对象作为形参传入赋值,那就认为两个类构成聚合关系。用空心菱形(主类)和实线表示。

public class Engine {

    public void start(){
        System.out.println("发动机发动");
    }

}
---
public class Wheel {

    public void run(){
        System.out.println("轮子转动");
    }

}
public class Car {
    private Engine engine;
    private Wheel wheel;

    public Car(Engine engine, Wheel wheel) {
        this.engine = engine;
        this.wheel = wheel;
    }

    public void run(){
        engine.start();
        wheel.run();
    }
}
image.png

4.组合

组合相对聚合更进一步,用实心菱形(主类)和实线表示。当主类包含一个类的对象作为参数,并且构造函数中new实例化了对象的时候,则两个类构成组合关系。两个类的生命周期紧密相关。

public class Eye {
}
public class Face {
}
public class Person {

    private Eye eye;
    private Face face;

    public Person() {
        eye = new Eye();
        face = new Face();
    }
}
image.png

5.泛化/继承

用实线和空心箭头表示,学过面向对象都知道继承,这个不多说了。

public class Person {

    private String name = "Jack";

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    protected void playBasketball()
    {
        pass();
    }

    private void say()
    {

    }
}
-----
public class Student extends Person {

    //学号。。
    private String studentNo;

    public void study(){
        System.out.println("上课的方法");
    }

}
---

public class Teacher extends Person {

    private String teacherNo;

    public void teach(){
        System.out.println("教学");
    }

}
image.png

6.实现

用虚线和空心箭头表示,表示对接口的实例化。

public interface Fly {

    void fly();

}
---
public class Bird implements Fly {
    @Override
    public void fly() {

    }
}
image.png

总结

名称 特征 表示
依赖 B中方法调用A A<---B
关联 B中含有A的对象作为属性 B——>A
聚合 B中含有A的对象作为属性,构造函数有A的形参赋值 B(菱形)—A
组合 B中含有A的对象作为属性,构造函数中new实例化了A的对象 B(菱形)—A
泛化 B继承了A
实现 B实现了接口A

相关文章

  • UML 图 2018-09-04

    转自 UML 类图详解 类信息 类名 Abstract 右下角 {abstract}abstract class ...

  • C++线下测试回顾

    题目地址 有同学说不知道怎么画内存模型图,我这里附几个教程UML类图小结UML类图与类的关系详解类似的教程笔记网上...

  • UML | 详解UML类图

    UML基本介绍 UML(统一建模语言)是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录...

  • UML类图

    UML类图与类的关系详解 原链接:https://www.cnblogs.com/pangjianxin/p/78...

  • UML类图详解

    UML类图是一种结构图,用于描述一个系统的静态结构。类图以反映类结构和类之间关系为目的,用以描述软件系统的结构,是...

  • UML类图详解

    类的表示法 如下图就表示一个类。类图分三层,第一层显示类的名称,如果是抽象类,这用斜体表示。第二层表示类的特性,通...

  • UML类图详解

    我们在阅读开源项目时总是希望能比较高效的整理清楚项目中的各个类之间的关系,那么有没有相应的工具能高效、简洁的表示清...

  • UML类图详解

    uml对类之间的表示关系分为以下几种: 依赖 关联 聚合 组合 泛化/继承 实现 以下借用 https://www...

  • UML类图详解

    UML类图 [TOC] 1.类图 class 类图有三行 第一行:类名 第二行:字段/属性 第三行:方法/特性 2...

  • UML 类图详解

    基本概念 类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类...

网友评论

      本文标题:UML类图详解

      本文链接:https://www.haomeiwen.com/subject/kqlgyqtx.html