UML(一)Class 类图

本文详细介绍了UML类图的基本组成元素,包括类、接口及其关系。解释了类的属性和方法,以及类与类之间的关系如依赖、关联、继承、聚合、组合和实现等。

类 class
在这里插入图片描述
类图最上部分方框为 类名称
中间部分为 类属性
最下的方框为 类方法

类名称是强制的,因为类的属性和方法很有可能在规划的时候无法穷尽其方法和属性。所有有时候只标注一个类名称
属性,方法的书写格式
在这里插入图片描述

在这里插入图片描述
名称:类型(方法为返回值类型)

最前面的符号表示 类属性和方法的权限

public 用+表示
private 用-表示
protected 用#表示
package 用~表示
static 下划线 _ 表示

class 类名:
{
   public://公有成员 
       int num;
   private:私有成员
       int age;
   protected:保护成员
       int sex;
}

类的public成员可以被任意实体访问,你可以认为它就是c语言中的struct结构体,可以直接用a.x这种形式访问;
类的private成员不能直接被类的实体访问,也不能被子类的实体访问,但是可以被类的成员函数访问;
类的protected成员不能直接被类的实体访问,但是可以被子类访问,也可以被类的成员函数访问;

接口interface
接口是一组操作的集合,其中的每个操作用于描述类或组件的一个服务。
在这里插入图片描述
接口的图表和类非常相似 《》 尖括号代表接口

类间关系
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)

依赖(Dependency)
依赖表示一个类以某种形式依赖于其他类。 当两个类处于依赖关系中时,其中一个类的改变可能会影响另一个类。 在程序代码中,依赖关系意味着一个类的对象出现在另一个类的操作中。
依赖关系是一种偶然的、较弱的使用关系,特定事物的改变可能影响到使用该事情的其它事物,在需要表示一个事物使用另一个事物时使用依赖关系。

依赖关系的表现形式
B类的实例作为A类方法的参数
B类的实例作为A类方法的局部变量

A类调用B类的静态方法
例如 人依赖于空气
在这里插入图片描述

这种依赖关系 是类和类间的关系,用带箭头的虚线表示。

关联
关联(Association)关系是一种结构化关系,用于表示一类对象与另一类对象之间的联系。
,通常将一个类的对象作为另一个类的成员变量。
关联关系是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的,它是依赖关系更强的一种关系。

单向关联用带箭头的实线表示,同时一方持有另一方的实例,并且由于是单向关联,如果在关联线上注明关系,则只可注明单向的关系
在这里插入图片描述

用实线箭头表示
在这里插入图片描述

自关联是指属性类型为该类本身。例如在链表中,每个节点持有下一个节点的实例,如下图所示

在这里插入图片描述
默认情况下,关联是双向的。例如数据库管理员(DBA)管理数据库(DB),同时每个数据库都被某位管理员管理。因此,DBA和DB之间具有双向关联关系,如下图所示。
在这里插入图片描述

继承
Generalization
泛化(Generalization)关系,用于描述父类与子类之间的关系,父类又称作超类或者其类,子类又称为派生类。注意,父类和子类都可为抽象类或者具体类。
继承关系 继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。
子类能吸收已有类的属性和行为,并能拓展新的能力

在这里插入图片描述
人 继承于动物
符号为 实线空心三角

聚合
聚合(Aggregation)关系表示整体与部分的关系。在聚合关系中,部分对象是整体对象的一部分,但是部分对象可以脱离整体对象独立存在,也即整体对象并不控制部分对象的生命周期。从代码实现上来讲,部分对象不由整体对象创建,一般通过整体类的带参构造方法或者Setter方法或其它业务方法传入到整体对象,并且有整体对象以外的对象持有部分对象的引用。

在UML类图中,聚合关系由带箭头的实线表示,并且实线的起点处以空心菱形表示,如下图所示。
表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。 两个对象具有各自的生命周期

人群是人的聚合。 一个人离开,人群不一定消失,有着各自的生命周期。

在这里插入图片描述

组合
组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象控制成员对象的生命周期,一旦整体对象不存在了,成员对象也即随之消亡。

从代码实现上看,一般在整体类的构造方法中直接实例化成员类,并且除整体类对象外,其它类的对象无法获取该对象的引用。
组合是一种强的‘拥有’关系,是一种contains-a的关系,体现了严格的部分和整体关系,部分和整体的生命周期一样
人和头
头是人的组件,生命周期一样。
在这里插入图片描述
实现Realization
实现表示一个class类实现interface接口(可以是多个)的功能。
在UML类图中,类与接口间的实现关系用带空心三角形的虚线表示。同时类中也需要列出接口中所声明的所有方法(这一点与类间的继承关系表示不同)。
在这里插入图片描述

棒棒糖表示法
在这里插入图片描述
在这里插入图片描述

最后理清一下思路看一个例子
在这里插入图片描述

视角

如果需要把一个项目中所有的类和类的关系一次性描述清楚,是极其困难的

conceptual perspective
在画一只马的时候可以先画一个简图,这就是概念图
在这里插入图片描述
在这里插入图片描述
无论用什么语言去实线,概念图都是一样的。

specification perspective
在这里插入图片描述
在这里插入图片描述
这个阶段有时候可以看到一些软件接口

实现阶段
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值