UML(Unified Modeling Language)统一建模语言
由于UML类图的精确、无歧义、完整的建模,通常我们通过使用UML类图来详细的描述系统中的对象和他们的关系。认识UML类图也能帮助我们快速了解、理清系统中对象之间的关系
类图表示方式
在UML类图中,包含类名、属性和方法三块如下图所示,包含了name、age、email三个属性以及方法userInfo()
属性和方法前面的符号表示了可见性,UML类图中表示可见性的符号如下
+
: 表示public-
: 表示private#
: 表示protected(friendly也归入这类)
完整的属性表示方式: 可见性 属性名 : 类型 [= 缺省值] 中括号表示可选
完整的方法表示方式: 可见性 方法名(参数列表) [ : 返回类型]中括号表示可选
类与类之间关系的表示方式
实现关系
空心三角形虚线表示
如图可以得知:A类实现了B类,B类是一个抽象概念
泛化关系
空心三角形实线表示
泛化关系表示对类的一个细分,代码中表现为继承非抽象类
聚合关系
空心菱形实线表示
聚合关系表现为整体与部分之间的弱依赖关系,整体不存在了部分依赖可以独立存在,也就是说部分和整理的生命周期是独立的。
如: 班级不存在了,学生仍然能够单独存在
代码中的体现为: 班级类中有学生的集合对象
组合关系
实心菱形实线表示
组合关系表现为整体与部分之间的强依赖关系,整体不存在了,部分也就不存在了
如: 公司与部门之间的关系,部门是公司的下属机构,如果公司不存在了部门也就没法独立存在
代码中的体现为: 通过公司类构造函数中实例化部门对象
关联关系
实线表示
关联关系默认不强调方向,表示对象间相互都知道;如果特别强调方向,如下图表示A知道B,但B不知道A
关联关系描述不同类的对象之间的结构关系;一般用来定义对象之间静态的、天然的结构。所以关联关系是一种强关联
的关系
在代码中:关联对象通常以成员变量的形式实现
依赖关系
箭头虚线表示
在代码中:表示一个对象在运行期间会用到另一个对象的关系
显然,依赖也有方向,双向依赖是一种非常糟糕的结构,我们总是应该保持单向依赖,杜绝双向依赖的产生.
在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系除了临时知道对方外,还“使用”对方的方法和属性.