大象--Thinking in UML早知道 -- 007 -- 类图
类图
类图用于展示系统中的类及其相互之间的关系。
本质上说,类图是现实世界问题领域的抽象对象的结构化、概念化、逻辑化描述。在开始本节之前请读者回顾一下,在1.1.2面向过程的困难一节中,我们曾经谈到过面向对象的困难;而在1.2.7面向对象的困难解决了吗一节中又谈到了面向对象困难的解决。实际上,UML解决面向对象困难的方法源于面向对象方法中对类理解的三个层次观点,这三个层次是概念层、说明层和实现层。在UML中,从开始的需求到最终的设计类,类图也是围绕着这三个层次的观点来进行建模的。类图建模是先概念层而说明层,进而实现层这样一个随着抽象层次的逐步降低而逐步细化的过程。
概念层类图
概念层的观点认为,在这个层次的类图描述的是现实世界中问题领域的概念理解,类图中表达的类与现实世界的问题领域有着明显的对应关系,类之间的关系也与问题领域中实际事物的关系有着明显的对应关系。需要注意的是,概念层类图中的类和类关系和最终的实现类并不一定有直接和明显的对应关系。在概念层上,类图着重于对问题领域的概念化理解,而不是实现,因此类名称通常都是问题领域中实际事物的名称。概念层的类图是独立于实现语言和实现观点的。
回顾图1.9,概念层类图位于业务建模阶段。通常在这个阶段类图是以领域模型图,即业务实体图来表示的。图4.7展示了网上购物的业务实体图,这个类图表达了概念层的类观点。说明在问题领域中,网上购物主要由商品、定单、支付卡这几个关键类构成,这几个类的交互能够完成网上购物这个业务目标。
图4.7概念层类图
说明层类图
说明层的观点认为,在这个层次的类图考察的是类的接口而不是实现,类图中表达的类和类关系应当是对问题领域在接口抽象层次的描述。也就是说,这时候我们不必关心类最终是用什么语言编码的、是用什么设计模式设计的、是遵循什么标准的,我们所关心的只是这样一些类,它们通过接口进行交互,进而完成了问题领域中的业务目标。
说明层类图是搭建在现实世界和最终实现之间的一座桥梁。在这个阶段,类通常都非常粗略,虽然它表达了计算机的观点,但是在描述上却采用了近似现实世界的语言,以保证从现实世界到代码实现的过渡。
回顾图1.9,说明层类图位于概念模型阶段。在这个阶段,类图是以分析类和分析模型图来表示的。4.8展示了网上购物的分析类图,这个类图表达了从计算机的观点来说,网上购物这个业务目标是由哪些类来完成的,这些类的接口保证了这个业务目标的达成。
图4.8说明层类图
实现层类图
实现层观点认为,类是实现代码的描述,类图中的类直接映射到可执行代码。在这个层次上,类必须明确采用哪种实现语言、什么设计模式、什么通信标准、遵循什么规范等等。
实现层的类图大概是用得最普遍的,许多人在建模的时候根本没有概念层和说明层的类图而直接跳到实现层类图。原因不是他们确认对问题领域已经足够了解,并且设计经验十分丰富,而通常是不知道类图还有三个层次的观点。
回顾图1.9,实现层类图位于设计阶段。在这个阶段,类图可视为伪代码。甚至可以用工具直接将实现层类图生成可执行代码。实际上许多MDA建模工具就是通过模型来生成代码的,虽然Rose并非纯粹的MDA工具,不过Rose也可以从类图生成可执行代码。
图4.9展示了J2EE架构实现查询商品功能的类图。可以看到,到了实现层类图,类描述和类关系已经是伪代码级别了。