UML软件工程组织

有关顺序图的问题2002/10/19

teacher@uml.net.cn

    --------------------------------------------------------------------------------
老师:

你好。
有一些问题请教你,看图:

1 单向关联与双响关联:
计费器向控制对象发送信息,内涵计费器的时钟,控制对象给“时钟信息”对象发送校验时钟指令,当计费器时钟与标准时钟相差较大时,要向计费器发送校时命令。
问题:由谁向计费器发送校时命令,控制对象?“时钟信息”对象?
(1) 如果由控制对象发出,则两者是双向关联,还有一些其它命令(未标出)也要向计费器发送,我觉得这种关系不妥,会导致计费器类与控制类很难设计
(2) 如果由“时钟信息”对象发出,则其它对象也要这么做(因为由很多命令),其它对象都要与计费器关联,这些对象的设计也比较难,计费器的类也很难设计,违背了对象复用的原则
(3) 能不能把计费器拆成两个类:一个管发送信息(计费状态信息,计费记录信息),一个管接收信息(校时、挂失等)?实际上“真实计费器”是通过串口向系统发送信息,系统收到windows消息后把该信息取出再分析,如是否需要校时,是否需要挂失那张ic卡

注:图中虚线消息不是返回消息,是我特意给你看的

回答:“由控制对象发出”比较合理,因为控制类一般用来封装业务逻辑,控制类和实体类之间一般是单向关联“控制对象操作实体对象”。
的确“还有一些其它命令(未标出)也要向计费器发送”,这也就是为什么建立控制类的原因,封装业务逻辑,业务逻辑集中管理、应用,便于维护和复用。
这样会导致“控制类中有许多操作”,没关系,用到那个调用那个就行了,其他得并不会干扰你的工作。

2 关联与依赖

控制对象向“上网记录”对象发送保存上网记录save_website,然后“上网记录”对象调用com+接口的save_website(list1)

问题:“上网记录”对象与com+对象是什么关系:关联? 依赖?
com+是在系统启动时创建,是一个全局变量,我认为是依赖
如何界定关联与依赖?

回答:关联的定义:描述类元之间的实例联接,即通过类的属性建立起来的关系,如公司和雇员,用户和口令

依赖的定义:两个元素之间的一种关系,其中一个元素(提供者)的变化会影响到另一个元素(客户)。关联和泛化关系满足依赖关系的一般定义,但是它们有更为独立的语义,所以单独抽取出来。
所以从以上定义可以看出:“上网记录”对象与com+对象是依赖关系,更具体的讲“是函数调用关系”

3 控制对象的责任
控制对象向ic卡发送是否ic卡计费出现异常,如果异常,则将此异常报告服务器(即com+的save errrlogdb)
问题:应该由谁去报告:ic卡?控制对象?

我理解双方都可以报告,但那种方式更合理呢?

回答:由控制对象报告更合理,因为现在是一个用例实现的过程。当然控制对象要调用ic卡的check操作进行具体的判断,异常的直接来源还是ic卡,但是因为是具体的功能实现,所以有关业务逻辑应该有控制对象来操作。

李先生
2002.10.19

顺序图如下: