UML-各种图

发布于:2024-07-12 ⋅ 阅读:(159) ⋅ 点赞:(0)

什么是类图

定义系统中的类,描述类的内部结构(属性、方法等),表示类之间的关系(泛化、实现、依赖、关联、聚合、组合)。

UML表示类图

在这里插入图片描述
上图中左侧图形是一个常见的类图,

  • 类名:在顶端存放;
  • 属性部分:在中间存放,+ name: string => 可见性符号 属性名: 属性类型。
  • 方法部分:在底部存放,+ exam(int,double) => 可见性符号 方法名(参数列表): 返回值类型
    使用便签图形与虚线为类图添加注释

可见性

  • “+”:表示公有 public
  • “-”:表示私有 private
  • “#”:受保护的 protected
  • “~”:包内公有 package

属性语法

[可见性]属性名[:类型][=初始值][{属性字符串}] => + name: String = "tom" {readOnly}
中括号中描述的可有可无。


方法语法

[可见性]方法名[(参数列表)][:返回类型][{方法字符串}] => + calculateTotalPrice(quantity: int, pricePerUnit: double): double {static}
中括号中描述的可有可无。


泛化关系(继承关系)

在这里插入图片描述
一条带空心三角箭头的实线,从子类指向父类,或者子接口指向父接口


实现关系

在这里插入图片描述
实现用一条带三角箭头的虚线表示,从类指向实现的几接口


依赖关系

  • 定义:依赖关系表示一个类的方法使用另一个类的对象作为参数、局部变量或返回值,或者在方法中调用另一个类的方法。

  • 特点:依赖关系是一种较弱的关系,通常是临时性的。一个类的变化可能会影响到依赖它的类,但这种影响是间接的。

  • 表示:通常用虚线箭头表示。

  • 例子:学生和食堂,学生吃饭需要去食堂,食堂提供食物。


关联关系

  • 定义:关联关系表示两个类之间存在某种关系,通常是通过成员变量来实现的。这种关系可以是单向的,也可以是双向的。

  • 特点:关联关系中的对象通常是独立存在的,它们的生命周期不相互依赖。一个对象的创建和销毁不会直接影响另一个对象。

  • 表示:通常用实线箭头表示。

  • 例子:一个 Teacher 类包含多个 Student 类的对象,表示教师和学生之间的关系。


聚合关系

  • 定义:聚合关系是一种特殊的关联关系,表示整体与部分的关系,但部分可以独立于整体存在。

  • 特点:聚合关系强调的是整体与部分的关系,部分对象可以属于多个整体对象,或者可以独立存在* 。部分对象的生命周期可以独立于整体对象。

  • 表示:通常用空心菱形表示。

  • 例子: 一个 Department 类包含多个 Employee 类的对象,表示部门和员工之间的关系,员工可以独立于部门存在。


组合关系

  • 定义:组合关系是一种强聚合关系,表示整体与部分之间的一种更强的关联。

  • 特点:组合关系表示整体与部分的关系,部分对象的生命周期完全依赖于整体对象。如果整体对象被销毁,部分对象也会被销毁。部分对象不能独立存在,也不能被多个整体对象共享。

  • 表示:通常用实心菱形表示。

  • 例子:一个 Car 类包含一个 Engine 类的对象,表示汽车和引擎之间的关系,引擎的生命周期完全依赖于汽车。


关联关系和聚合关系的区别

在面向对象编程中,关系的类型(如关联关系和聚合关系)通常是根据对象之间的语义和生命周期来区分的。具体到 Department 和 Employee 以及 Teacher 和 Student 的例子,我们可以从以下几个方面来理解它们之间的关系类型:

Department 和 Employee
聚合关系:

  • 整体与部分:Department 和 Employee 之间的关系可以被视为整体与部分的关系。一个 Department 包含多个 Employee,但 Employee 可以独立于 Department 存在。例如,一个 Employee 可以在多个 Department 之间转移,或者在没有 Department 的情况下继续存在。

  • 生命周期独立:Employee 的生命周期不依赖于 Department。即使 Department 被销毁,Employee 仍然可以存在。

Teacher 和 Student
关联关系:

  • 一般关系:Teacher 和 Student 之间的关系可以被视为一般的关联关系。一个 Teacher 可以教多个 Student,但这并不意味着 Student 是 Teacher 的一部分。Teacher 和 Student 是独立的实体,它们之间的关系是基于教学活动,而不是整体与部分的关系。

  • 生命周期独立:Teacher 和 Student 的生命周期是独立的。一个 Teacher 的创建和销毁不会直接影响 Student,反之亦然。

总结

  • 聚合关系:强调整体与部分的关系,部分对象的生命周期可以独立于整体对象。例如,Department 和 Employee。

  • 关联关系:表示对象之间的一般关系,对象的生命周期独立。例如,Teacher 和 Student。

在实际编程中,选择合适的关系类型取决于具体的业务需求和对象之间的语义关系。理解这些关系有助于更好地设计类之间的关系,确保程序的正确性和可维护性。

总结

  • 依赖关系:较弱的关系,临时性,一个类的变化可能影响依赖它的类。

  • 关联关系:一般关系,对象独立存在,生命周期不相互依赖。

  • 聚合关系:整体与部分的关系,部分对象可以独立存在。

  • 组合关系:强聚合关系,部分对象的生命周期完全依赖于整体对象。

什么是用例图

什么是状态图

什么是活动图

什么是时序图

什么是组件图

什么是组件图

什么是部署图


网站公告

今日签到

点亮在社区的每一天
去签到