统一建模语言(UML)是用于可视化和描述面向对象软件模型的静态结构、动态行为以及模块组织与管理的建模语言。维基百科上给出了如下定义:
```
统一建模语言(Unified Modeling Language)是一种可视化的面向对象建模语言,描述软件模型的静态结构、动态行为及模块组织与管理。
```
UML包括三个基本部分:事物(Things)、关系(Relationships)和图(Diagrams)。事物是UML中最重要的组成部分,代表概念上的或物理上的元素,分为结构事物(Structural things)、动作事物(Behavioral things)、分组事物(Grouping things)和注释事物(Annotational things)。关系将事物紧密联系在一起,分为依赖(Dependencies)、关联(Association)、泛化(Generalization)和实现(Realization)。UML中的9种图包括类图(Class diagram)、对象图(Object diagram)、用例图(Use case diagram)、时序图(Sequence diagram)、协作图(Collaboration diagram)、状态图(Statechart diagram)、活动图(Activity diagram)、组件图(Component diagram)和部署图(Deployment diagram)。
用例图是UML中最常用的一种图,它展示了系统中的用例以及它们之间的关系。用例图的组成包括用例(use case)、参与者(Actor)和业务工人(business worker)。参与者是整个建模的中心,而业务工人则是系统中的被动参与者。
活动图是描述系统行为的另一种UML图,它以活动为中心,展示系统中各个活动的执行顺序以及这些活动之间的控制流。活动图由起始点、边、选择、合并、分支和汇合等元素组成。
类图用于展示软件模型的静态结构,包括类的内部结构(属性和操作)以及与其他类的关系。属性表示中包括可见性属性,如公有、私有或受保护。操作表示包括可见性操作名、参数列表、返回类型以及约束特征。
lock类的简洁表示:
对象图是一种对象及它们之间联系的图形表示。它展示了系统的详细状态,通常用于表示复杂的类图实例。在对象图中,类与对象之间的关系通过强弱不同的依赖关系来表示。依赖关系可以用虚线箭头表示,箭头指向被引用或包含的类。例如,驾驶员和汽车之间的关系就是依赖关系。
举个例子:假设有一个学生捡到了钱并交给了警察叔叔。这时,学生和警察叔叔之间的关系就是一种依赖关系。当学生将钱交给警察后,他们之间的联系就此结束。为了实现这种依赖关系,我们可以在学生类中添加一个交钱的方法,在警察类中添加一个收钱的方法。当调用学生的交钱方法时,就会自动调用警察的收钱方法。
作用关系(Association):
关联关系是一类比较强的关系,它们之间的联系通常较为持久和稳定。例如,学生离开家去上学这个过程,学生和家之间就形成了一种关联关系。单向关联和双向关联分别表示一个类知道或引用另一个类,而另一个类不知道或没有引用该类的情况。单向关联用带箭头的实线表示,箭头指向被引用或被包含的类;双向关联使用不带箭头的实线连接两个类。
再举一个例子:老师和学生之间的关系就是双向关联。小明的语文老师是张老师,而张老师的学生们包括小明。
包含关系(Inclusion)可以分为聚合(aggregation)和组合(composition)。聚合表示一个整体由多个部分组成,而各部分之间具有一定的独立性;组合表示一个整体与部分的关系紧密,部分不能脱离整体而存在。
其他图形表示还包括时序图、状态图、协作图、组件图和部署图等。这些图形表示可以帮助我们更好地理解系统中对象之间的动态行为和关系。