2.4 动态语义
OOD启思录
除了固定的数据和行为的描述之外,对象在运行时还随着其数据描述的动态取值具有局部状态(即当时的“快照”)。类的对象的所有可能状态的集合以及状态间合法的变换称为类的动态语义(dynamic semantics)。动态语义允许对象对其生命期的两个不同时候发来的相同消息作出不同的回应。例如,看这个抽象例子:
Method junk for the class X
if (local state #1) then
do something
else if (local state #2) then
do something different
End Method
对象的动态语义是任何面向对象设计的有机组成部分。一般而言,任何具有有意义动态语义的类都应当用一个状态转换图(参见图2.8)来把这些动态语义归档。具有有意义动态语义的类是指具有有限状态和精确定义的状态变换的类。图2.9所示的状态转换图详细描述了某个操作系统中进程的动态语义。它表明,进程的状态可以是就绪、当前进程、阻塞、睡眠和退出。此外,进程创建时只能是就绪状态,它们只能在退出状态被销毁,它们只能在当前进程状态时
才能退出。这些信息对于为类及其对象创建测试集(test suite)非常有用。有些设计者偶尔会把动态语义建模成静态语义,这会导致类的数目大量膨胀——这是面向对象范型中的一个严重问题。我们将在第5章讨论继承关系的时候探讨这个问题以及避免这个问题的方法。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
时间: 2024-08-04 14:33:52