引言:
1. abstract(抽象) 抽象是不能被直接实例化的类、用例、信号、其他类元或其他泛化元素,它也可以用来描述没有实现的操作。
摘要:
53.规范表示法(canonical notation)uml定义了规范表示法,它用单色线和文字表示任何模型。这就是uml模型的标准"出版格式",可用于印刷图。图形编辑工具可以扩展规范表示法并且提供交互能力。比如,一个工具提供突出屏幕中被选择元素的能力。其他交互能力包括模型中的导航和按照选择的特性过滤显示的模型。这种格式是暂时的,并且不受uml制约。交互显示减少了模棱两可的弊端。所以,uml标准......
摘要:
对象式java/j2me/code/ target=_blank>程序设计方法 作者:夏寒
本世纪60年代中期,对象式语言诞生,和以前传统的程序设计方法相比,对象式程序设计给我们开辟了全新的"视听"空间,对象式程序设计引进了异于以前过程式程序设计的概念和术语;怎样用对象式程序设计方法实现防火墙中的规则集...... 本世纪60年代中期,对象式语言诞生,和以前传统的程序设计方法相比......
第13章 术 语 大 全 (1)
1. abstract(抽象) 见abstract operation,generalizable element. 【程序编程相关:
http://www.myfaq.com】 抽象是不能被直接实例化的类.用例.信号.其他类元或其他泛化元素,它也可以用来描述没有实现的操作.反义词:concrete. 【推荐阅读:
脚本的DVD开发】 抽象类是不可被实例化的类,即它可以没有直接实例,这既可能是因为它的描述是不完整的(如缺少一个或多个操作的方法),也可能是因为即使它的描述是完整的它也不想被实例化.抽象类是为了以后说明.抽象类必须有可能含有实例的后代才能使用,一个抽象的叶类是没用的(它可以作为叶在框架中出现,但是最终它必须被说明). 【扩展信息:
directshow 中的注册文件类型(】语义 具体类可以没有任何抽象操作(否则,它必为抽象的),但是抽象类可以有具体操作.具体操作是可以被实现一次并在所有子类中不变地使用的操作.在它们的实现中,具体操作可以只使用声明它们的类所知道的特征(属性与操作).继承的目的之一即将这些操作在抽象的超类中分解以使得它们可以被所有的子类分享.一个具体操作可以是多态的,即后代类中的方法优先于它,但是它也可以不必是多态的,它可以是一个叶操作.一个所有操作都被实现的类可以是抽象的,但是这一点必须被明确声明.一个有着一个或多个未实现操作的类自然是抽象的. 同样的语义也适用于用例.抽象的用例定义了行为的片断,这个行为自己不能出现,但是它可以通过泛化.包括或扩展关系在具体用例的定义中出现.通过在抽象的用例中分解公用的行为,模型变得更小与易于理解. 类似的关系也存在于其他的类元与泛化元素中.表示法 抽象类或抽象操作的名字用斜体字表示.关键字abstract可以放置在位于名称下面或后面的特性表中,如account{abstract}.见class name.示例图13-1表示一个抽象类account,它有一个抽象操作computeinterest与一个具体操作deposite.两个具体子类已经被声明了.因为子类是具体的,所以它们每一个必须实现操作computeinterest.属性总是具体的. 图13-1 抽象与具体的类讨论 将一个类建模成抽象的或具体的,其间的差别并不像它第一次出现时那么清晰与基本.它更像有关模型的设计结果而不是继承特性.在设计的发展过程中,类的状态可能发生变化.如果将列举出所有可能性的子类加入到具体类中,那么这个具体类可以建模成抽象的.如果子类之间的差别被认为是不必要的且被删除,或者这些差别用属性值而不是用不同的子类表示,那么这个抽象类可以建模成具体的. 简化决定的方法之一是采纳以下设计准则:所有的非叶类必须是抽象的(除了某些为了以后说明的抽象叶类外,所有的叶类必须是具体的).这并不是uml的规则,它既可以被采用也可以不被采用,设计这个"抽象超类"规则的原因是超类上可继承的方法与具体类上的方法经常有不同的需求,这种需求并不能被单个方法很好地实现.超类中的方法被迫做两种事:定义能被所有后代观察到的通用例子与为特定类实现通用例子.但是这两个目标经常发生冲突.相反,一个非抽象的超类能被机械地分离到一个抽象的超类与一个具体的叶子类中.抽象的超类包含被所有子类继承的方法;具体的子类包含所有特定的可实例化类要求的方法.在抽象的超类规则后也允许在保持特定具体类型的变量或参数与保持着超类的任何后代的变量或参数之间存在完全的区别.图13-2 具体的超类产生的模糊性在图13-2中,考虑类letter的声明,它并没有遵循抽象超类规则.该类有一个getnextsentence操作,它返回下一个还没有读的句子的明文,还有resetcursor操作,它将鼠标置回开始处.而子类encryptedletter表示已经被加密的字母.操作getnextsentence重载被重载因为明文在被返回前必须要解密.操作的实现完全不同的.因为letter是一个具体超类,所以(非重载)是不可能的.普通letter类或encryptedletter子类中.抽象超类方法用于辨别抽象类letter(它既可能是加密的字母,也可能是未加密的字母)并且加入类nonencrypedletter以表示具体例子,如图13-3.在这个例子中,getnextsentence是一个被每个子类实现的抽象操作,resetcursor是一个在所有子类中相同的具体操作.这个模型是对称的.如果遵循抽象类规则,那么抽象类声明能从类层次中自动确定,并且在图中表示它也是多余的.声明一个抽象叶类一般是没用的,但有一个例外:当抽象类作为一组全局类作用域的属性与操作的通用命名空间时可以被声明.这种情况较少,大部分用于处理非面向对象语言的编程时,建议用户在大多数情况下不要用它.全局值通过引用全局依赖关系违反了面向对象设计的精神.单实例类可以以更扩展的方式提供同样的功能(可参见[gamma-95]). 图13-3 抽象超类避免模糊性2. abstract class(抽象类)抽象类是可能不会被实例化的类.见abstract.语义抽象类可能没有直接实例,可能有间接实例(通过它的具体后代).见 abstract 的讨论.3. abstract operation(抽象操作)抽象操作缺少实现,即它只有说明而没有方法.实现必须被具体后代类补充.见abstract,generalizable,inheritance,polymorphic.语义如果一个操作在类中被声明为抽象的,那么该操作缺少在类中的实现,且类本身也必须是抽象的.操作的实现必须由具体的后代来满足.如果类继承了一个操作的实现但是将操作声明是抽象的,那么抽象的声明就使类中被继承的方法无效.如果一个操作在类中被声明是具体的,那么类必须满足或继承从祖先那里得到的实现,这个实现可能是一个方法或调用事件.如果操作在类中根本没有被声明,那么类继承从它的祖先那里得到的操作声明与实现.操作可以作为方法或由调用事件触发的状态机转化而实现.每个类可以声明它自己的方法.操作的调用事件或者继承祖先的定义.表示法抽象操作的名称用斜体字表示,如图13-4,而关键字abstract可以放在操作特征标记后的特性表里.图13-4 讨论继承概念的最大用途是支持能被每个具体后代类有区别地实现的抽象操作....
下一页 摘要:
80.复合状态(composite state)包含并行(正交)或顺序(互斥的)子状态的状态。见复杂转换(complex transition) ,简单状态(simple state),状态(state)。语义组成状态可以使用"与"关系分解为并行子状态,或者通过"或"关系分解为互相排斥的互斥子状态。状态精化只能使用两种方法之一。其子状态还可以用两种方法之一进一步进行分解。如果一个顺序组成状态是活......