上一节我们学会了怎么把需求分解后提炼成类图,其中类图最难让人掌握的点就是类跟类的关系怎么画,我们上节把类之间的六种关系通过现实中的一些例子进行了说明,这六种关系是:
关联
继承
实现
聚合
组合
依赖
在做的各位读者应该大部分都是需要写代码的编程人士,那么心里一定会有一个疑问:类的这些关系看这些例子我是明白了,但在代码里对应什么结构呢?继承、实现还好说,编程语言里都有对应的关键字。可是依赖、聚合、组合这些关系的区别很微妙,编程语言里也没固定的关键字,我用代码该怎么实现这些关系?
这些疑问我一开始也有,而且个人的感受是,如果你在代码层面搞不清楚这些关系怎么实现,想画类图来表达业务结构时大概率也不能把它们的关系表达对。这对业务的结构分析其实影响不大,可是想继续让它能指导我们软件代码的设计,就必须把这些关系理清楚、画对了才行。
所以为了解决这些疑虑,让我们画的类图不仅能分析业务,也能指导未来的软件代码的设计,本节我们讲一下这些表示类的关系例子用代码怎么实现。例子都很简单,使用的是Java语言写的的伪代码,无论你是不是Java程序员都能看懂。
选用Java语言的有两个原因:首先大部分人都能看到Java的基础语法,其次是在我会的语言里Java的语法能用最少的代码表达清楚这些关系,不需要我过多地去用文字解释。好了,语言选择上我们不过多着墨,没特殊情况的话本节会是我们课程里唯一需要用代码演示说明的章节。
我们按照文章开头列举六种类关系的先后顺序,逐个做一下说明。
在继续本节的内容前再提醒一下苹果手机的用户,因为苹果税的存在本专栏在微信直接订阅,价格会高于安卓用户,所以专栏在小报童同步更新,苹果手机用户可以通过扫描二维码在小报童订阅阅读,规避额外开销。
关联/引用关系
A类有一个成员变量引用了B,则是关联关系。同时我们写代码时也经常把这种情况叫做A引用了B。 举个详细点的例子,每个User对象都有一个收货地址的成员变量,收货地址的详细信息则存储在Adress对象中这个例子用代码表示如下: