Markdown类图之继承、实现、关联、依赖、组合、聚合总结(十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:理解Markdown类图之继承、实现、关联、依赖、组合、聚合的区别?以及如何使用。

2.Markdown类图继承、实现、关联、依赖、组合、聚合的定义

  1. 继承(Inheritance):一种类与类之间的关系,表示一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。继承可以实现代码的重用和扩展。

  2. 实现(Implementation):一种类与类之间的关系,表示一个类实现了另一个类定义的接口或协议。实现关系用于描述类之间的约定和契约,确保实现类具有指定的方法和行为。

  3. 关联(Association):一种类与类之间的关系,表示两个类之间的联系和连接。关联关系是对象之间最普遍和常见的关系,可以是单向的、双向的、一对一的、一对多的、多对多的。

  4. 依赖(Dependency):一种类与类之间的关系,表示一个类在执行过程中需要另一个类的协助或依赖。依赖关系通常以参数、返回值、局部变量等方式表现。

  5. 组合(Composition):一种类与类之间的关系,表示一个类由其他类组合而成,并且组合的类不能独立存在。组合关系是一种强关联关系,一旦组合的类不存在,则整个类也不存在。

  6. 聚合(Aggregation):一种类与类之间的关系,表示一个类包含其他类的实例,而这些实例可以独立存在。聚合关系是一种弱关联关系,即使聚合的类不存在,包含类仍然可以存在。

区分这些类关系的关键在于理解它们的语义和用途。继承和实现关系是针对类之间的继承和接口实现关系,关联和依赖关系描述了类之间的联系和依赖关系,组合和聚合关系描述了类之间的整体与部分的关系。在设计类之间的关系时,需要根据实际需求和语义来选择适合的关系类型。

3.类图中的符号表示

Markdown类图之继承、实现、关联、依赖、组合、聚合总结(十五)_第1张图片

4.Markdown类图继承、实现、关联、依赖、组合、聚合应用实例

1. 继承(Inheritance):表示一个类可以继承另一个类的属性和方法。继承关系用于实现类的层次结构和代码的重用。子类继承父类的属性和方法,并可以扩展或重写它们。示例代码:

class Animal {
    // 父类Animal的属性和方法
}

class Dog extends Animal {
    // 子类Dog继承了父类Animal的属性和方法,并可以扩展或重写它们
}

2. 实现(Implementation):表示一个类实现了另一个类定义的接口或协议。实现关系用于描述类之间的约定和契约,确保实现类具有指定的方法和行为。示例代码:

interface Drawable {
    void draw();
}

class Circle implements Drawable {
    // 类Circle实现了接口Drawable的方法draw()
}

3. 关联(Association):表示两个类之间的连接和关系。关联关系可以是单向的、双向的,一对一的、一对多的或多对多的。关联关系通常是通过类之间的字段或参数来实现。示例代码:

class Car {
    // 类Car与类Engine之间存在关联关系,Car拥有一个Engine
    private Engine engine;
}

4. 依赖(Dependency):表示一个类在执行过程中需要另一个类的协助或依赖。依赖关系通常是通过类之间的方法参数或局部变量来实现。示例代码:

class Car {
    // 类Car依赖于类Engine的方法start()
    public void start(Engine engine) {
        engine.start();
    }
}

5. 组合(Composition):表示一个类由其他类组合而成,并且组合的类不能独立存在。组合关系是一种强关联关系,一旦组合的类不存在,则整个类也不存在。示例代码:

class Car {
    // 类Car由类Engine组合而成,Car拥有一个Engine
    private Engine engine;
}

6. 聚合(Aggregation):表示一个类包含其他类的实例,而这些实例可以独立存在。聚合关系是一种弱关联关系,即使聚合的类不存在,包含类仍然可以存在。示例代码:

class Department {
    // 类Department包含多个类Employee的实例,Employee可以独立存在
    private List<Employee> employees;
}

5.说明

举例说明:

1.继承:
定义:是一种继承关系,表示子类继承父类的所有特征和行为。
表示:使用带三角箭头的实线,箭头指向父类。

示例:
Animal <|-- Person
Animal <|-- Dog


2.实现
定义:类实现接口或者抽象类,表示类是接口所有特征和行为的实现
表示:带三角箭头的虚线,箭头指向接口或抽象类。
示例:
Person <|.. Man
Person <|.. Woman



3.组合
定义:是一种整体与部分的关系,但部分不能离开整体而单独存在,随整体的创建而创建,称为强聚合(也属于关联关系的一种),要求代表整体的对象负责代表部分的对象的生命周期。
表示:带实心菱形的实线,实心菱形指向整体。

示例:
Company *-- Department

4.聚合
定义:是一种整体与部分的关系,且部分可以离开整体而单独存在,是关联关系的一种,强关联关系。关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
表示:带空心菱形的实现,空心菱形指向整体。

示例:
Car *-- Wheel

5.关联
定义:是一种拥有的关系,它使一个类知道另一个类的属性和方法;关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
表示:带普通箭头的实心线,指向被拥有者。
示例:老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。


示例:
Teacher -- Student
Student <-- Course

6.依赖
定义:是一种使用关系,即一个类的实现需要另一个类的协助。(一个公司可以有一个或多个员工,但一个员工只能为一家公司工作。)
表示:带普通箭头的虚线,箭头指向被使用者。

示例:
Oxygen <.. Animal


你可能感兴趣的:(Markdown学习,markdown,类图)