RoseRT中 Capsule 和 Class 的区别与联系
从系统设计时各自的用途来讲:在RoseRT中,Classes 表示的是系统中所要存储的信息,Classes负责存储和操作这些数据;Capsules 则是表示系统某个模块的与其他模块交互的动作,在设计的时候,经常用到 Capsules 的statement diagram 和 Structure Diagram,通过这两个图,我们很容易就可以理解系统功能。这也表明了,我们在使用Capsules时更关心的是行为和功能。
从他们内部结构来看:Capsule 有着和 Class 很多相似的属性:
1. 他们都有各自的方法和属性。
2. Capsule 有着和 Class 一样的关系:依赖、泛化以及聚合等。
但是,由于功能不同,导致了它们在以下的几个方面上存在着差异:
1. 在对外交互的时候,Class 使用的时 Public 的方法(operation),而 Capsule 则是使用 Public 的端口(Port)。类拥有Public型的成员函数,但是Capsule则没用,这就使得Class不能调用Capsule的方法,但是Capsule可以调用Class的方法。对于Capsule,如果你想它完成某项工作,则只能通过Port跟其交互。
2. Capsule 除了 Port 外是不存在公用的属性的(Public Attribute),但是对于Class 它拥有 Public、Protected 和 Private 属性。因为Capsule的独特性,它还拥有capsule roles, protected ports等属性。这是设计 Class 不会考虑到的。
3. 对于类,使用的其方法;对于 Capsule 则是互通消息。
4. 通常来说,Capsule 所要完成的工作不是一个方法就能解决的,当然Class 也有这种情况,但是 Capsule 将这些方法是完全封装起来了,不允许其他对象来做干涉的,而Class 则多是在其他 Class 或者 Capsule 来协同完成的。所以,Capsule 的行为特性主要看其状态,在不同的状态下遇到同样的信息所做出的反应也不同的。而设计Class 时则多无这一特性。
以上信息多翻译在IBM RoseRT Modeling Language.
______________________________________________________
From Jufy_W's blog http://www.cnblogs.com/jufy_w
浙公网安备 33010602011771号