| Rational Rose 98教材 | 第六章 属性和操作 | 第二节 增加操作 |
交互图中的消息通常映射到接收消息的类的操作。然而,的确有些类的消息不会成为操作。如果一个类是图形用户界面中的占位符之类的边界类,消息就成了图形用户界面中的语法。尽管这些行为被控件本身执行,这些类型的消息通常描绘成图形用户界面的控制(如按钮等)。例如,教授必须输入口令以进入Add a CourseOffering 的scenario,这可以描绘成一个ProfessorCourseOptions的边界类。这永远也不能成为一个用户界面类——这就象窗口中的文本框。从actors来或发送到actor去的消息也通常要经过特殊考虑。如果一个发送到actor 或从actor接收来的消息描绘一个物理的人,则消息是一个人为过程的语法并组合到一个用户指南中,而不是一个操作,尽管并没有为人的操作创建一幕细节。在Add a CourseOffering的scenario中,实际上教授输入口令的操作来激活系统的功能很重要,必须写到用户手册中去的。如果发送到actor或从actor接收消息的对象是外部系统,则类是掌握着和外部通信的协议。这种情况消息映射到类的一个操作。
根据类的操作操作必须取名字,不是类请求执行什么功能。例如,增加一个学生到课程的操作叫做addStudent()。另外,操作的名字并不反映操作的实现,因此在过些时候实现可能就会改变。例如,CourseOffering对象最大有10个学生和它联系,在某一时刻你就需要问CourseOffering对象有多少学生登记了。现在,通过浏览CourseOffering 对象到StudentInformation对象的连接来计算这个数字。一个名叫calculateNumberOfStudents()的操作意味着解决这个计算问题。尽管现在是这样的,但并不一定都是正确的(明年你就可能把这个实现存在一个文件的值里)。
在Rational Rose中映射消息和新的操作
1. 如果还没有类的对象,则把一个对象分配给一个类;
2. 在消息箭头上单击鼠标右键,弹出菜单;
3. 选择<<new operation>>菜单,打开Operation Specification窗口;
4. 在Operation Specification窗口中键入操作的名字;
5. 单击OK关闭Operation Specification窗口;
6. 在消息箭头上单击鼠标右键,弹出菜单;
7. 从操作列表里选择操作;
注:如果已经创建了该操作,就不需要重新创建了,仅仅是在操作列表里选择就可以了。
带有操作的时序图如图6-1所示。

操作也可以在交互图里描述,尽管不是所有的scenarios都描绘成图,这也适用于那些创建来协助别的操作的操作。例如课程在增加一个教授作为教师前必须检查是否有一个指定的教授来教这门课。叫做validateProfessor()的操作用来完成这个功能。
在Rational Rose中创建操作
1. 在浏览器中选中一个类,弹出菜单;
2. 选择New:Operation菜单,浏览器中增加一个叫作opname的操作;
3. 键入操作的名字;
Course类中的操作如图6-2。
