什么是统一建模语言UML(Unified Modeling Language)
UML(统一建模语言)是一种通用的建模语言,用于描述软件系统的结构、行为和交互。它提供了一组符号和规则,用于创建可视化的图形模型,帮助开发人员、设计师和利益相关者之间进行沟通和理解。
起源和历史
- UML起源于20世纪90年代初,由James Rumbaugh、Grady Booch和Ivar Jacobson等知名软件工程师合作开发。
- 这三位工程师各自拥有自己的建模方法(Rumbaugh的OOA、Booch的OOD和Jacobson的OOSE),为了统一这些方法并提供一个通用的建模语言,他们联合起来并发展出了UML。
为何使用UML
- 提供统一标准:UML提供了一个统一的标准化建模语言,使得不同团队和人员之间可以使用相同的符号和表示法进行沟通和交流。
- 可视化表达:UML使用图形符号和图表来表示系统的结构和行为,使得复杂的概念和关系可以以直观的方式展示出来,提高了可理解性。
- 易于学习和使用:UML的符号和规则相对简单,并且有大量的教程和工具支持,使得学习和使用UML相对容易。
- 支持系统设计和分析:UML提供了丰富的建模工具和技术,支持系统设计、分析和实现的各个阶段,帮助开发人员更好地理解和规划系统。
- 提高团队协作:通过使用UML,团队成员可以共享和交流对系统的理解和设计,促进团队之间的协作和沟通,减少误解和错误。
UML的优点
- 统一标准化的建模语言
- 可视化表达复杂概念和关系
- 易于学习和使用
- 支持系统设计和分析的各个阶段
- 提高团队协作和沟通
总而言之,UML作为一种通用的建模语言,为软件开发提供了标准化的符号和表示法,帮助开发人员更好地理解、设计和实现软件系统,提高了软件开发过程的效率和质量。
Purpose of Class Diagrams
UML类图主要有以下几个目的:
- 显示系统中分类器的静态结构。
- 为UML规定的其他结构图提供基本符号和表示法。
- 对开发人员和团队成员有帮助。
- 业务分析师可以使用类图从业务角度对系统进行建模。
UML类图的组成部分
UML类图由以下两部分组成:
- 一组类(Classes)
- 类之间的关系(Relationships)
What is a Class
Class是系统中一组具有类似角色的对象的描述,它包括:
结构特征(Attributes)
结构特征定义了类的对象所"知道"的内容,包括:
- 代表类对象的状态
- 描述类的结构或静态特征
行为特征(Operations)
行为特征定义了类的对象所"能做"的事情,包括:
- 定义了对象之间可能的交互方式
- 描述类的行为或动态特征
Class Notation
类的表示包括三个部分:
类名(Class Name)
类名出现在第一个分区中。
类属性(Class Attributes)
属性显示在第二个分区中。
属性类型在冒号后面显示。
属性对应于代码中的成员变量(数据成员)。
类操作(方法)(Class Operations (Methods))
操作显示在第三个分区中,它们是类提供的服务。
方法的返回类型在方法签名的末尾的冒号后面显示。
方法参数的返回类型在参数名后面的冒号后面显示。
操作对应于代码中的类方法。
Class Relationships
类之间的关系
一个类可以与其他类之间存在一个或多个关系。关系可以是以下几种类型之一:(请参考右侧的图形表示关系)。
Relationship Type
关系的种类
Graphical Representation
图形解释
Inheritance (or Generalization):
继承(或泛化):
- 表示“是一个”关系。
- 抽象类名称以斜体显示。
- SubClass1和SubClass2是Super Class的特化。
- 从子类指向父类的实线箭头。
Simple Association:
简单关联:
- 两个对等类之间的结构链接。
- Class1和Class2之间存在关联。
- 连接两个类的实线。
Aggregation:
聚合:
- 一种特殊的关联类型。表示“部分-整体”关系。
- Class2是Class1的一部分。
- Class1可以关联多个Class2的实例(用*表示)。
- Class1和Class2的生命周期是独立的。
- 带有未填充菱形的实线,连接到复合类的关联端点。
Composition:
组合:
- 一种特殊的聚合关系,当整体被销毁时,部分也会被销毁。
- Class2的生命周期与Class1相连。
- Class2不能独立存在。
- 带有填充菱形的实线,连接到复合类的关联端点。
Dependency:
依赖:
- 如果对一个类的定义的更改可能导致对另一个类的更改(但反过来不成立),则存在依赖关系。
- Class1依赖于Class2。
- 带有虚线和开放箭头的线条。
Navigability
导航性
箭头表示在一个实例参与关系时,是否可以确定与之相关的另一个类的实例。
上面的图示表明:
- 给定一个电子表格,我们可以找到它所包含的所有单元格,但是
- 我们无法从一个单元格中确定它所属的电子表格,即无法从单元格导航到电子表格,所以单元格的导航性是不可行的。
- 给定一个单元格,我们可以获取相关的表达式和值,但是
- 给定一个值(或表达式),我们无法找到这些属性所属的单元格,即无法从值或表达式导航到单元格,所以值或表达式的导航性是不可行的。
简而言之,导航性指的是在关系中是否可以通过一个实例来导航到与之相关的其他实例。根据箭头的存在与否,我们可以确定导航性的可行性。
Visibility of Class attributes and Operations
类属性和操作的可见性
在面向对象设计中,有关属性和操作的可见性有一种标记表示法。UML识别了四种可见性类型:public(公共)、protected(受保护)、private(私有)和package(包内)。
在类中的属性和操作名称之前,使用 +、-、# 和 ~ 符号表示属性和操作的可见性。
- + 表示公共属性或操作
- - 表示私有属性或操作
- # 表示受保护属性或操作
- ~ 表示包内属性或操作
参考:https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-class-diagram/
仅供学习使用,勿用做商业和其他违法用途