类图的作用与画图规范

一、概念

类图是面向对象编程的起点和依据。它是最常用的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生成的类图中匿名内部类没有任何形式的体现

静态内部类

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ariel_欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值