说的这个问题,那么这个问题呢咱们就讨论一下, 它里面又有类图又有对象图,这是不是的观点带进来的。
那么该这个模型元素呢又有类,又有对象, 类跟对象不是一个抽象层次的概念,
那么类图是描述了系统中有哪些类, 类里面有哪些关联。
而对象图呢是 它就成为了是对象以及对象之间的链的图层的,看看这儿
会引起什么问题?实际上会引起 体系结构层次的混乱。
那么咱们举一个例子看啊, 那么这从三层来看,因为我们对象层是
M0 , 模型层呢是 M1 ,这就是我们为系统开发的一个模型。
那么 UML 呢是在元模型层在 M2 这层 次下,那么
UML 又有类图又有对象图, 那么类图里面用到的概念有关联有类,
好,那么看这个概念怎么样把它给建立模型,怎么样把它实体化。
我们用关联和类
这两个概念呢建立了我们系统模型中的教师跟课程这两个类,
教师跟课程之间呢有一个关联来表示 这个课程是由哪个老师作为主讲。
这是我们模型中的两个概念。
那么这在哪一层呢?是在模型层。
当我们把教师跟课程之间 这两个类给它实体化的时候,我们可以创建
一个教师呢叫做史密斯,一门课程呢叫做计算概论。
这只是用户对象层的模型,下降一层了在 M0。
那么教师跟课程之间这个关联呢,被实体化成为 史密斯这位老师呢,来主讲计算概论这门课。
这是链,链的一个 好,这个层次很清楚,很清楚。
再看看那么 UML 好在它的元模型层当中
提供了对象和链这两个,这两个概念是用来描述实例的。
我们来看这会产生什么结果,我们把对象这个概念
给它实体化,那么就
创建了一位教师叫做玛丽啊, 一门课程呢叫做图论,是吧。
因为它比这个元模型层呢,下降了一个层次, 所以它也在模型层里面。
那么就说我们有 UML 可以定义我们系统模型当中的 两个对象,一个对象叫做
玛丽,一个对象叫做图论,是吧?在玛丽这个表示跟图论之间有一条链,
是吧?有一条链,表示玛丽呢来主讲图论这门课。
好了,问题来了,问题来了。
那么 史密斯这位老师主讲计算概论的哪个层次呢? 是在用户对象层,
那么玛丽也是一位老师,图论也是一门课程,偏偏就到了模型层。
把这个体系结构层次就搞混乱了。
那么我这张图呢,曾经 给这个 iii
的一位负责人在讨论,当时我就提出来,我说你认为 这个
UML 又提供了类图,又提供了对象图,
这种做法是合理的吗?啊他就跟我讲起来了,他说这个是这个这个怎么样的,给我讲。
我说我就把这个图 摆出来给他看,看了以后他也不得不承认是有问题。
这是一个问题啊。
好,这个问题呢,我还跟那个 UML 的发起人之一,这个 Jacobson
讨论过,当时在北京的时候,我也是问的同样的问题。
我说你认为 UML 又提供了类图又提供了对象图,这种做法是
合理的吗?诶 Jacobson
呢他非常痛快, 他的回答是 No,I don't think so。
我不这样认为,然后他就给我讲了 当时在提交这个提案的时候吧,
我呢做了很多的争论,这个 争论呢后来就感到有点头昏脑涨,
后来我就累了,实在累了,我就闭上眼睛我不再争论了。
可见这个事情呢在这个 UML 里面也是有不同意见啊。
实际上呢,到了 UML2 的时候呢,
把这个对象图啊几乎就是名存实亡了, 那么最后找不到一句话解释什么是对象图,
也找不到一句话也是怎么来用这个对象图了, 只剩下那么一个单词了,一个单词了。
那么同样面临呢,还有这个当时的这个协作图到 UML2
改名叫做通信图,那么它呢只剩下一页多一点点这么一个篇幅了。
这是它的一些理论上的问题,但是呢这个规范化标准化的这个问题上,
往往是牵涉到各方面的这个利益,
所以在我们一直到现在呢,虽然名存实亡,但是呢也没有彻底的从 UML 当中消除啊。
所以我们学习任何东西呢,还是要有自己的独立思考,
不要认为写到书里面,或者写到什么规范里面就一切都是好的。