UML类图

一. UML初识

定义(Unified Modeling Language)

统一建模语言UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。
UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。

分类

UML 2.2中一共定义了14种图示。

1. 结构性图形(Structure diagrams

强调的是系统式的建模:

2. 行为式图形(Behavior diagrams

强调系统模型中触发的事件:

3. 交互性图形(Interaction diagrams

属于行为图形的子集合,强调系统模型中的资料流程:

二. UML类图

为什么用类图

类图是软件工程的统一建模语言一种静态结构图,该图描述了系统的类集合,类的属性和类之间的关系。
帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。学习好类图的绘制,是一位合格的软件工程师应有的技能。

类图组成

分析一段代码的类图,例如最简单的一个类Person 类有两个属性分别是name和age,并提供对应的get和set方法。java类代码如下:

public class Person {
    private String name = "datiangou";
    private int age = 24;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

eclipse生成的UML类图

可以看出类图由三部分组成,类名,属性和操作方法

类名

顾名思义就是类的名字,对应于Java类中的类名,如果该类是抽象类的话,在类名右下角会有一个(Abstract)表示,假如Person是一个抽象类的话,

成员

可见性

UML提供机制,以代表类的成员,如属性和方法,对他们的其他信息。
指定一个类成员(即任何属性或方法)的可见性有下列符号,必须摆在各成员的名字之前

可见性 符号
public +
private -
protected #
default ~

属性名

通用表示方式:

可见性 名称:类型 [ = 默认值 ]

方法

通用表示方式:

可见性 名称(参数列表) [ : 返回类型]

三. 类图关系

主要有三类,继承关系,整体与部分关系,和相互联系。

1. 继承相关

继承有两种形式 : 泛化(Generalize)和实现(Realize),表现为 IS-A 关系。

泛化关系 (Generalize)

从具体类中继承。

实线+空三角

image

实现关系 (Realize)

从抽象类或者接口中继承。

虚线+空三角

image

2. 整体和部分

聚合关系 (Aggregation)--非强依赖

表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。以下表示 B 由 A 组成:

实线+空菱形(部分指向整体)

image

组合关系 (Composition)--强依赖

和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。

实线+实菱形(部分指向整体)

比如公司和部门,公司没了部门就不存在了。但是公司和员工就属于聚合关系了,因为公司没了员工还在。

image

3. 相互联系

关联关系 (Association)

表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。

实线+实箭头

比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。

image

依赖关系 (Dependency)

和关联关系不同的是,依赖关系是在运行过程中起作用的。依赖通常作为类的构造器或者方法的参数传入。双向依赖是一种不好的设计。

虚线+实箭头

image

参考文章
维基百科类图
Java利器之UML类图详解
面向对象的思想
UML类图几种关系的总结,泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • UML概述 UML简介 UML (Unified Modeling Language)为面向对象软件设计提供统一的...
    aron1992阅读 3,523评论 0 0
  • 在UML 2.0的13种图形中,类图是使用频率最高的UML图之一。Martin Fowler在其著作《UML Di...
    雷雷_zll阅读 14,558评论 0 14
  • 我们在进行项目的时候,通过使用 UML 的面向对象图的方式来更明确、清晰的表达项目中的架设思想、项目结构、执行顺序...
    充满活力的早晨阅读 10,389评论 2 34
  • 鼻子掉进脖颈,眼睛歪到头顶 心里住着嘴巴,很久也不吭声 他此时是他,只是人,认不出他 轻唤一声名字,他会反应 提起...
    April石阅读 1,724评论 8 24
  • 不知道你们有没有过很低迷的时候?觉得自己什么都不行,觉得人生也没有可失去的了。目前我就是这样的状态。距离失恋已经整...
    张琪or张澜馨阅读 2,707评论 0 0

友情链接更多精彩内容