- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章节编写对象接口”
第四章编写对象接口 编写对象接口 对象接口与对象实现 OMG IDL的语法与语义 使用值类型 使用接口库 设计对象接口的准则 4.1 对象接口与对象实现 接口与对象实现之间是多对多关系 对象接口的定义应包括对象的类型名字,对象上可进行的操作,属性,相关的数据类型定义,常量定义,异常定义等信息 4.1.2 接口定义语言 对象实现对外提供信息和服务 信息和服务是对象实现与客户程序之间的一种合约 接口定义语言是书写这种合约的标准语言 IDL是一种说明性语言,不是程序设计语言 IDL的特点 面向对象 用于定义分布式服务的规格说明 定义复杂的数据类型 独立于具体的程序设计语言和特定的硬件,网络和操作系统平台 4.2 语法与定义 词法规则 模块声明 类型的声明 常量 异常 接口 值类型 4.2.1 词法规则 类似ANSI C++词法规则和预处理特性 关键字是大小写敏感;标识符大小写无关 4.2.2 模块的声明 用于限制标识符的作用域 一般将逻辑上密切相关的接口,类型,常量,异常等存放在同一模块中 4.2.3 类型的声明 基本数据类型 复合数据类型 枚举 结构 UNION 序列和数组 4.2.4 常量的声明 转换为该IDL接口生成的操作接口中的常量声明 接口内 接口外 4.2.5 异常的声明 引入关键字exception专门定义异常 4.2.6 接口的声明 属性声明 参数传递 单向传递 上下文传递 继承机制 抽象接口 接口——属性 属性不应看作对象的状态数据,是一种特殊的操作(0元操作) 可读写属性被映射为java中重载的方法(getter(),setter()) IDL接口中的属性被映射为JAVA语言的方法而不是变量,因此IDL接口可直接映射到JAVA的接口而不是类 接口——参数传递方向 in:客户到对象实现 out:对象实现到客户 inout:双向 in可直接映射到java方法的参数 out,inout无法直接映射,利用持有类解决 接口——单向操作 没有返回值的操作可设计为oneway操作 对象实现不确认请求是否真的收到 接口——上下文表达式 附带于操作中 指明客户端那些影响对象请求执行结果的,与发出调用请求的客户环境有关的因素 4.2.7 值类型的声明 作用 典型用法 声明形式 抽象 具体 动态确定参数传递 盒装值类型 定制值类型与可截断值类型 值类型——作用 在网络中传递对象状态信息,即为了实现按值传递对象 值类型——典型用法 按值调用传递参数:创建实参的副本 远程操作返回一个对象时创建返回的副本 实质:一个对象的目的是为了封装数据,或一个APP需要显式地对某一对象进行复制,该对象应使用IDL值类型而不是接口类型,此时的对象实例称为“值” 值类型——抽象值类型 只含操作的基调而没有状态数据和初始化数据,因而不能创建值的实例 可继承多个抽象值类型,但不能继承具体值类型 值类型——具体值类型 类似IDL结构类型,但允许包含状态数据和初始化数据 可继承单个具体值和多个抽象值类型,还可支持单个具体接口和多个抽象接口 映射为JAVA的抽象类 对接口的支持关系映射为JAVA中类对接口的实现关系 值类型——动态确定参数传递方式 若形参类型为idl接口或值类型,则分别静态地确定了该参数的传递方式为按引用调用和按值调用 抽象接口可支持运行时动态选择参数传递方式 A抽象接口,p实参 规则: p属于具体接口或其子类型;且该类型是A的子类型;p已注册到ORB,则p被当作一个对象引用并按引用传递 P属于值类型且该值类型支持A,则p被当作一个值并按值传递 引发BAD_PARAM异常 值类型——盒装值类型 允许将非值类型的IDL数据类型包装为值类型 值类型——定制值类型与可截断值类型 不采用默认的对象打包和解包操作,而是由程序员手工实现由CustomMarshal接口继承的marshal()和unmarshal()方法 映射的java抽象类继承CustomValue,而不像具体值类型那样继承StreamableValue 不生成映射的read(),write()方法,需自己实现 4.3 使用值类型 IDL定义 编译IDL文件 实现IDL接口 实现值类型 服务程序与客户程序 4.4 使用接口库 定义 结构 管理工具 编写接口库客户程序 4.4.1 接口库的定义 接口定义也可由一个专门的服务进程来存储或管理,即把IDL文件中地对象接口定义组织成可运行的接口库服务,由该服提供对象接口的相关信息 表达的信息与IDL文件完全相同,更适于动态访问 常见用法:查找一个对象引用的所有IDL接口定义 客户程序或对象实现利用接口库获取一个编译时未知类型的对象引用的详细接口信息,从而更好地利用DII,DSI 4.4.2 结构 接口库将接口描述看作对象,为其定义了新的接口,无需引
您可能关注的文档
最近下载
- 呼吸衰竭ppt(共40张PPT).pptx VIP
- 7.1《风景谈》课件(共41张PPT)(含音频+视频).pptx VIP
- QXT3传感器中文操作手册.pdf VIP
- 病理科医疗质量自查表.docx VIP
- 菲亚特博悦说明书.docx VIP
- 2014-6-30电力变电站钢结构装配式建筑、围墙、防火墙.pdf VIP
- 上海市市东实验学校2022-2023学年高一10月月考语文试题.pdf VIP
- 《半导体物理与器件》教学大纲.docx VIP
- 2025青海公司所属华电(格尔木)能源有限公司面向华电系统内外招聘180人笔试备考试题及答案解析.docx VIP
- 人教版道德与法治四年级上册教案.docx VIP
文档评论(0)