第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

Similar documents
JavaプログラミングⅠ

Microsoft PowerPoint - CproNt02.ppt [互換モード]

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

Java知識テスト問題

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

JavaプログラミングⅠ

JavaプログラミングⅠ

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint pptx

Microsoft PowerPoint - 13th.ppt [互換モード]

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

Microsoft Word _VBAProg1.docx

Java講座

数値計算

Microsoft Word - Android_SQLite講座_画面800×1280

PowerPoint プレゼンテーション

基本情報STEP UP演習Java対策

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

Javaプログラマー早期育成ドリル ~コードリーディング編~ 解答

メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

情報処理 Ⅱ 2007 年 11 月 26 日 ( 月 )

SuperH RISC engineファミリ用 C/C++コンパイラパッケージ V.7~V.9 ご使用上のお願い

プログラミング基礎I(再)

gengo1-2

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

第 1 章 Java 言語について ( オブジェクト指向, 変数の扱い方, 繰り返し条件と条件分岐 ) Java 言語の概要とオブジェクト指向, 変数の扱い方, 繰り返し条件と条件分岐について理解し, プログラム作成を行う 1.1 Java 言語の概要 JAVA は Sun Microsystems

Prog2_12th

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do

デジタル表現論・第6回

ガイダンス

System.out.println("char : " + (int)character.min_value + "~" + (int)character.max_value); System.out.println("float : " + Float.MIN_VALUE + "~" + Flo

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

Prog1_6th

PowerPoint プレゼンテーション

Microsoft Word - 商業-3

2004/11/23 オブジェクト指向プログラミング - モデル図とシーケンス図の表現方法 - オブジェクト指向プログラミング (OOP:ObjectOrientedPrograming) オブジェクト指向プログラミング言語 (OOPL) Java,C++,Delphi(Pascal),Visual

Prog2_9th

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

JavaプログラミングⅠ


Microsoft PowerPoint - ruby_instruction.ppt

Microsoft PowerPoint pptx[読み取り専用]

情報技術 Java の特徴 Java は現在 事務処理計算用プログラミング言語として開発された COBOL に取って代わり C 言語や C++ と並んで 現在最も使われているプログラミング言語の一つである Java は Write Once, Run Anywhere( プログラムを一度作成したらど

概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要.

株式会社アルウィン C 言語コーディング規約 ver.0.1

sinfI2005_VBA.doc

PowerPoint プレゼンテーション

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

Java言語 第1回

演算増幅器

第3回 配列とリスト

第二回独習 Java ゼミ 第二章クラスとメソッド 2.1 メソッドの構造 2.2 静的メソッドと静的変数の概要 2.3 インスタンスメソッドとインスタンス変数の概要 2.4 Integerクラス 2006/04/19 神津健太

Microsoft PowerPoint ppt

Slide 1

PowerPoint プレゼンテーション

文字列操作と正規表現

PowerPoint プレゼンテーション

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

Prog1_10th

Microsoft PowerPoint - prog08.ppt

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

PowerPoint プレゼンテーション

ML 演習 第 4 回

プレポスト【問題】

K227 Java 2

Microsoft PowerPoint - lec10.ppt

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

FW APIServer 設定ガイド Version 年 2 月 3 日富士通株式会社 i All Right Reserved, Copyright FUJITSU LIMITED

Microsoft PowerPoint - kougi8.ppt

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft Word - java a.doc

Microsoft PowerPoint - PLT3.ppt

講習No.1

Prog2_10th

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

構造体

プログラミング入門1

プログラミング実習I

PowerPoint プレゼンテーション

プログラミングA

Microsoft認定資格問題集(70-483_demo)

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

JAVA入門

PowerPoint プレゼンテーション

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀

Microsoft PowerPoint - kougi7.ppt

第9回 型とクラス

JavaプログラミングⅠ

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

ÿþ˜u#u·0¹0Æ0à0

PowerPoint Presentation

Microsoft PowerPoint - chap10_OOP.ppt

Transcription:

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイルの作成方法 コンパイル方法について説明します IDL ファイルの作成にあたっては INTERSTAGE APWORKS を使用します IDL APWORKS での設定方法 < 補足 > Java COBOL 以外の言語で IDL コンパイルを行う場合は INTERSTAGE で提供される IDL コンパイラを使用してコンパイルを行います 詳細な利用方法については INTERSTAGE Application Server リファレンスマニュアル ( コマンド編 ) をご参照ください 13

第 2 章 インタフェース定義言語 (IDL) 2.1 IDL IDL(Interface Definition Language: インタフェース定義言語 ) は オブジェクトのインタフェースを定義する言語です IDL により サーバアプリケーションが提供するインタフェースを定義することができます インタフェースを定義した IDL ファイルを IDL コンパイラでコンパイルすることにより 指定した言語にマッピングされたクライアントアプリケーション サーバアプリケーション用のソースコードが生成されます このソースコードを それぞれスタブ スケルトンといいます クライアントアプリケーションからは スタブ / スケルトンを通して IDL で定義したサーバアプリケーションを呼び出すことができます IDL インタフェースの概念 14

2.1 IDL 2.1.1 IDL の書式 IDL の構造は以下のようになっています IDL の構造 15

第 2 章 インタフェース定義言語 (IDL) 次に IDL の定義例を示します // モジュール宣言 module sample { // 定数宣言 const string MSG1 = "item1 is zero" ; const string MSG2 = "item2 is zero" ; // 型宣言 // 構造体宣言 struct S1 { long item1; long item2; long result; // 例外宣言 exception CDException{ string CDExceptionMsg; long CDExceptionCode; // ユーザインタフェース宣言 interface calcsv { void addop(inout S1 param1); void subop(inout S1 param1); void mltop(inout S1 param1) raises (CDException); void divop(inout S1 param1) raises (CDException); IDL の定義例 それぞれの詳細については 2.2.1 IDL 宣言 で説明します 16

2.1 IDL 2.1.2 サポートしているデータ型 IDL でサポートしているデータ型は次のとおりです IDL でサポートしているデータ型 これらのデータ型には固定長と可変長があります 文字列型 シーケンス型 固定小数点型 文字列型 シーケンス型 固定小数点型を含む構造体および共用体 オブジェクトリファレンスは可変長です それ以外のデータ型は固定長です 17

第 2 章 インタフェース定義言語 (IDL) 2.2 IDL 構文 IDL は 7 つの宣言で構成されています 各宣言で使用する名前 ( 識別子 ) は 先頭が英文字で 英文字 数字 およびアンダースコア ("_") で指定します 英大文字と英小文字は同じものとして扱われます また すべての IDL ファイル内に設定した識別子は一意でなければなりません 例えば 異なる IDL ファイルでも定数とインタフェースに同じ識別名を使用すると コンパイルエラーとなります 2.2.1 モジュール宣言 モジュールは IDL のメソッド名や型名などが他の IDL と重複しないように オブジェクトのグループ化宣言を行うものです モジュール宣言では モジュールとモジュールを束ねて さらに大きなモジュールを宣言することができます 次に モジュール宣言の書式を示します module モジュール名 { IDL の繰り返し ここで指定したモジュール名は IDL をコンパイルしたときに生成される Java コード内に保持されます モジュール名を変更する場合は IDL の再コンパイルが必要です 静的インタフェースの場合 再コンパイルによって生成されたスタブ スケルトンを使用するか 再コンパイル時にインタフェース情報のインタフェースリポジトリへの登録のみを行い 既存のスタブ スケルトンを修正する必要があります 次に モジュール宣言の定義例を示します module sample { IDL の繰り返し 18

2.2 IDL 構文 2.2.2 インタフェース宣言 インタフェース宣言では インタフェースの実体を定義します インタフェース宣言は C++ 言語のクラス宣言と同様に他のインタフェース宣言を継承して 新しいインタフェース宣言を行うことができます 他のインタフェース宣言を継承すると その継承したインタフェース宣言のオペレーション宣言や型宣言などを あたかも自分で宣言したと同じに扱えるようになります インタフェースの継承では 新しいインタフェースを宣言する際に 他のインタフェース宣言を使用して 差分だけを定義することができます また 複数のインタフェースを継承することができます これを多重継承と呼びます すべてのインタフェース定義は 明示的に記述しなくても Object インタフェースを継承します そのため オブジェクト自身にインタフェース情報を問い合わせるメソッド get_interfacedef などの Object インタフェースを使用できます 次に インタフェース宣言の書式を示します interface インタフェース名 ; // フォワード宣言 interface インタフェース名 [: 継承するインタフェース ] { // ヘッダオペレーション宣言 ; // 本体属性宣言 ; 定数宣言 ; 型宣言 ; 例外宣言 ; ここで指定したインタフェース名は IDL をコンパイルしたときに生成される Java コード内に保持されます インタフェース名を変更する場合は IDL の再コンパイルが必要です 静的インタフェースの場合 再コンパイルによって生成されたスタブ スケルトンを使用するか 再コンパイル時にインタフェース情報のインタフェースリポジトリへの登録のみを行い 既存のスタブ スケルトンを修正する必要があります 次に インタフェース宣言の定義例を示します interface calcsv { // ヘッダオペレーション宣言 ; // 本体属性宣言 ; 定数宣言 ; 型宣言 ; 例外宣言 ; 19

第 2 章 インタフェース定義言語 (IDL) 2.2.3 オペレーション宣言 オペレーション宣言は メソッド名 復帰値の型 パラメタのデータ型 メッセージ呼び出し時に返される例外 コンテキスト情報 ( サーバアプリケーションとクライアントアプリケーションの間で共通に持つ環境変数に相当 ) を含みます 次に オペレーション宣言の書式を示します ([ ] 内は省略可能 ) [ oneway ] 復帰値のデータ型メソッド名 ( // メソッド名定義 [ パラメタタイプデータ型パラメタ名 [,..] ] // パラメタ ) [ raises ( 例外構造体名 [,..] ) ] [ context ( コンテキスト名 [,..] ) ]; ここで指定したメソッド名は クライアントアプリケーションから呼び出すことができます サーバアプリケーションではメソッドごとにクライアントアプリケーションから呼び出されたときの処理を記述します 次に オペレーション宣言の定義例を示します interface calcsv { void addop(inout S1 param1); void subop(inout S1 param1); void mltop(inout S1 param1) raises (CDException); void divop(inout S1 param1) raises (CDException); 2.2.4 属性宣言 インタフェースが持つデータを宣言します 次に 属性宣言の形式を示します ([ ] 内は省略可能 ) [readonly] attribute データ型変数名 ; Java 言語では IDL で定義された変数名と同じ名前のメンバ変数 およびその変数に対するデータ設定 / 取得用のメソッド ( 変数名と同じ名前 ) にマッピングされます 次に 属性宣言の定義例を示します attribute string Name; readonly attribute long Id; 20

2.2 IDL 構文 2.2.5 定数宣言 次に 定数宣言の書式を示します const データ型定数名 = 定数式 ; IDL 言語で定数 (const) を interface 宣言の中で指定した場合 Java 言語ではインタフェース名と同じ名前の public interface 内で 定数名と同じ名前の public static final メンバ ( 定数メンバ ) としてマッピングされます また interface 宣言の外で指定した場合 定数名と同じ名前の public interface とその内部に value という名前で public static final メンバが定義されます 次に 定数宣言の定義例を示します // 定数宣言 const string MSG1 = "item1 is zero" ; const string MSG2 = "item2 is zero" ; 2.2.6 型宣言 型宣言は 型によって指定方法が異なります 次に それぞれの型宣言の書式を示します 基本データ型 ( 文字列型 列挙型以外 ) の場合 typedef long データ型名 ; typedef short データ型名 ; typedef unsigned long データ型名 ; typedef unsigned short データ型名 ; typedef long long データ型名 ; typedef float データ型名 ; typedef double データ型名 ; typedef long double データ型名 ; typedef char データ型名 ; typedef wchar データ型名 ; typedef octet データ型名 ; typedef boolean データ型名 ; typedef any データ型名 ; 基本データ型 ( 文字列型 ) の場合 typedef string< サイズ > データ型名 ; typedef string データ型名 ; typedef wstring< サイズ > データ型名 ; typedef wstring データ型名 ; 基本データ型 ( 列挙型 ) の場合 enum データ型名 { 要素,.. 21

第 2 章 インタフェース定義言語 (IDL) シーケンス型の場合 typedef sequence< データ型, サイズ > データ型名 ; typedef sequence< データ型 > データ型名 ; 構造体の場合 struct データ型名 { 構造体メンバの宣言 基本データ型 メンバ名 ; シーケンス型 メンバ名 ; 構造体 メンバ名 ; 共用体 メンバ名 ; 固定小数点型 メンバ名 ; 共用体の場合 union データ型名 switch ( データ型 ) { case 定数式 ; 要素 [,..] : default; 要素 [,..] : 基本データ型 メンバ名 ; シーケンス型 メンバ名 ; 構造体 メンバ名 ; 共用体 メンバ名 ; スコープ名 メンバ名 ; オブジェクトリファレンス typedef Object データ型名 ; タイプコード typedef TypeCode データ型名 ; 配列 typedef データ型識別子 [ 配列サイズ ],..; 22

2.2 IDL 構文 IDL で定義されている基本データ型を Java プログラムで使用する場合 対応するデータ型は次のように定義されます CORBA データ型 Java long int unsigned long int 整数型 short short unsigned short short 浮動小数点型 long long float double long float double 文字型 char wchar char オクテッド型 octet byte ブーリアン型 boolean boolean 文字列型 string wstring java.lang.string 列挙型 enum <enum 名 > クラス any 型 any org.omg.corba.any オブジェクトリファレンス Object org.omg.corba.object タイプコード TypeCode org.omg.corba.typecode 23

第 2 章 インタフェース定義言語 (IDL) 2.2.7 例外宣言 例外宣言では オペレーション実行中に例外が発生したときに例外情報を受け渡すための識別子 ( または例外構造体名 ) を定義します オペレーション宣言の raises 式を定義する場合は この構造体名を指定します 次に 例外宣言の書式を示します exception 例外識別子 ( 例外構造体名 ) { データ型メンバ名 ; // 構造体メンバを宣言 : ここで指定した例外宣言は アプリケーションではユーザ例外として使用します 次に 例外宣言の定義例を示します // 例外宣言 exception CDException{ string CDExceptionMsg; long CDExceptionCode; 24

2.3 コンパイル 2.3 コンパイル IDL の翻訳方法には 以下の 2 種類があります IDLc コマンドで翻訳する APWORKS 上で翻訳する APWORKS 上で翻訳する方法については 第 4 章 Java プログラミング ( サーバ ) および第 5 章 Java プログラミング ( クライアント ) で説明します 以下に IDLc コマンドのリファレンス (Java 関連のみ ) を示します IDLc java [-a [-create -update -delete] -R [-create -update -delete]] [-Tdir] [-f] [-nolog] [IDLfile] - Java:Java 言語にマッピングされたスタブ スケルトンを生成します Java 言語では必須です -a: スタブ スケルトンを生成し インタフェース情報をインタフェースリポジトリに登録します -create,-update,-delete のいずれかと組み合わせて指定します -R: インタフェース情報のインタフェースリポジトリへの登録だけを行い スタブ スケルトンの生成は行いません -create,-update,-delete のいずれかと組み合わせて指定します -create: インタフェース情報をインタフェースリポジトリに登録します すでに同じ識別子が登録されているとエラーとなり 現在の作業を無効にします -update: インタフェース情報をインタフェースリポジトリに登録します すでに同じ識別子が登録されていると インタフェース情報を更新します IDL ファイルを変更した場合には このオプションを指定する必要があります -delete: インタフェース情報をインタフェースリポジトリから削除します 登録されていない識別子があるとエラーとなります -Tdir: コンパイラの作業用ファイルの作成位置を指定します ( 省略時 : 環境変数 TEMP または TMP の設定値 ) -f: インタフェース情報とスタブの不一致検出機能を有効とします -nolog:corba サービスのトレース採取機能を無効とします IDLfile:IDL ファイルを記述したファイル名を指定します 25

第 2 章 インタフェース定義言語 (IDL) 次のような IDL 定義を作成し IDLc コマンドを実行します IDL ファイルのファイル名や 格納ディレクトリについては 講師の指示にしたがってください // モジュール宣言 module modcalcratesv { // 定数宣言 const string MSG1 = "balance is zero" ; const string MSG2 = "rate is zero" ; const string MSG3 = "span is zero" ; const string MSG4 = "You can not payout" ; // 型宣言 // 構造体宣言 struct Structure1 { long pay; long balance; double rate; long span; long expectation; // 例外宣言 exception CDException{ string CDExceptionMsg; long CDExceptionCode; // ユーザインタフェース宣言 interface CalcRateSv { void initbal(inout Structure1 param1); void addbal(inout Structure1 param1); void subbal(inout Structure1 param1) raises (CDException); void calcbal(inout Structure1 param1) raises (CDException); IDLc コマンドの実行例を以下に示します IDLc コマンドは [ スタート ]-[ プログラム ]-[ アクセサリ ]-[ コマンドプロンプト ] より行います IDLc -java -a -update IDLfile.idl 26