UML中的类图及常见类图关系

本文详细解析了UML中的类图,包括类、接口的概念,以及类图中的六种关系:依赖、关联、聚合、组合、泛化和实现。通过实例帮助理解每种关系的特点和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UML(统一建模语言,Unified Modeling Language),是用来设计软件蓝图的可视化建模语言。从目标系统的不同角色出发,分为用例图,类图,对象图,状态图,活动图,时序图,协作图,构件图,部署图等9种图
最近重新研究了设计模式,在整理总结时,用到了类图,发现经常混淆类图的关系,所以特意做下整理。

类、接口、类图

类(class)是指具有相同属性,方法,和关系的对象的抽象,封装了数据和行为,具有封装、继承、多态等三大特性.在UML中,类使用包含类名、属性和操作且带有分隔符的矩形来表示。

  • 类名(name)是一个字符串,例如User
  • 属性(attribute)是指类的特性,即类的成员变量.UML按照以下格式表示 [可见性]属性名:类型 例如: -name:String

    可见性表示该属性对类外的元素是否可见,也就是我们常说的作用范围,分为public(+),private(-),protected,(#)friendly(~)

  • 操作(operations)是指类的任意一个势力对象都可以使用的行为,简单点就是方法.UML格式为: [可见性]名称(参数列表)[:返回类型],例如 +getName():String

下图为person类的UML:
Person类UML

接口

接口(interface)是一种特殊的类,包含抽象抽象,但不包含属性.在UML中,接口通常用带有名称的小圆圈表示(目前有些软件并不是这样来表示)

类图

用来显示系统中的类、接口、协作以及他们之间的静态结构和关系的一种静态模型.

类之间的关系

根据类与类之间的耦合度从弱到强排列,UML中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系、实现关系.其中泛化和实现的耦合度相等,是最强的.

依赖关系

  • 描述

依赖(dependency),在代码中,某个类的方法通过局部变量,方法参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些任务.
通俗的讲,一个类A使用到了另一个类B,但是这种使用关系是具有偶然性的、临时性、非常弱的,但是B类的变化会影响到A,是一种使用关系

  • 代码:方法的参数,局部变量
  • UML:一条虚线,箭头从使用类指向被依赖的类
    依赖关系

关联关系

  • 描述

关联(association)关系,用于表示一类对象与另一类对象之间的联系,使一个类知道另一个类的属性和行为.关联关系有单向关联,双向关联,自关联

  • 举例:比如老师和学生,老师知道班里的学生信息,学生不知道老师的信息,老师和学生就是一种单向的关联关系.老师知道学生信息,学生知道老师信息,两者之间就是双向关联关系.老师知道同行老师的信息,老师和老师就是自关联关系.
  • 代码:通常是将一个类的对象作为另一个类的成员变量来实现.
  • UML:双向关联可以用带两个箭头或者没有箭头的实现来表示.单向关系用带一个箭头的实现从实用类指向被关联类
    双向关联
    单向关联
    自关联

聚合关系

  • 描述

聚合(aggregation)关系是关联关系的一种,是强关联关系,是整合和部分的关系,是has-a的关系.
聚合关系也是通过成员对象来实现,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象单独存在.

  • 举例:学校与老师关系,学校中包含老师,如果学校停办了,老师依然存在.
  • UML:聚合关系通常用带空心的菱形实线来表示,菱形指向整体.聚合关系

组合关系

  • 描述

组合(composition)关系也是关联关系的一种,也是表示整体和部分的关系,整体对象控制部分对象的生命周期,一旦整理对象不存在,部分对象也将不存在.部分对象不能脱离整理对象单独存在.

  • 举例:头和嘴的关系,没了头,嘴也就不存在了.
  • UML:组合关系用带实心的菱形实线来表示,菱形指向整体.
    组合关系

泛化关系

  • 描述

泛化(generalization)关系是对象之间耦合度最大的关系,是父类与子类的继承关系,是is-a的关系

  • 举例:学生类和老师类都是person类的子类.
  • UML:泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类
    泛化关系

实现关系

  • 描述

实现(realization)关系是接口与实现类之间的关系.

  • UML:实现关系使用带空心的三角箭头虚线来表示,箭头从实现类指向接口
    实现关系
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值