什么是UML?
UML,即统一建模语言(Unified Modeling Language),是描述软件设计蓝图的语言,UML的作用是体现面向对象分析和设计(OOA/D)。首先它是”可视化语言“就是说它把设计转化成大家都能看懂的东西,建模即建立模型,模型指软件的模型,这里需要注意UML并不是OOA/D,通过OOA/D我们讲将需求转化为软件模型,我们只是利用UML来将OOA/D表示出来,转化成我们能看懂的东西,本篇文章也仅针对小白简单介绍UML类图到底怎么画?
UML类图要画些什么?
UML类图把面向对象软件设计可视化,就是把对象画出来,然后把对象之间的关系画出来,由此自然就“描述了软件系统的结构”画对象时要反映类的结构,就是要将对象的属性、操作画出来。
接下来我们来看看类图中都有些什么,
- 从上到下分为三部分,分别是类名、属性和操作。类名是必须有的。
- 类如果有属性,则每一个属性都必须有一个名字,另外还可以有其它的描述信息,如可见性、数据类型、缺省值等
- 类如果有操作,则每一个操作也都有一个名字,其它可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等
类名很简单,就是类的名字,只是注意斜体表示这个类为抽象类。往下属性、操作和职责各占一栏,每个属性占一行,先写这个属性是公开的(public(+))、私密的(private(-))、受到保护的(protected(#))还是包(package(~)),属性后面加上名字,在后面如果有缺省值(缺省值就是有一些参数的值在每次调用函数时都相同,就定义时定下这个值,可以使书写变得简单(在编译时,缺省值有编译器自动插入))就加上。每个操作也占一行开头和属性一样(+-#~)和名字(斜体表示这个操作为抽象操作),然后是在括号中的参数列表,再后” :“后加返回值类型。最后一栏写职责,职责指类承担的责任和义务。在矩形框中最后一栏中写明类的职责。
例:
类图中的事物及解释
- 接口:一组操作的集合,只有操作的声明而没有实现
- 抽象类:不能被实例化的类,一般至少包含一个抽象操作
- 模版类:一种参数化的类,在编译时把模版参数绑定到不同的数据类型,从而产生不同的类
类图中的关系
把对象画出来之后,就要把对象之间的关系画出来
关联(Association):
是一种拥有的关系, 它使一个类知道另一个类的属性和方法;是双向的,双向的关联可以有两个箭头或者没有箭头,描述了类的结构之间的关系。具有方向、名字、角色和多重性等信息。一般的关 联关系语义较弱。也有两种语义较强,分别是聚合与组合
箭头及指向:带普通箭头的实心线(也可以没有线),指向双方
直接关联(Directed Association):
是一种拥有的关系, 它使一个类知道另一个类的属性和方法;是单向的。单向的关联有一个箭头。
箭头及指向:单向的关联有一个箭头。
聚合(Aggregation):
特殊关联关系,指明一个聚集(整体)和组成部分之间的关系,类图包含有事物和关系,类图不存在了,事物和关系还可用于其它的类图
箭头及指向:带空心菱形的实心线,菱形指向整体
组合关系(合成关系)(Composition):
语义更强的聚合,部分和整体具有相同的生命周期,类与关联关系之间有组合关系,类不存在了,则相应的关联关系也不存在
箭头及指向:带空心菱形的实心线,菱形指向整体
依赖(Dependency):
是一种使用的关系, 即一个类的实现需要另一个类的协助, 所以要尽量不使用双向的互相依赖.
箭头及指向:带普通箭头的实心线,指向被拥有者
泛化(Generalization):
表示一个更泛化的元素和一个更具体的元素之间的关系,现实世界中一般与特殊关系就是最好的表现。平常讲的继承就属于泛化。
箭头及指向:带三角箭头的实线,箭头指向父类
接口实现(Interface Realization):
是一种类与接口的关系, 表示类是接口所有特征和行为的实现.,将接口的方法实现。
箭头及指向:带三角箭头的虚线,箭头指向接口