OMG IDL语法规则

原创 2002年04月09日 09:39:00

OMG IDL语法规则

(本文转载自软件工程专家网www.21cmm.com

苏洋

OMG IDL文件概述

  从本质上讲,OMG IDL接口定义语言不是作为程序设计语言体现在CORBA体系结构中的,而是用来描述产生对象调用请求的客户对象和服务对象之间的接口的语言。OMG IDL文件描述数据类型和方法框架,而服务对象则为一个指定的对象实现提供上述数据和方法。

  OMG IDL文件描述了服务器提供的服务功能,客户机可以根据该接口文件描述的方法向服务器提出业务请求。在大多数CORBA产品中都提供IDL到相关编程语言的编译器。程序设计人员只需将定义的接口文件输入编译器,设定编译选项后,就可以得到与程序设计语言相关的接口框架文件和辅助文件。IDL文件应用过程如图1所示。

corba_3.jpg

图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的数组类型提供了多维定长、统一数据格式的数据存储方式——数组。每一维的长度必须在定义时给定,所有数据单元必须存储相同类型的元素。如下例定义一个长度为20×100的整数数组:

  typedef long aDimension[20][100];

7.模板(template)类型

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

(1) 序列(sequence)类型:

  用该方法定义长度可变的任意数值类型的存储序列,通常在定义时可以指定长度,也可以不指定,如:

  typedef sequence <long,80> aSequence;

  //长度定义为80

  typedef sequence <long> anotherSequence;

  //长度不定

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

  同样对于字符串序列类型,也有两种定义方式:

  typedef string <80> aName; //长度定义为80

  typedef string anotherName; //长度不定

8.接口(interface)

  在前几讲中,均提到了CORBA接口,接口作为服务对象功能的详细描述,封装了服务对象提供服务方法的全部信息,客户对象利用该接口获取服务对象的属性、访问服务对象中的方法。

  接口用关键字interface声明,其中包含的属性和方法对所有提出服务请求的客户对象是公开的,如下例:

  interface JobManager

  { readonly attribute string FirstName;

  attribute string status;

  string QueryJobStatus( in long Number, out string property); }

OMG IDL语法规则及ORB

OMG IDL语法规则及ORB (本文转载自软件工程专家网www.21cmm.com)苏洋9. 接口的继承   与C++和Java中类的继承类似,OMG IDL中关于接口的继承分为两种类型:   ● ...
  • gigix
  • gigix
  • 2002年04月09日 09:39
  • 1680

IDL 语法

IDL 是接口描述语言(Interface description language,缩写IDL),是CORBA规范的一部分,是跨平台开发的基础。IDL是用来描述软件组件接口的一种计算机语言。IDL通...
  • afandaafandaafanda
  • afandaafandaafanda
  • 2015年01月22日 21:46
  • 1140

程序员常用英语大集合 http://bbs.itheima.com/thread-118950-1-1.html (出处: 黑马程序员IT技术论坛)

干程序员这行实在是离不开英语,干程序员是一项很辛苦的工作,要成为一个高水平的程序员尤为艰难。这是因为计算机软件技术更新的速度越来越快,而这些技术大多来源于英语国家,我们在引进这些技术时往往受到语言障碍...
  • wylbwjcl
  • wylbwjcl
  • 2014年08月11日 14:30
  • 1908

OMG 接口定义语言(IDL)

OMG 接口定义语言(IDL) 用 RPC / COM /CORBA 技术来编写分布式系统时都需要接口定义语言 (IDL)。 IDL特点:1、IDL 是一种规范语言。2、IDL 看上去很像 C 语言。...
  • easyxu
  • easyxu
  • 2002年04月05日 09:20
  • 2346

OMG(Object Management Group)

这个要说个笑话,去年有个师兄在答辩会上,有个流程图,其中有一步他用一个圆形来表示是或否,答辩组老师就问你为什么要用圆形不用菱形。师兄憋了很久说他觉得圆形好看,老师无语后说了句说你应该去给ISO提建议,...
  • tnt87
  • tnt87
  • 2014年12月27日 21:10
  • 749

腾讯2017暑期实习生OMG事业群一面面经

总结 主要问简历 1.复制构造函数什么时候需要重写 2.多进程同步方式,多线程同步方式 3.两道编程题(数学问题)大数据下点集里最短距离的两点,优化时间(邮局问题,当时忘了…) 4.c++11里并发处...
  • hiyajo_salieri
  • hiyajo_salieri
  • 2017年04月17日 19:35
  • 514

腾讯笔试、OMG一面、二面、HR面

一年有余没有写博客了,这一年经历了很多事。找实习、夏令营、考研、脚骨折受伤、复试、来到中科院工作。直到最近,才有时间一一记录这一年以来的发生的种种事情。先从去年腾讯面试说起吧,时间久远,可能记忆得不是...
  • BitCs_zt
  • BitCs_zt
  • 2017年04月25日 11:37
  • 1173

OMG

OMG有多种含义,它可以是Object Management Group (对象管理组织) 的缩写,也可以是Overhead Mounted Gun(顶置炮 )的缩写释意。但其最有名的用法还是作为Oh...
  • vbloveshllm
  • vbloveshllm
  • 2013年10月21日 10:02
  • 550

omg dds 博客

http://m.blog.csdn.net/blog/yangstudio/5586828
  • yejie1111
  • yejie1111
  • 2015年05月20日 14:20
  • 199

omg

太懒了,好久没有上来了,要改改才行......
  • latalata
  • latalata
  • 2007年06月17日 17:11
  • 261
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OMG IDL语法规则
举报原因:
原因补充:

(最多只允许输入30个字)