首页> 中文学位 >对象代理程序设计语言研究
【6h】

对象代理程序设计语言研究

代理获取

目录

声明

摘要

图表目录

第一章绪论

1.1研究背景

1.1.1角色模型

1.1.2面向方面程序设计

1.2研究现状

1.2.1基于角色模型的程序设计语言

1.2.2角色模型与面向方面程序设计的融合

1.2.3语言的运行时结构

1.2.4动态程序设计语言

1.3本文的主要工作

1.3.1研究内容

1.3.2本文安排

第二章基于对象代理模型的程序设计

2.1对象代理模型

2.1.1代理类和代理对象

2.1.2代理继承语义

2.1.3代理对象的创建

2.1.4更新迁移机制

2.2对象代理语言ODPL

2.2.1开发案例

2.3基于选择型代理类的程序设计

2.3.1基本类

2.3.2利用选择型代理类实现功能扩展

2.3.3利用选择型代理类实现多重分类

2.3.4利用选择型代理类实现类型转换

2.4基于联合型代理类的程序设计

2.5基于连接型代理类的程序设计

2.6基于分组型代理类的程序设计

2.6.1利用分组型代理类实现统一管理

2.6.2利用分组型代理类实现内部交互

2.6.3分组型代理类与其它类型代理类的主要差异

2.7源类与代理类的融合

2.8其它开发案例

2.8.1案例一:链表

2.8.2案例二:观察者模式

2.9本章小结

第三章对象代理语言ODPL的语法结构

3.1语法描述方式简介

3.2程序的基本结构

3.2.1源类与代理类

3.2.2源对象与代理对象

3.3类的结构

3.3.1基类的结构

3.3.2代理类的结构

3.3.3代理规范

3.3.4代理类的源类

3.4代理继承规范

3.4.1代理继承

3.4.2选择型代理类的代理继承规范

3.4.3联合型代理类的代理继承规范

3.4.4连接型代理类的代理继承规范

3.5 SwitchTo切换操作

3.5.1切换操作

3.5.2 SwitchTo切换操作的基本语法

3.5.3 SwitchTo切换操作中的参数映射

3.6 SwitchFrom切换操作

3.6.1 SwitchFrom切换操作的基本语法

3.6.2源方法调用

3.6.3 SwitchFrom切换操作中的参数映射

3.6.4 Before与After切换操作

3.6.5切换操作的优先级

3.7对象的创建与绑定

3.7.1基类对象的创建

3.7.2通过构造器显式创建代理对象

3.7.3通过创建条件自动创建代理对象

3.7.4通过引用迁移隐式创建代理对象

3.7.5代理类的激活

3.8分组型代理类

3.8.1分组型代理类的代理规范

3.8.2分组型代理对象的创建与绑定

3.8.3分组型代理对象上的属性访问与消息调用

3.9本章小结

第四章对象代理语言ODPL的操作语义

4.1 0DPL操作语义的基本定义

4.1.1对象代理运算

4.1.2类与对象的基本结构

4.2 ODPL中的基本操作

4.2.1上下文环境的更新规则

4.2.2基于代理继承关系的对象检索

4.2.3对象的创建与绑定

4.2.4类的部署与撤销

4.2.5检查代理对象的创建与销毁条件

4.3 0DPL中的属性访问与方法调用

4.3.1一些基本函数的定义

4.3.2基类对象上的属性访问与方法调用

4.3.3普通型代理对象上的属性访问与方法调用

4.3.4分组型代理对象上的属性访问与方法调用

4.4本章小结

第五章对象代理语言ODPL的实现机制

5.1关于不同功能实现机制的讨论

5.1.1代理对象向源对象的消息转发机制

5.1.2源对象向代理对象的消息转发机制

5.1.3代理对象的自动创建与销毁机制

5.2基于前置对象的实现机制

5.2.1为对象设置前置对象

5.2.2利用前置对象动态关联代理对象

5.3利用前置对象实现复杂代理继承体系

5.3.1代理链的实现

5.3.2代理树的实现

5.3.3多源代理对象与源对象的绑定

5.4对Self指针的处理

5.5源类与代理类融合功能的实现

5.5.1融合操作的基本执行流程

5.5.2融合操作后的代理对象关联

5.6 ODPL原型系统

5.6.1 ODPL原型系统的基本架构

5.6.2案例分析及实现要点说明

5.7本章小结

第六章使用ODPL支持面向环境程序设计

6.1面向环境程序设计

6.2开发案例:利用上下文环境改变对象行为

6.3基于前置对象实现面向环境程序设计

6.3.1基于前置对象的消息传递

6.3.2上下文环境的退出

6.3.3静态与动态上下文环境

6.4本章小结

第七章总结与展望

7.1本文总结

7.2未来工作

参考文献

攻读博士学位期间发表的论文及科研成果目录

致谢

展开▼

摘要

OOP语言虽然为提高软件模块化程度发挥了极大作用,但其局限性也越来越多地受到关注,它们大多都是由于其数据封装所导致的对象灵活性缺失而造成的。为了解决这些问题,研究人员逐渐设计开发了一些新的程序设计语言,例如基于角色模型的程序设计语言、面向方面程序设计语言、动态程序设计语言等等。这些语言拥有各自不同的功能特征和运行机制,能够分别改善传统OOP语言的若干局限,但各自独立的编程模型又为开发人员的使用带来了不便。希望能够基于一种统一的编程模型来改善OOP模型中的局限性,使得程序设计语言能够更加强大、灵活、动态。 对象代理模型是一种在面向对象系统中融入了代理机制的数据模型,它在对象创建、操纵、组合等方面所表现出的多样性和灵活性正好可以作为这样一种底层模型,为所期望的语言功能提供一种统一的功能框架或运行基础。本文对基于对象代理模型的程序设计语言ODPL的设计和实现进行了深入研究,其中研究的内容和创新工作主要包括以下几个方面。 (1)将对象代理模型从数据库领域移植到程序设计领域 对象代理模型用于改善面向对象数据库领域对复杂数据的建模、存储、查询等需求,增强了复杂数据的表现多样性和灵活性。本文基于对象代理模型的功能特征,结合OOP领域的技术现状,将该模型应用于程序设计领域,设计实现了对象代理语言ODPL。该语言能够改善由于OOP模型的数据封装性所导致的对象灵活性缺失问题,能够更好地满足应用开发中的动态性需求。在ODPL中,代理类能够以不同的代理语义与源类形成代理继承关系,由此形成的类层次体系可以表达丰富的类间关联,适应更加多样化的应用场景。选择型代理类能够为满足特定条件的源对象创建代理对象,为其扩展或屏蔽指定的属性或方法,不但能实现OOP模型中的父子继承机制,还提供了更强的动态性和灵活性。联合型代理类能够同时为多个源类扩展相同的行为,改善了OOP模型中只能自上而下逐层特化的开发模式。连接型代理类用于连接两个或多个源类,其实例可以用来表达多个源对象之间的关联关系,而OOP模型却没有相应的程序实体来对对象间关联进行直接建模。分组型代理类则为对象集合提供了统一的管理和操作界面,对分组成员的维护和访问可以借助分组型代理类的实例来自动完成,简化了程序的开发工作。ODPL可以看做是基于角色模型或AOP的程序设计语言,运用其中各种类型的代理类能够提供角色模型或AOP的很多功能特征,这也使其应用范围能够得到进一步的扩展。 (2)针对对象代理模型的功能进行了强化和扩充 结合实际应用的需要,在ODPL的设计实现过程中,针对对象代理模型的部分功能进行了强化和扩充。首先,在代理对象自动创建机制的基础上强化了自动销毁机制,将创建条件与销毁条件相分离,使得代理对象可以在一个有效地条件区间内存在。其次,代理对象创建条件和销毁条件的分离也使得代理对象的手工和自动创建方式得到综合统一,自动创建的代理对象能够手工销毁,而手工创建的代理对象也能够被系统自动销毁,这使得能够更加灵活地控制代理类的使用。另外,ODPL还实现了源类与代理类的融合操作,如果一个源类拥有多个处于同一级别的直接代理类,可以通过融合操作使其中某个代理类与源类之间具有比其它代理类更为紧密的逻辑关联,就好像直接把代理类的功能插入到源类中去一样,使它们在逻辑上合并为一个类。 (3)提出了基于前置对象机制的ODPL运行时结构 现有角色模型以及AOP语言的实现大多是在现有OOP语言的基础上进行语法层面的改造和扩充,OOP语言的运行时结构并不能对这些语言的功能提供直接支持。在ODPL的设计实现中提出了基于前置对象机制的运行时结构,对象间的消息能够通过前置对象得到传递,使得系统能够正常运行。前置对象机制的优点在于,ODPL中所需的各种动态功能和消息响应机制能够从机器模型的层面上得到直接支持,程序中所涉及的一些新概念和程序结构不再需要在运行时映射转换为OOP模型中的底层结构。前置对象机制还为源类与代理类的融合提供了简洁方便的实现,不但可以实现源类与代理类的融合,还可以快捷地进行反向操作以解除融合。融合操作过程只需通过简单的指针操作来完成,并不需要改变任何源代码,也不需要执行复杂的动态重编译就可以高效地执行,进一步增强了程序的动态性和灵活性。这种运行时结构可以作为角色模型或AOP语言的统一底层实现机制,为这类语言提供强大的动态性和灵活性,并降低语言实现的难度。 (4)详细制定了ODPL的语法规范和语义描述 本文还详细制定了ODPL的语法规范及其语义描述。从语法上看,ODPL源程序代码保持了标准的Java语法,并采用Java5中的标注机制来描述代理类的各种代理信息,这样就不需要在Java语言中增加专门的关键字或语法模块来表达ODPL中新增的概念和结构,简化了新语言的实现难度。另外,ODPL中的大量操作都是基于源对象与代理对象之间的双向指针执行的,为了准确表述相关功能机制,对语言中的环境状态、对象检索、消息传递、类型匹配等操作都力图给出准确的形式化描述。由于操作语义独立于语法结构,因此也可以在本文所描述的操作语义基础上,将ODPL移植到其它语言平台上,甚至可以针对ODPL设计一套全新的语法结构。

著录项

相似文献

  • 中文文献
  • 外文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号