现在,我们回头看两种对象——学生和课程——探讨它们各自的行为。学生的行为(当然是与大学学习相关的)可能包括
l 选修一门课程
l 退选一门课程
l 选择主修方向(major field of study)
l 选择导师(advisor)
l 告诉你他(或她)的GPA
l 告诉你他(或她)是否已选修某门课程,如果选修了该门课程,是在什么时候修的,哪位教授上课,以及得到的分数。
有些难以想象,类似课程这样的无生命的概念性对象会做出什么行为,但如果把课程当作一种生命体,可以想见一门课程的行为会是
l 允许学生选修
l 判断指定的学生是否已经选修
l 告诉你已经有多少学生选修,反过来说,还有多少名额空缺
l 告诉你需要什么先修课程
l 告诉你课程有效学时是多少
l 告诉你本学期哪位教授将上这门课
等等。
当特指软件对象时,我们把对象的行为或称操作(operations),定义为用以访问对象的attribute(数据)和修改/维护attribute值(数据)的方法。
花点时间回顾上文所列的学生行为,可以看到每种操作都与学生的一个或多个attribrte有关。例如:
l “告诉你他(或她)的GPA”与“访问学生的GPA attribute”相关
l “选择主修方向”与“修改学生的主修attribute”相关
l “选修一门课程”与“修改学生的当前课程列表”相关
我们已经知道,对象的attribute值集合定义了对象的状态,现在可以看到,操作能够修改对象状态。例如,定义一位尚未选定主修方向的学生为“未选定方向”的学生。调用这样一个学生对象的“选择主修方向”方法,将导致对象更新其“主修”attribute,反映出刚选定的主修方向。然后,学生的状态就从“未选定方向”变更到“已选定方向”。
从另一种角度来考虑,对象操作也可以看作是可以向对象要求提供的服务。例如,课程对象提供一种服务,该服务提供当前选修该课程的学生列表(花名册)。
在用C#这样的语言编写对象时,使用更严格的编程语言术语“method(方法)”来表示“操作”,而术语“操作”则被用于表示概念意义上的行为。





