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
在这里插入图片描述
在这里插入图片描述
这个阶段有时候可以看到一些软件接口

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值