类图的作用与画图规范
Posted Ariel_欢
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类图的作用与画图规范相关的知识,希望对你有一定的参考价值。
一、概念
类图是面向对象编程的起点和依据。它是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系,它用于描述系统的结构化设计。
二、类图的作用
类图用于描述系统中所包含的类以及它们之间的相互关系,帮助我们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。
三、什么时候画类图
类图主要用在面向对象软件开发的分析和设计阶段,描述系统的静态结构。类图中包含从用户的客观世界模型中抽象出来的类、类的内部结构和类与类之间的关系。它是构建其他设计模型的基础,没有类图,就没有对象图、状态图、协作图等其他UMI动态模型图也就无法表示系统的动态行为。
四、类图规范
1、格式
- 接口:
- 抽象类
- 类
说明:
- 接口一定有 <<interface>> 的标识,接口中的方法必须斜体(默认都是抽象方法)
- 抽象类名和抽象方法必须斜体,非抽象方法不斜体
- 注意访问控制符、返回值、参数等格式的正确性
- 类中属性、方法要描述全面
- 类中使用注解或者new的方式声明的其他类的成员变量也是该类的属性:
- 原因一:对此类本身而言,此类的类内结构包括属性(成员变量)和方法(成员方法)
- 原因二:对类间关系而言,虽然这个类与其他类(这个类声明其他类对象)之间有关联(或其他关系),但是这个关系是体现在类间的。
- 类图中要标注使用的设计模式
2、类间关系
种类:
- 继承 实线+空心三角 继承父类
- 实现 虚线+空心三角 实现接口
- 组合 实线+实心菱形 成员变量
- 聚合 实线+空心菱形 成员变量
- 关联 实线+箭头 成员变量
- 依赖 虚线+箭头 局部变量、方法的参数或者对静态方法的调用
详情见博客:UML六种关系在代码中的体现你真的清楚吗?_Ariel_欢的博客-CSDN博客
3.标准:
- 1.类间关系的格式与描述要做到准确无误,紧密贴合代码,与代码保持一致。
- 2.符合UML规范。
- 3.在UML基础上,不能有二义性,图要能表达出来明确的含义。
- 4.统一,整体看着整洁,一致,比如关系:继承和实现关系纵向画,其他关系横向画。
4.常见误区:
①类中包含其他类的对象作为成员变量,这个成员变量也是类的属性
错误的:
②类图中方法名要按照编码规范进行命名,以此保证可以通过英文方法名便可知道方法的作用和含义,不需要加中文注释。
对于代码中的注释,是要详细写清楚实现逻辑的,所以详细的注释在代码中体现即可。
③配置文件在类图中不需要体现,eg:yml,properties,xml
五、验收规范
1、类的层次分为三层
注:为使程序灵活、可扩展、可复用的角度出发,将程序service层架构设为3层,接口 -> 抽象类 -> 实现类。
至于为什么有了接口还要增加一层抽象类?
观点1:抽象类是接口与实现类之间的桥梁。
让抽象类去实现接口,而不是每个实现类去实现接口,实现类一致的行为(或者说大部分一致的行为)在抽象类中进行实现,而不一致的行为(或者一小部分不一致的行为),在抽象类中写成抽象方法,让子类去重写,减少子类重写接口所有方法的负担。
以下是举例类图:
(使用抽象类前)
(使用抽象类后)
注意:
类图中的接口:
①接口名要加上<<interface>>
②接口中的方法必须是斜体的
抽象类:
①抽象类的名称必须是斜体的;
②抽象类中的抽象方法必须是斜体的,非抽象方法是不用斜体的。
2、类图规范
- 类、接口名都要有意义
- 访问控制符要正确
- 参数、返回值类型格式要正确
例如:
3、类、接口间关系是否描述准确
- 注意每种关系的不同表现形式
- 依赖关系是最弱的关系,两个类之间是否还有比依赖强的关系,在画类图时,需要考虑关系在代码中的体现。
4、接口与类的设计原则
接口:接口隔离原则
接口应该尽量细化,一个接口对应一个功能模块。使接口轻便灵活,而不是臃肿不堪。要求“尽量使用多个专门的接口”,专门的接口是指提供给每个模块的都应该是单一接口(即每个模块对应一个接口),而不是建立一个庞大臃肿的接口来容纳所有客户端访问。
类:单一职责原则
代码中的具体体现,一个类中只能有一个 public 方法,而其他 private 方法都是为这一个 public 方法服务。也就是,对于外界来说,只能有一个方法仅供外界访问。
六、思考
1.类中静态不可变属性如何表示?
只表示访问权限修饰符即可。
2.方法入参和返回值都是泛型如何表示?
3.自定义注解用什么类来表示?
有待研究
4.内部类如何表示?
成员内部类:
局部内部类:没有单独的表示方法
匿名内部类:idea生成的类图中匿名内部类没有任何形式的体现
静态内部类
以上是关于类图的作用与画图规范的主要内容,如果未能解决你的问题,请参考以下文章