类图
描述类、接口及它们之间关系的图,是一种静态模型。类图是面向对象系统建模中最常用和最基本的图之一,其他许多图,如状态图、组件图和配置图的那个都是在类图的基础上进一步描述了系统其他方面的特性。
一、类表示:
二、接口:
如果想要声明具体类应该实现的方法,但因为一个继承关系而不想使用抽象类,那么可以使用接口。模型元素之间的协作通过接口实现。接口是一组没有相应方法是现代额操作,是对对象行为的描述,但是并不给出对象的实现和状态。接口只包含就操作而不包含属性,一个类可以实实现多个接口。有构造性表示法和球形表示法两种 。
三、关系:
1.关联:类与类之间的联接,它使一个类知道另一个类的属性和方法。(关联名、导航、角色、多重性、聚合、组合)
表示方法:用 实线+箭头, 箭头指向被使用的类。
(1)关联名:
(2)导航
单向:
双向:
(3)角色
(4)多重性(一个班级可以有多个学生,但是一个学生只属于一个班级)
(5)聚合:是关联关系的一种,是强的关联关系。聚合关系是整体和个体的关系。关联关系的两个类处于同一层次上,而聚合关系两个类处于不同的层次,一个是整体,一个是部分。
表示方法:空心菱形+实线+箭头,箭头指向部分。
表示方法:实心菱形+实线+箭头 2.依赖:是类与类之间的连接,表示一个类依赖于另一个类的定义。例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。
表示方法:虚线+箭头 箭头指向被依赖的一方,也就是指向局部变量。
3.泛化:
4.实现:
用于规定规格说明与其实现之间的关系,通常用在接口以及实现该接口的类之间,以及用例和实现该用例的协作之间。
表示方法:末端带有空心三角形的虚线,带有空心三角形的那一段执向被实现元素。
5.泛化与实现异同:
同:都可以将一般描述和具体描述联系起来。
不同:泛化将同一语义层上的元素连接起来,并且通常在同一模型内,而实现将不同语义层的元素连接起来,建立在不同的模型内
类图画法:
(1)抽象得到类
(2)得到方法
(3)表达类关系,能组合,不用聚合,用聚合不关联
(4)关系修饰
【机房收费系统类图】
对象图
与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。描述了参与交互的各个对象在交互过程中某一时刻的状态。可以认为对象图是类图在某一时刻的实例。
类图与对象图比较
类图 |
对象图 |
3个分栏:名称,属性,操作 |
2个分栏,名称和属性,没有操作 |
名称分栏中只有类名,有时可加上包名 |
“对象名:类名”,“:类名”,“对象名” |
图形表示中包含所有属性的特征,可包含操作 |
包含属性当前值等一部分特征,不含操作,有下划线 |
可用关联连接,用名称、多重性、角色和约束等特征定义 |
链连接,链可有名称、角色,无多重性,所有链一对一关系 |
【机房收费系统对象图】
一般用户:
操作员:
管理员:
包图
包图是在 UML 中用类似于文件夹的符号表示的模型元素的组合,意思就是将类分组。系统中的每个元素都只能为一个包所有,一个包可嵌套在另一个包中。
包图元素可以有Public或Private可见性。在元素名称前加“+”“-”,为Public和Private可见性。
当一个包将另一个包导入时,该包里的元素能够使用被导入包里的元素,而不必再使用时通过包名制定其中的元素。导入包时,只有目标包里的Public元素是可用的。
公共导入和私有导入:import和access表示。
具体详见:【UML九种图系列】之包图和类图
【机房收费系统包图】
初次画图,有不对的地方欢迎指出。