快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

葡京娱乐官网下载安装:OMG IDL语法规则



OMG IDL文件概述

从本色上讲,OMG IDL接口定义说话不是作为法度榜样设计说话体现在CORBA体系布局中的,而是用来描述孕育发生工具调用哀求的客户工具和办事工具之间的接口的说话。OMG IDL文件描述数据类型和措施框架,而办事工具则为一个指定的工具实现供给上述数据和措施。

OMG IDL文件描述了办事器供给的办事功能,客户机可以根据该接口文件描述的措施向办事器提出营业哀求。在大年夜多半CORBA产品中都供给IDL到相关编程说话的编译器。法度榜样设计职员只需将定义的接口文件输入编译器,设定编译选项后,就可以获得与法度榜样设计说话相关的接口框架文件和帮助文件。IDL文件利用历程如图1所示。

图1 OMG IDL文件编译历程

在语律例则方面,类似于C++或Java中关于接口或工具的定义,OMG IDL增添了一些构造措施支持IDL特有的措施调用机制。OMG IDL只是一种阐明性的说话,支持C++语法中的常量、类型和措施的声明。采纳OMG IDL这样的阐明性说话,其目的在于降服特定编程说话在软件系统集成及互操作方面的限定,这恰是CORBA的诱人之处,同样也表现出采纳CORBA构造散播式利用法度榜样在收集期间的强大年夜生命力。OMG IDL已经为C、C++、Java等主要高档法度榜样设计说话拟订了IDL到高档编程说话的映射标准。项目开拓职员可以根据必要选择自己最认识的编程说话来自力开拓基于CORBA的利用,而对软件系统的互操作能力不孕育发生影响。

OMG IDL的语律例则

1. OMG IDL文件举例

module Compute

{ typedef double radius;

typedef long times;

interface PI

{ double getResult( in radius aRadius, in times time); }

}

上述接口定义文件主要用于客户端向办事工具提出哀求:谋略值。是以,模块中定义了一个措施getResult(),以圆的直径(aRadius)和迭代次数(times)作为该措施的输入参数。

2. OMG IDL词律例则

OMG IDL采纳ASCII字符集构成接口定义的所有标识符。标识符由字母、数字和下划线的随意率性组合构成,但第一个字符必须是ASCII字母。IDL觉得大年夜写字母和小写字母具有相同的含义,例如anExample和AnExample是相同的。

与C++和Java类似,采纳以“/*”开始,以“*/”停止来注释一段代码,以“//”开始注释从“//”开始直至行尾的所有内容。

别的,IDL保留了47个关键字,法度榜样设计职员不能将关键字用作变量或措施名。必要留意的是关键字的大年夜小写,例如:

typedef double context;

//差错:定义的变量context是关键字

typedef double CONTEXT;

//差错:CONTEXT与关键字context冲突

3. 数据类型

(1葡京娱乐官网下载安装)基础数据类型:OMG IDL基础数据类型包括short、long和响应的无符号(unsigned)类型,表示的字长分手为16、32位。

(2)浮点数类型:OMG IDL浮点数类型包括float、double和long double类型。此中float表示单精度浮点数,double表示双精度浮点数葡京娱乐官网下载安装,long double表示扩展的双精度浮点数。

(3)字符和超大年夜字符类型:OMG IDL定义字符类型葡京娱乐官网下载安装char为面向字节的码集中编码的单字节字符; 定义类型wchar为从随意率性字符集中编码的超大年夜字符。

(4)逻辑类型:用boolean关键字定义的一个变量,取值只有true和false。

(5)八进制类型:用octet关键字定义,在收集传输历程中不进行上下位转换的位元序列。

(6)any数据类型:引入该类型用于表示OMG IDL中随意率性数据类型。

4. 常量

OMG IDL用const关键字声明一个常量,用于模块(module)或接口(interface)中定义维持不变的量,如:

const double PI = 3.1415926;

在IDL中,可以定义long、unsigned long、unsigned short、char、boolean、float、double、string类型的常量。

5. 构造数据类型

类似于C和C++的语律例则,OMG IDL中构造数据类型包括布局、联合、罗列等形式。如下例:

(1)布局类型:

typedef long GoodsNumber;

struct

{ GoodsNumber number;

string name;

float price; }

(2)联合类型:

union stockIn switch( short )

{ case 1: stocker : long;

case 2: goodsName1 : string;

case 3: goodsName2 : string; }

(3)罗列类型:

enum GoodsStatus { GOODS_SALED, GOODS_INSTOCK};

6. 数组类型

OMG IDL的数组类型供给了多维定长、统一数据款式的数据存储要领——数组。每一维的长度必须在定义时给定,所稀有据单元必须存储相同类型的元素。如下例定义一个长度为20100的整数数组:

typedef long aDimension[20][100];

7.模板(template)类型

OMG IDL供给两种类型的模板:

(1) 序列(sequence)类型:

用该措施定义长度可变的随意率性数值类型的存储序列,平日在定义时可以指定长度,也可以不指定,如:

typedef sequence aSequence;

//长度定义为80

typedef sequence anotherSequence;

//长度不定

(2) 字符串(string)序列:

同样对付字符串序列类型,也有两种定义要领:

typedef stringaName; //长葡京娱乐官网下载安装度定义为80

typedef string anotherName; //长度不定

8.接口(interface)

在前几讲中,均提到了CORBA接口,接口作为办事工具功能的具体描述,封装了办事工具供给办事措施的整个信息,客户工具使用该接口获取办事工具的属性、造访办事工具中的措施。

接口用关键字interface声明,此中包孕的属性和措施对所有提出办事哀求的客户工具是公开的,如下例:

interface JobManager

{ readonly attribute string FirstName;

attribute string status;

string QueryJobSta葡京娱乐官网下载安装tus( in long Number, out string property); }

您可能还会对下面的文章感兴趣: