UML——类图2

1、什么是类图

  类图(Class diagram)主要用于描述系统的结构化设计。类图也是最常用的UML图,用类图可以显示出类、接口以及它们之间的静态结构和关系。

2、类图的元素

  在类图中一共包含了以下几种模型元素,分别是:类(Class)、接口(Interface)、依赖(Dependency)关系、泛化(Generalization)关系、关联(Association)关系、聚合关系(Aggregation)、组合关系(Composition)和实现(Realization)关系。

2.1 类(Class)

  在面向对象(OO) 编程中,类是对现实世界中一组具有相同特征的物体的抽象。

2.2 接口(Interface)

  接口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。在UML中,接口使用一个带有名称的小圆圈来进行表示。

2.3 依赖(Dependency)关系

  依赖关系是指两个或多个类之间的依存关系,如植物类依赖于土壤类。 依赖关系还可以再细分为5种类型,分别是绑定(Binding)依赖、实现(Realization)依赖、使用(Usage)依赖、抽象(Abstraction)依赖和授权(Permission)依赖。

  依赖关系用虚线箭头来表示,箭头指向为依赖的方向。

2.4 泛化(Generalization)关系

  简单的讲就是类之间的继承关系。在UML中,泛化关系用空心三角形+实线来表示,箭头指向为父类。

2.5 聚合(Association)关系

  聚合关系是类之间的一种较弱的耦合关系,如一个字符串数组和一个字符串就是一种聚合关系。在UML中类图中,聚合关系用空心的菱形+实线箭头来表示,箭头指向为被聚合的类。

2.6 组合(Aggregation)关系

  组合关系是类之间一种整体与部分之间的关系,如一只青蛙有四条腿,青蛙类与青蛙腿类之间的关系就是组合关系。在UML类图中,组合关系用实心的菱形+实线箭头来表示,箭头指向为被组合的类。

2.7 关联(Composition)关系

  关联关系是类之间一种相互影响的关系,影响的方向就是关联的方向。在UML类图中,组合关系用实线箭头来表示。

2.8 实现(Realization)关系

  一般来讲实现关系是针对类与接口之间的关系而言的。在UML类图中,实现关系用空心三角形+虚线来表示。

3、简单的类图示例

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小二的折腾日记

LeetCode-52-N-Queens-II

只返回N皇后问题结果的种数。 因此不需要每一个字符串置位了,只需要判断一个位置的横竖,斜45度和斜135度方向的值即可。依然采用递归的方式,这里需要注意的是,由...

501
来自专栏V站

PHP把二维数组中的值取出组合整一维数组

小伙伴们,之前我们在开发过程中肯定遇到需要把二维数组转换为一维数组的时候,基本上都运用了foreach循环遍历赋值给新数组. 今天这里介绍一个新的方法,通过两个...

1672
来自专栏数据结构与算法

洛谷P1730 最小密度路径(floyd)

很显然的一个dp方程\(f[i][j][k][l]\)表示从\(i\)到\(j\)经过了\(k\)条边的最小权值

853
来自专栏机器学习算法与Python学习

Numpy

Numpy Numpy是Python中用于科学计算的核心库。它提供了高性能的多维数组对象,以及相关工具。(本文文末的原文链接为numpy的官方文档) NumPy...

3407
来自专栏与神兽党一起成长

最大子序列和O(N)算法简单分析『神兽必读』

可以看到算法中重要的位置都标注出来了。 显然这个算法有一个for循环,整体时间复杂度可以看作O(N)。 就算法正确性来分析,首先假设这样的输入:-2, -3, ...

2232
来自专栏人工智能LeadAI

TensorFlow从0到1丨第2篇:TensorFlow核心编程

上一篇Hello, TensorFlow!中的代码还未解释,本篇介绍TensorFlow核心编程的几个基本概念后,那些Python代码就很容易理解了。 与Ten...

3954
来自专栏C语言及其他语言

【每日一题】1426: [蓝桥杯][历届试题]九宫重排

如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面...

913
来自专栏AI派

TensorFlow修炼之道(2)——变量(Variable)

变量(Variable)是 TensorFlow 中程序处理的共享持久状态的最佳方法。与常量不同的时,常量创建后,值便无法更改,但是变量创建后 可以修改。并且修...

3314
来自专栏ACM算法日常

交错字符串(动态规划)- leetcode 97

给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。

1091
来自专栏数据结构与算法

洛谷P1962 斐波那契数列(矩阵快速幂)

题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n...

35710

扫码关注云+社区