UML 学习笔记

UML 学习笔记

简介

  • UML(Unified Modeling Language)即统一建模语言,是一种采用图表表达信息系统,或软件程序的方法,一般被用于面向对象的软件工程项目里,包含需求分析与系统设计等阶段所使用到的工具。

UML结构图

  • Class diagram:类图,描述系统的静态结构,类、接口、协作以及之间的关系
  • Object diagram:对象图,对象及对象间的关系
  • Package diagram:包图,包以及包之间的依赖关系
  • Component diagram:构件图,构件及其互相依赖关系
  • Composite structure diagram:组合结构图,系统某一部分的内部结构
  • Deployment diagram:部署图,构件在各节点上的部署
  • Profile diagram:外廓图,不同应用领域对 UML2 进行扩展或裁剪的机制

UML行为图

  • Activity diagram:活动图,描述事物执行的控制流或数据流
  • Sequence diagram:顺序图,对象之间的消息交互,强调消息执行的顺序的交互图
  • Communication diagram:通信图,对象之间的消息交互,强调对象协作的交互图
  • Timing diagram:时序图,对象之间的消息交互,强调真实时间信息的交互图
  • Interaction overview diagram:交互概览图,展示交互图之间的执行顺序
  • State diagram:状态机图,描述对象所经历的状态转移
  • Use case diagram:用例图,描述一组用例、参与者以及它们之间的关系

  • 类图是面向对象式的建模。他们一般都被用于概念建模(conceptual modelling)的系统分类的应用程序,并可将模型建模转译成代码。
  • UML提供机制,以代表类的成员,如属性和方法,对他们的其他信息。
    指定一个类成员(即任何属性或方法)的可见性有下列符号,必须摆在各成员的名字之前:
    • +:公共
    • -:私有
    • #:保护(对子类可见)
    • ~:包(对包内其他成员可见)
    • /:推导(由其他属性推导出)
    • 下划线:静态
  • 一个类分为三个区域:最上面是类名称、中间部分包含类的属性、底部部分包含类的方法。

实例层级的关系

泛化

泛化(Generalization),即继承的反方向,指的是一个类(称为父类、父接口)具有另外的一个(或一些)类(称为子类、子接口)的共有功能。子类可视为其父类的特例,并可以增加新功能。用带空心三角形箭头的实线表示。

实现

实现(Realization)指的是一个 class 类实现 interface 接口(可以是多个)的功能;在 Java 中此类关系通过关键字 implements 明确标识。用带空心三角形箭头的虚线表示。

依赖

依赖关系(Dependency)可以简单的理解为一个类A使用到了另一个类 B," ... uses a ...",被依赖的对象只是作为一种工具在使用,而并不持有对它的引用。而这种使用关系是具有偶然性、临时性的、非常弱的,但是B类的变化会影响到 A;表现在代码层面,为类 B 作为参数被类 A 在某个 method(方法)中使用。用带燕尾箭头的虚线表示。表示一个类依赖于另外一个类的定义;依赖关系仅仅描述了类与类之间的一种使用与被使用的关系。

关联

关联关系使一个类知道另外一个类的属性和方法;某个对象会长期的持有另一个对象的引用,关联的两个对象彼此间没有任何强制性的约束,只要二者同意,可以随时解除关系或是进行关联,它们在生命期问题上没有任何约定。被关联的对象还可以再被别的对象关联,所以关联是可以共享的。 在代码层面上,被关联类以类属性的形式出现在关联类中,也可能是关联类引用了一个类型为被关联类的全局变量。目前定义有五种不同类型的关联。双向(Bi-directional)和单向(uni-directional)的关联是最常见的。

聚合

聚合(Aggregate)是表示整体与部分的一类特殊的关联关系,是“弱”的包含(" ... owns a ..." )关系,成分类可以不依靠聚合类而单独存在,可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享(sharable)。例如,池塘与(池塘中的)鸭子。再例如教授与课程就是一种聚合关系。又例如图书馆包含(owns a) 学生和书籍。即使没有图书馆,学生亦可以存在,学生和图书馆之间的关系是聚集。聚集可能不涉及两个以上的类。图形以空心的菱形箭尾与实线来表示。

其他

参考资料

posted @ 2025-04-15 19:08  thedyingkai_(TDK)  阅读(99)  评论(0)    收藏  举报