JP2002517815A - オブジェクトベースプログラミングでのメソッド参照 - Google Patents
オブジェクトベースプログラミングでのメソッド参照Info
- Publication number
- JP2002517815A JP2002517815A JP2000552579A JP2000552579A JP2002517815A JP 2002517815 A JP2002517815 A JP 2002517815A JP 2000552579 A JP2000552579 A JP 2000552579A JP 2000552579 A JP2000552579 A JP 2000552579A JP 2002517815 A JP2002517815 A JP 2002517815A
- Authority
- JP
- Japan
- Prior art keywords
- class
- computer
- instance
- delegate
- another
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 390
- 238000004590 computer program Methods 0.000 claims description 35
- 230000003068 static effect Effects 0.000 claims description 28
- 238000012545 processing Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 5
- 238000005538 encapsulation Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 18
- 239000003607 modifier Substances 0.000 description 15
- 230000000007 visual effect Effects 0.000 description 12
- 230000009471 action Effects 0.000 description 10
- 239000011800 void material Substances 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 5
- 230000018109 developmental process Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000000354 decomposition reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 101150034533 ATIC gene Proteins 0.000 description 1
- BKAYIFDRRZZKNF-VIFPVBQESA-N N-acetylcarnosine Chemical compound CC(=O)NCCC(=O)N[C@H](C(O)=O)CC1=CN=CN1 BKAYIFDRRZZKNF-VIFPVBQESA-N 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
権者は、特許・商標局のファイル又は記録に掲載される際に、特許書類又は特許
開示の何れかにより複写再生されるのに異存はないが、そうでない場合は全著作
権を留保するものである。次の表示は、以下に記載され、図面で表示されている
ようにソフトウェア及びデータに適用される。 Copyright(c)1998、Microsoft Corporation、All Rights Reserved
オブジェクト指向言語でプログラミングするための方法及び装置に関する。
るようにする。非オブジェクト指向言語では、分解の最小単位は手続き又は関数
である。オブジェクト指向言語では、分解の最小単位は、通常、クラス上のメソ
ッドである。
れる、データ構造に保存されるなど)の値として、且つ値が表すコードチャンク
を「呼び出す」又は「呼出しする」のに用いられる値として扱えるようにする。
異なる言語は異なるメカニズムを提供する。
く知られているのは、C及びC++に見られる関数ポインタである。関数型プロ
グラミング言語(LISP、ML、スキームなど)では、プログラミングのこの
スタイルが一般的である。オブジェクト指向プログラミング言語では、この目的
に適したメカニズムは開発されていない。
とするため、本発明は次の設計目標に取り組む。
るようにする f)メソッドリファレンスの保持者は参照されている目標オブジェクト及び
メソッドを決定できるようにする。
式で達成し、 a)開発者が後(実行時)ではなく早期(コンパイル時)にタイプミスマッ
チ問題を理解できるようにし、 b)開発ツールが、デレゲイト(delegate)を用いる要素の形状について開発
者に情報を示す、ことができるようする。
商標)ビジュアルC++、ビジュアルベーシック及びビジュアルベーシックAの
ような、C及びC++様の関数ポインタを採用している。ウインドウズ(登録商
標)APIも関数ポインタを広範囲に利用している。この種の関数ポインタは、
以下の複数の理由: a)タイプセーフではなく、キャスティングすることになり、 b)機密保護を意識しておらず―関数ポインタは、不注意に変えられ、そし
て呼び出されうるポインタに過ぎず、システムクラッシュに至り、 c)目標オブジェクト及びメソッドへのアクセスを考慮していない、もので
あって不完全である。
レンスの原型を提供する「Javaコアリフレクション」システムを有する。開
発者はjava.lang.reflect.Methodのインスタンスを入
手できる。このインスタンスは、メソッドをレイトバウンド方式で呼び出すのに
用いることができる。このリファレンスの形式は本質的にレイトバウンド(late-
bound)で、そのため非能率的である。
ドを呼び出すことにより第一メソッドを呼び出す段階をコンピューターを使って
実行する、オブジェクトベースのコンピューターコードでコンピューターをプロ
グラミングするための方法が提供されており、第二メソッドに供給されるパラメ
ータは第一メソッドに供給され、第二メソッドのパラメータリストは第一メソッ
ドのパラメータリストに一致し、更に第一メソッドは名前により、そして第一メ
ソッドのパラメータリスト及び結果のタイプをクラスに対して宣言されたパラメ
ータリスト及び結果のタイプと突き合わせることにより識別される。
つの手続きから別の手続きへ送ることができる値により表示され、プログラムコ
ードは、クラスのインスタンスを示す値を割り当てられた変数上の第二メソッド
を呼び出すのに用いられる。
内の各クラスと関連しており、これらの許可は、第一メソッドによる第二メソッ
ドへの呼び出しが許可されるかどうか決定するのに用いられる。
る。
ベントを処理するのに用いられる。
への呼び出しを使って呼び出され、そこでは、1つ又はそれ以上の対応する追加
のパラメータのセットが、それぞれ、もう一つの追加の第一メソッドに供給され
る第二メソッドに供給される。更に、呼び出しリストは第二メソッドと関連して
おり、呼び出しリストは呼び出される第一メソッドを特定する。また、第一メソ
ッドが呼び出しリストに加えられることもあるし、呼び出しリストから削除され
ることもある。
ムと、コンパイラーと、インタープリターと、ハードウェア及びソフトウェアを
含むプログラミングシステム内に組み込まれている。
参照し、本発明が実施される特定の実施例を示すことにより説明を行う。本発明
の範囲から逸脱することなく、他の実施態様を利用したり、構造的な変更を行え
ることは理解されるであろう。
ェクトベースのプログラミング内でメソッドを参照するためのメカニズムを提供
する。関数ポインタは関数へのリファレンスを含み、一方デレゲイトはメソッド
へのリファレンスを含んでいる。両者は、関数ポインタが1つのリファレンス(
関数)しか含んでいないのに対して、デレゲイトはオブジェクト及びオブジェク
トのメソッドへのリファレンスを含む点で異なっている。
クトのタイプ(クラス)について知らないか又は留意しないということである。
むしろ、重要なのは、参照されるメソッドのパラメータリストがデレゲイトと互
換性があることである。このことは、デレゲイトを呼び出す呼び出し人が何のク
ラス又はメンバーが呼び出されているのか正確に知る必要がなく「匿名」通知利
用に関してデレゲイトを非常に有益なものにする。
てることができ、一つの手続きから別の手続きへ送ることもできる。デレゲイト
も、利用し、適用し、呼び出すことができる。この操作を実行するときには、ゼ
ロ又はそれ以上の引き数がデレゲイトに送られる。
関数ポインタと異なる。更に、関数ポインタは文脈自由であり、つまり、関数が
関数ポインタを通じて呼び出されるときには、関数はパラメータを通じて送られ
てくる以外の文脈(context)を持っていないのに対し、デレゲイトはそれ自身文
脈を伴っている。メソッドがデレゲイトを通じて呼び出される場合は、呼び出し
はデレゲイトにより参照されるオブジェクトに起こり、従って既知の文脈を使っ
てメソッドが提供される。
を取る。図1に示すように、本明細書に記載されているデレゲイトの実施例は、
プログラミング言語10と、コンピュータープログラム12と、コンパイラ14
と、Javaバーチャルマシンインタープリタソフトウェア16と、イベントモ
デル18の形態で実施される。図2に示されているように、これら様々な実施例
は、例えばこれに限定するわけではないが、IBM互換パーソナルコンピュータ
ー等の(例えばこれに限定するわけではないが、CPU、記憶装置、メモリ、キ
ーボード、マウス等の従来のコンピューター構成要素を含む)コンピューターシ
ステム20上で実行し、保存することができるか、そうでなければ、ハードドラ
イブ22、フロッピーディスク24、CD−ROM26又は電子データトランス
ミッション28のような様々な担体媒体上で機械読み取り可能な形式で具体化す
ることができる。
ュアルJ++、バージョン6.0におけるデレゲイトのインプリメンテーション
について説明している。しかし、本発明は、決してJ++言語に限定されるもの
ではなく、C++のようなどんなオブジェクト指向プログラミングシステム又は
マイクロソフト(登録商標)ビジュアルベーシックのようなオブジェクトベース
プログラミングシステムにも広く適用できる。本明細書では「オブジェクト指向
」という用語は、オブジェクトベース及び支援継承(supporting inheritance)両
方のプログラミング言語を意味する。「オブジェクトベース」という用語は、マ
イクロソフト(登録商標)ビジュアルベーシックのように、コードがオブジェク
トの中に編成されるが、必ずしも継承を支援するわけではないプログラミング言
語を指す。
ログラム30の簡単な例が図3に示されており、そこではデレゲイトインスタン
スがインスタンス上のメソッドをカプセル化している。この場合、メソッド「h
ello」はデレゲイト「f」を使って呼び出される。更に、デレゲイトの宣言
は、デレゲイトがカプセル化可能であるメソッドの種類を定義する。
どのように例示されて(“f=new SimpleDelegate(o.hello)”)、次にどの
ように呼び出されるか(“f.invoke()”)を示している。以下に更に詳しく
説明するが、有効且つ実行可能であるために、SimpleDelegateデレゲイトのタイ
プは参照される「hello」メソッドのタイプと一致していなければならない。こ
の場合、helloとSimpleDelegateは共に、入力パラメータを必要とせず、ボイド
出力である。これも以下に説明するが、この要件はデレゲイトをタイプセーフに
する。
ン6.0において実行されている、J++言語の延長として、デレゲイトの説明
である。サンマイクロシステムズ社より発行されているJava言語仕様を参考
資料として本明細書に援用する。Java言語仕様は、本明細書では「JIL」
とも呼んでおり、一部ではその様に引用する。
ト又はマルチキャストデレゲイトのどちらかから来る新しいクラスを指定する。
デレゲイト宣言は、 DelegateModifiersopt delegate ResultType Identifier (FormalParameterListopt)Throwsopt の形態を取る。
y である。
性を有するクラスになる。 1)ClassModifiersoptに対し、クラス宣言はDelegateModifiersopt を有し
、所定の文脈内で指定される前提で、static、finalという追加変更が加わる。 2)Identifierに対し、クラス宣言は、デレゲイト宣言のIdentifierを有す
る。 3)Superoptに対しては、multicast変更子が指定されれば「extends com
.ms.lang.MulticastDelegate」を有し、multicast変更子が省略されれば「ext
ends com.ms.lang.Delegate」を有する。 4)Interfaceoptに対しては、“”を有する。
付いたパッケージ(JLSの§7.4.1参照)で宣言されれば、デレゲイトは
完全修飾された名前P.Identifierを有することになる。デレゲイトが名前無し
パッケージ(JLSの§7.4.2参照)で宣言されれば、デレゲイトは完全修
飾された名前Identifierを有することになる。図4の例では、デレゲイトEmptyM
ethod(32)は、パッケージステートメントの無いコンパイル単位で宣言され
、従ってEmptyMethodが完全修飾された名前であるのに、図5Aの例コード34
では、デレゲイトEmptyMethodの完全修飾された名前はvista.EmptyMethodである
。
行可能)は、 1)デレゲイトに命名する識別子が、同一パッケージ(JLSの§7.6
参照)で宣言される他のデレゲイトタイプか、クラスタイプか、又はインターフ
ェースタイプの名前として現れる場合、又は、 2)デレゲイトに命名する識別子が、デレゲイト宣言を含むコンパイル単
位(JLSの§7.3参照)内の、シングルタイプインポート宣言(JLSの§
7.5.1参照)によるタイプとして宣言されている場合、 コンパイル時間エラーを発生させる。
の名前は、その範囲として(JLSの§6.3参照)デレゲイトが宣言される完
全なパッケージを有する。
DelegateModifiersは、ゼロであるか、或いは public private static final multicast の中の1つであってもよい。
常、要求されてはいないが、DelegateModifierに対するプロダクションの中で先
に述べたことと一致するオーダで現れる。
を有していなければならず、そうでなければコンパイルエラーが生じる。
のこの実施例のコンパイラは、 1)2つ以上のデレゲイト変更子が用いられる場合、 2)同じ変更子がデレゲイト宣言に二度以上現れる場合か、又はデレゲイ
ト宣言が2つ以上のアクセス変更子public及びprivateを有する場
合、 3)private変更子が、クラス内にネストされていないデレゲイト
宣言内に現れる場合、 コンパイル時間エラーを生み出す。
ticを重複して指定することは許されるが、スタイルの問題としては非常に妨
げとなる。更に、デレゲイトは暗黙にfinalである。デレゲイト宣言内で変
更子finalを重複して指定することは許されるが、スタイルの問題としては
非常に妨げとなる。
どこでも現れる。クラス定義同様に、デレゲイト定義はクラス定義内にネストす
ることができる。加えて、デレゲイトは常にトップレベルである。
スのどちらか)から継承したメンバーと、カプセル化されたメソッドを呼び出す
のに用いることのできる自動的に作成された特別なinvokeメソッド(以下
に記載)とを含む。デレゲイト宣言も、自動的に生み出された特別なコンストラ
クタ(constructor)を備えたクラスに帰着する。
び出すのに用いることができるinvokeメソッドを含む。invokeメソ
ッドのシグネチャ及びリターンタイプは、デレゲイト宣言により決定される。特
に、invokeメソッドのシグネチャは、 ResultType invoke(FormalParameterListopt)Throwsopt であり、ResultTypeと、(あれば) FormalParameterListと、(あれば) Throwsと
はデレゲイト宣言のシグネチャである。
ス」コンストラクタ。このコンストラクタへの引き数と、Objectメソッド
の名前とStringメソッドの名前とは、デレゲイトのタイプと組み合わされ
て、デレゲイト定義と一致する指示されたオブジェクト上に、独自にメンバーを
特定する。新たに構成されたデレゲイトは、このメソッドをカプセル化する。 2)ほとんどのメソッド解決が、実行時ではなくコンパイル時間になされる
ことを可能にする特定の「メソッド指示子」コンストラクタ。メソッド指示子デ
レゲイトは、Javaコアリフレクションを通じて表に出されない。
書に述べられているベースDelegateクラスの説明に詳細に論じられてい
る。メソッド指示子式は、デレゲイト例示を目的に、クラス又はインスタンスメ
ソッドを示すのに用いられる。
を(潜在的に)指定するのではなく、特定のメソッドを指示するためには、メソ
ッド指示子によって例示されるデレゲイトのリターンタイプ及びシグネチャ(引
き数の数及びタイプ)を参照することが必要である。このため、メソッド指示子
及び新しいインスタンス仕様形態が、単一の単位として記述される。
する探索ルールと同じ様な探索ルールが使われる。メソッドを指示することは、
メソッドがオーバーローディングとなったりインスタンスメソッドがオーバーラ
イディング(overriding)となる可能性があるために、複雑である。メソッド呼び
出し式により呼び出されるメソッドを決定するのには、複数の追加段階が含まれ
ている。以下に述べるのは、本発明の本実施例による、コンパイル時及び実行時
共にデレゲイト例示に含まれる段階である。
がコンパイル時間に知らされるアーリーバウンドデレゲイトである。ある場合に
は、デレゲイトが結合されるべきメソッドは、プログラムがコンパイルされてい
るときには知られていない。例えば、対話式開発環境のユーザーは、プログラム
プロトタイピング用のメソッドの名前を特定するかもしれないし、呼び出される
メソッドの名前を何か他の様式で計算するか又は入力するかもしれない。この場
合、2つの引き数コンストラクタを使うことにより、デレゲイトのインスタンス
を構築することができる。
になるオブジェクトを指定する。コンストラクタの第二引き数は、メソッドの名
前を指定する。第一引き数で指定されたオブジェクトは、そのオブジェクトが指
示された名前のメソッドを有することを確認するために、デレゲイトクラスが宣
言されたと同じシグネチャ(すなわちリターンタイプ及び引き数タイプ)使って
照合される。照合ができなければ、例外が起こる。照合されれば、新しいデレゲ
イトオブジェクトが構築されて戻される。
=new SimpleDelegate(o,“hello")、」の形を取り、ここでメソッド「hello
」はプログラム実行の間に定められるストリングである。レイトバウンドデレゲ
イトの場合、呼び出しは「g.dynamicInvoke(Object〔〕args)」の形を取る。
図5Bのプログラム例36は、ストリングメソッドの名前に基づいてレイトバウ
ンドデレゲイトを構築する。
式をコンパイル時間に処理するには、数段階が必要である。第一に、コンパイラ
は検索するクラス又はインターフェースを決定しなければならない。第二に、コ
ンパイラは一致していてアクセス可能なメソッドを検索しなければならない。第
三に、コンパイラは、メソッドが適当かどうかチェックしなければならない。こ
れらのプロセスについては、以下に更に詳細に説明する。
前、及びその名前のメソッドの定義に対してチェックすべきクラス又はインター
フェースを計算することである。メソッド指示子の形式によっては、次のように
考えられるケースが幾つかあり、 1)形式がMethodNameであれば、2つのサブケースがあり、 a)シンプルな名前、即ち、まさにIdentifireであれば、メソッドの
名前はIdentifireであり、検索するクラス又はインターフェースは、その宣言が
メソッド指示子を含んでいるクラス又はインターフェースである。 b)他のすべてのケースでは、修飾された名前はFieldName. Identif
ireの形を有しており、メソッドの名前はIdentifireであり、検索するクラス又
はインターフェースはFieldNameの名前が付いているフィールドの宣言されたタ
イプである。 2)形式がPrimay.Identifireであれば、メソッドの名前はIdentifire
であり、検索されるクラス又はインターフェースはPrimay式のタイプである。 3)形式がsuper.Identifireであれば、メソッドの名前はIdenti
fireであり、検索されるクラスは、その宣言がデレゲイト例示を含むようなクラ
スのスーパークラスである。そのようなメソッド指示子がインターフェース内か
、クラスobject内か、staticメソッドか、スタティックイニシャラ
イザか、又はstatic変数に関するイニシャライザかの内かに生じれば、コ
ンパイル時間エラーが生じる。次に、この形態のメソッド指示子は、objec
t以外のクラス内と、インスタンスメソッドの本体か、コンストラクタの本体か
、又はインスタンス変数に関するイニシャライザかの内にだけ現れることになる
。
フェースを検索する。この段階は、一致し、且つアクセス可能であるメソッド宣
言、即ち、例示されるデレゲイトのタイプに一致し、デレゲイト例示文脈から正
しく呼び出すことのできる宣言の位置を突き止めるために、指示されたメソッド
の名前及びデレゲイト定義正式パラメータのタイプを用いる。突き合わせルール
は厳密なので、そのようなメソッド宣言は1つだけしかない。
ッドMがタイプTに一致し、且つ一致する場合にだけ、メソッドMをカプセル化
するタイプTのデレゲイトインスタンスを例示することが可能である。
且つ次のことにすべてが真である場合だけ、MはTに一致する。 1)MとTは正式なパラメータの同じ数字を有し、 2)Mの各パラメータのタイプは、Tのパラメータのタイプと一致し、 3)Mの結果タイプは、Tの結果タイプと一致し、 4)MはT以上にもっとチェックされた例外を投じるように宣言されては
いない。Mが、何らかのチェックされた例外タイプについて述べるthrowク
ローズを含んでいれば、Tはthrowクローズを含んでいなければならず、t
hrowクローズ内に挙げられている全てのチェックされた例外タイプに対し、
その同じ例外クラス又はそのスーパークラスの中の一つがTのthrowクロー
ズ内に生じなければならない。
同じタイプ)を要求するので、何れの所定のターゲットに対しても一致するメソ
ッドは多くとも1つしかあり得ないことに留意されたい。
デレゲイトタイプに一致するメソッド宣言を求めて検索され、スーパークラス及
びスーパーインターフェースから継承されるメソッド定義は、この検索に含まれ
ている。メソッド宣言がメソッド呼び出しにアクセス可能かどうかは、メソッド
宣言内のアクセス変更子(公共、無し、保護されている、又は私用)及びメソッ
ド指示子が現れる場所による。クラス又はインターフェースが、一致し、且つア
クセス可能であるメソッド宣言を持っていなければ、コンパイル時間エラーが発
生する。
これはデレゲイト例示式に対するコンパイル時間宣言と呼ばれる。コンパイル時
間宣言に、更に複数のチェックがなされなければならない。コンパイル時間エラ
ーは、 1)メソッド指示子が、Identifierの形態のMethodNameを有し、且つメソ
ッド指示子がstaticメソッドか、スタティックイニシャライザか又はst
atic変数用イニシャライザ内に現れる場合、 2)メソッド指示子が、TypeName.Identifierの形態のMethodNameを有す
る場合、に発生する。
ト)。 3)次のように計算される呼び出しモード、 a)コンパイル時間宣言がprivate.変更子を有し、呼び出しモ
ードがnonvirtualである場合。 b)さもなければ、左かっこ前のメソッド呼び出し部分がsuper.
Identifierの形態であり、呼び出しモードがsuperである場合。 c)さもなければ、コンパイル時間宣言がインターフェース内にあり、
呼び出しモードがinterfaceである場合。 d)さもなければ、呼び出しモードがvirtualである場合。
シンインタープリタソフトウェア16(図1)を提供する。実行時にデレゲイト
例示式を処理するためには数段階が必要である。第一に、コンパイラはターゲッ
トのタイプ及びメソッドのアクセス可能性をチェックしなければならない。第二
に、コンパイラは、インスタンスメソッドがオーバーライディングする可能性を
考慮に入れながら、呼び出すメソッドの位置を突き止めなければならない。
をデレゲイト例示式に対するコンパイル時間宣言を含んだクラス又はインターフ
ェース、mをメソッドの名前とする。
分として、メソッドmがタイプT内にまだ存在することを保証する。これが真で
ない場合は、(RuntimeExceptionのサブクラスである)IllegalArgu
mentExceptionが生成される。呼び出しモードがinterfac
eの場合、バーチャルマシンソフトウェア16は、ターゲットリファレンスタイ
プがまだ特定化されたインターフェースを実行することもチェックしなければな
らない。ターゲットリファレンスタイプがインターフェースをまだ実行していな
ければ、IncompatibleClassChangeErrorが生成さ
れる。
ドmがアクセス可能であることも保証しなければならない。
Tはアクセス可能である。 メソッドmに関しては、 1)mがpublicである場合、mはアクセス可能である。(インター
フェースの全メンバーはpublicである(JLSの§9.2参照))。 2)mがprotectedである場合、mは、TがCと同じパッケージ
内にあるか又はCがT又はTのサブクラスである場合及びその場合にだけアクセ
ス可能である。 3)mがデフォルト(パッケージ)アクセスを有する場合、mは、TがC
と同じパッケージ内にある場合及びその場合にだけアクセス可能である。 4)mがprivateである場合、mは、CがTである場合及びその場合にだ
けアクセス可能である。 T又はmの何れかがアクセス不可能である場合、IllegalArgume
ntException(JLSの§12.3参照)が生成される。
発明の実施例では、デレゲイトのあるスタティックメソッドをカプセル化するこ
とは不可能で、従ってインスタンスメソッドがデレゲイトによりカプセル化され
るべきことが明白であり、ターゲットリファレンスが存在する。ターゲットリフ
ァレンスがnullである場合、このポイントにNullPointExcep
tionが投入される。そうでなければ、ターゲットリファレンスは、ターゲッ
トオブジェクトを参照するよう告げられ、デレゲイトが呼び出されるときに、キ
ーワードthisの値として用いられる。呼び出しモードに関する他の4つの可
能性は、次に、Javaバーチャルマシンインタープリタソフトウェア16によ
り以下のように考慮される。
許されない。クラスTのメソッドmは呼び出されるものである。そうでなければ
呼び出しモードはinterface、virtual又はsuperであり、
オーバーライディングが生じるかもしれない。ダイナミックメソッド探索が用い
られる。ダイナミック探索プロセスはクラスSからスタートして、以下のように
決定される。 1)呼び出しモードがinterface又はvirtualの場合、S
は最初はターゲットオブジェクトの実際の実行時クラスRである。ターゲットオ
ブジェクトがアレイである場合、RはクラスObjectである(呼び出しモー
ドinterfaceに対しては、必ずRがTを実行し、呼び出しモードvir
tualに対しては、必ずRがT又はTのサブクラスの何れかであることに留意
のこと)。 2)呼び出しモードがsuperである場合、Sは最初はデレゲイト例示
を含むクラスCのスーパークラスである。
らば次にクラスSのスーパークラスを検索するために次の手続きを用いる。 1)クラスSが(上記)コンパイル時間に決定されたメソッド呼び出しに
必要な同じ記述子(同数のパラメータ、同じパラメータタイプ、同じリターンタ
イプ)を使ってmと名付けられているメソッドについての宣言を含んでいる場合
には、これがデレゲイトによりカプセル化されるべきメソッドであり、手続きは
終了する。 2)そうでなくて、SがTでない場合、この探索の結果がどう出ようと、
この同一の探索手続きはSのスーパークラスを使って実行される。
るが、なぜなら、そうでなければ上記のチェックによりIllegalAcce
ssExceptioinが投入されることになるからである。ダイナミック探
索プロセスは、ここでは明示的に記載されているが、しばしば暗黙的に実施され
ることに留意しておくべきである。
信頼)コードを破壊するためには用いられないことを保証するための手続きが提
供されている。特別な機密保全予防対策がなければ、信頼されていない(以降、
非信頼)メソッドがデレゲイトを使って、非信頼クラスがコールスタックに現れ
ないような様式で、信頼メソッドを呼び出す可能性がある。標準的なJava機
密保全の下では、コールスタックに非信頼メソッドがない場合は、信頼メソッド
はうまく行くし、新しい非信頼メソッドがコールスタックにある場合は、おそら
く失敗することになる。良い例がjava.io.File.deleteであ
り、非信頼コードがこのメソッドを呼び出そうとすれば、SecurityExceptionが
投入される。しかし、非信頼コードがこの信頼メソッドをデレゲイト内にカプセ
ル化し、完全な信頼コードに送って、デレゲイトを呼び出す場合は、メソッド(
java.io.File.delete)はうまく行くであろう。従って、こ
こに述べる本実施例は、以下に論じるように、デレゲイトを例示する際に特定の
機密保全チェックを実行する。この機密保全チェックは実行時に行われる。
して、機密保全許可のセットを全てのJavaクラスと関係付けている。所与の
クラスに対して、関係付けられた機密保全許可のセットが、クラスのメソッドが
実行を許される(ファイルIO及び印刷のような)信頼オペレーションを決定す
る。非信頼クラスは空の許可セットを有し、一方、完全信頼クラスは完全な許可
セットを有する(すなわち、すべての許可を有する)。
ス)Cの許可は、実行時に決定される、メソッドmを含むクラスに所有されてい
る許可のスーパーセットでなければならない。これに当てはまらなければ、Il
legalAccessExceptionが投入される。更に、この機密保全
チェックは、デレゲイト又はマルチデレゲイトクラスから出されるクラスが最終
であることを要求して、コールチェーンを探索させ、どのエンティティがデレゲ
イトを作成するのかを調べさせる。結果として、非信頼クラスは非信頼メソッド
にデレゲイトを作成するだけで、完全信頼クラス(即ちシステムクラス)はアク
セス可能な何れのメソッドにも作成できる。
フトウェア構成要素である。しかし、これらの構成要素は、オペレーションのモ
ードによって、ある場合には、結合デレゲイトのような同じ機能を実行すること
もある。更に、コンパイラ14とインタプリタソフトウェア16の機能は、ある
場合には、互いに交換されたり又は共有されたりすることがある。従って、本発
明は、ここに記載の実施例に述べられている機能の特定の分割には決して限定さ
れるものではない。むしろ、コンパイラ14とインタプリタソフトウェア16と
は、オブジェクトベースのコンピュータコードを処理してコンピュータによる実
行に備えるという共通のタスクを共有するものとして考えられるべきである。
タイプDelegateのオブジェクトは、呼び出し可能なエンティティ、すな
わちインスタンス及びインスタンス上のメソッドをカプセル化する。クラスDe
legateの定義例38を図6に示す。
ストラクタは、新たに作成されるDelegateオブジェクトが、引き数によ
り特定されるターゲット及びメソッドをカプセル化するように初期化する。ta
rgetがヌルの場合、NullPointerException例外が浮上する。methodNameの引
き数は、先に定義されているように、一致していて、アクセス可能で、適切なメ
ソッドを指示しなければならない。一致するターゲットメソッドが見付けられな
い場合、IllegalArgumentException例外が実行時に投入される。メソッドが見付
けられない場合は、NoSuchMethodErrorが投入される。
ゲットメソッド及び呼び出しリストを有するDelegateオブジェクトであ
る場合及びその場合にだけ、public final boolean equals(Object obj)
の結果は真である。2つのデレゲイトは、Delegate.equasにより
定められているように、互いに等しくなるために同じタイプである必要はない。
この式はオブジェクトのequalsメソッドを無効とする(JLSの§20.
1.3参照)。
は、所与の2つのデレゲイトを組み合わせて単一のデレゲイトを形成する。aと
bが共にヌルの場合、結果はヌルである。aかbのどちらかがヌルの場合、結果
はヌルでないデレゲイトである。aとbが共にヌルでない場合、結果は、aの呼
び出しリストとbの呼び出しリストをその順に連結させることにより形成される
呼び出しリストを備えた新しいデレゲイトである。呼び出しリストが、同じオブ
ジェク上の同じメソッドを参照する重複エントリーエントリを含むことは、エラ
ーとはみなされない。aとbが共にヌルでない場合、デレゲイトaとデレゲイト
bは、同じ実タイプでなければならない。そうでない場合には、IllegalArgumen
t Exception例外がコンパイラ14により投入される。aとbが共にヌルでない
場合、デレゲイトaとデレゲイトbは、クラスMulticastDelegateから出る実タ
イプでなければならない。そうでない場合、Multicast NotSupportedException
例外がコンパイラ14により投入される。
各デレゲイトの呼び出しリストをデレゲイトアレイ内に順に連結して構成された
呼び出しリストを備えたデレゲイトを戻す。結果としての呼び出しリストが空で
ある場合、回答はヌルである。デレゲイトアレイはヌルエントリを含んでいても
よいが、そのようなエントリは無視される。デレゲイトアレイパラメータがヌル
又は空である場合、結果はヌルである。デレゲイトアレイのヌルでない構成要素
は、同じ実タイプでなければならない。さもなければIllegalArgumentException
例外が投入される。デレゲイトアレイ内に複数のヌルでない構成要素がある場合
には、これらの構成要素はクラスMultiDelegateから出る実タイプでなければな
らない。さもなければ、MulticastNotSupportedException例外がコンパイラ14
により投入される。
value)は、バリューパラメータにより与えられるデレゲイト最終オカレンス
(あれば)を、ソースパラメータにより与えられるデレゲイトの呼び出しリスト
から取り除くことにより形成される呼び出しリストを備えたデレゲイトを戻す。
呼び出しリストから取り除かれるデレゲイトは、デレゲイトを問い合わせ中の呼
び出しリストメンバーとして式value.Equals(delegate)が真となる最終デレ
ゲイトである。バリューパラメータがヌルである場合、又はバリューパラメータ
により与えられるデレゲイトがソースの呼び出しリストに出現しない場合、結果
はソースパラメータである。結果としての呼び出しリストが空である場合、結果
はヌルである。ソールパラメータがヌルである場合、結果はヌルである。
ンド方式(Delegate. dynamicInvoke)でメソッドを呼び出すのに用いることが
できる。呼び出されると、dynamicInvokeメンバーは、arg引き数の要素を引き数
としてメソッドへ送って、デレゲイトをカプセル化するメソッドを実行する。Dy
namicInvokeの結果が、カプセル化されたメソッドの呼び出しの結果である。メ
ソッド呼び出しの結果がオブジェクトリファレンスであれば、このリファレンス
が戻される。そうではなく、結果がプリミティブ値であれば、このプリミティブ
値がオブジェクトに包まれて戻される。(例えば、ブール値はブールオブジェク
トに包まれる。)そうでなければ、メソッドのリターンタイプはボイドであり、
null値を含むオブジェクトが戻される。
(ターゲット、メソッド)対のメソッドである独自のメソッドオブジェクトに戻
す。
呼び出し可能なエンティティをカプセル化するのに必要な(インスタンス、メソ
ッド)組のインスタンス部分に戻す。
)メソッドは、このデレゲイトの呼び出しリストを呼び出し順に戻す。マルチキ
ャストでないデレゲイトに対しては、結果は常に単一要素を有するアレイである
。マルチキャストデレゲイトに関しては、以下に述べるように、結果アレイは2
つ以上の構成要素を有する。戻されたアレイ内の各要素の呼び出しリストは、正
確に1つのエントリを有することが保証されている。
teから出ており、Javaの本実施例では、Class com.ms. lang. Multicast
Delegateとして言及されている。マルチキャストデレゲイトの呼び出しには、
複数のメソッドが呼び出される効果がある。デレゲイトのinvokeにより呼
び出されるメソッドのセットは、デレゲイトの呼び出しリストとして言及され、
getInvocationListメソッドを使って入手可能である。
む呼び出しリストを常に有する。MulticastDelegateクラスか
ら継承するデレゲイトは、2つ以上の構成要素を含む呼び出しリストを有する。
メソッドDelegate.combine及びDelegate.remov
eメソッドは新しい呼び出しリストを作成するのに用いられる。
くる引き数を使って呼び出しリスト内の各デレゲイトを呼び出すことにより、マ
ルチキャストする。デレゲイトは、呼び出しリスト内に出現する順番で、同期的
に呼び出される。デレゲイトの1つが例外を戻せば、マルチキャストは停止し、
例外が呼び出しメソッドの呼び出し人に伝播される。マルチキャスト呼び出しが
行われている間に、Delegate.combine及びDelegate.
removeへの呼び出しが起こるかもしれない。そのような呼び出しは、既に
進行中のマルチキャストに採用されている呼び出しリストに影響しない。
うに定義される。
デレゲイトへの内部リファレンスである。正しい呼び出し順序が保存されるため
には「次」のデレゲイトを、このデレゲイトがカプセル化するメソッドを呼び出
す前に呼び出さなければならない。
ストラクタは、デレゲイトベースクラス内で定義された対応するコンストラクタ
のように機能する。
構築し、マルチキャストデレゲイトの「次」のチェーンを歩いて調べることによ
り呼び出すことである。このリストは、プログラムのスタックに配置することが
できる。次にバーチャルマシンインタプリタソフトウェア16は、このアレイを
逆の順序に歩いて、マルチキャストデレゲイトの呼び出しメソッドへ送られてく
るパラメータを使って各デレゲイトの呼び出しメソッドを呼び出す。この技法の
利点は、スタックにはマルチキャストデレゲイトの呼び出しメソッドへ送られて
くるパラメータの、最大でも2つのコピーしかないので、プログラムのスタック
はそれほど深くなくてよいことである。
スタティックメンバーを包含している。この目的のために、形状がデレゲイトベ
ースクラスにより定義されている「クラス」コンストラクタが提供されている。
このコンストラクタに対する引き数、クラス及びストリングメソッドの名前は、
デレゲイトのタイプと組み合わせられ、デレゲイト定義に一致する指示されたク
ラス上のスタティックメンバーを独自に特定する。新たに構築されるデレゲイト
は、このスタティックメソッドをカプセル化する。このコンストラクタは、 protected Delegate(Class class、StringmethodName) の形態を取る。
より特定されるスタティックメソッドをカプセル化するように、この新しく作成
されるデレゲイトオブジェクトを初期化する。クラスがヌルである場合、Nul
lPointException例外が浮上する。MethodName引き数は、先に定
義されたように、一致しており、アクセス可能で、且つ適切なメソッドを告げな
ければならない。一致するターゲットメソッドが見つからない場合は、実行時に
IllegalArgumentException例外が投入される。そのよ
うなメソッドが見付からない場合は、IllegalArgumentExce
ptionが投入される。
階では、検索するクラス又はインターフェースが決定されなければならない。そ
れがTypeName.Identifierの形態を取る修飾された名前である場合、メソッドの
名前はIdentifierであり、検索するクラスはTypeNameと名付けられたクラスであ
る。TypeNameがクラスではなくインターフェースの名前である場合、この形態は
スタティックメソッドだけを指名することができて、インターフェースはスタテ
ィックメソッドを持っていないので、コンパイル時間エラーが生じる。クラスの
インスタンスメンバーをラッピングするケースと同じく、メソッドが適切かどう
か決定することも必要である。デレゲイト例示式に対し、一致していて、アクセ
ス可能なメソッド宣言がある場合、それはそのデレゲイト例示式に対するコンパ
イル時間宣言と呼ばれる。
ド指示子が識別子の形のMethodNameを有し、メソッド指示子がスタティックメソ
ッド、スタティックイニシャライザ又はスタティック変数のイニシャライザ内に
現れる場合、コンパイル時間エラーが生じる。別の点で、スタティックメンバー
のラッピングは、上記のように、インスタンスメンバーのラッピングへの拡張又
は変更である。
イトクラス:protected MulticastDelegate(Class class、String methodNa
me)に提供されている。このコンストラクタは、デレゲイトベースクラス内で定
義される対応コンストラクタのように機能する。
tance)をサポートしない。しかしときには、そのようなインターフェースが、現
存するコードをデレゲイトタイプのスタイルに変換するために必要となることも
あるであろう。この状況は、java.lang. Thread vs.java.lang.Runnableに似て
いるかもしれない。この問題に取り組むために、本発明の一つの実施例は、図8
に示されているように、マイクロソフト(登録商標)ビジュアルJ++を拡張し
てcom.ms.lang.Callableインターフェース42を含むようにする。デレゲイトは
このインターフェースを実行するのが望ましい。
イベントリスナー(又はイベントリスナーのセット)に匿名で、数種類の状態遷
移が発生したことを通知できる構成である。一般的にイベントは、構成要素が構
成要素を用いている機能性コードを如何に公開するかについて説明する「構成要
素モデル」と呼ばれる大規模システム内で用いられる。最新のほとんどの構成要
素モデルは、構成要素がその(構成要素の状態を説明する)特性、その(構成要
素が実行できるアクションを示す)メソッド及びその(関心事が生じた構成要素
からの通知である)イベントについてどのように公開するかを基本レベルで説明
する。
ために、構成要素消費者は、複数の引き数を送って構成要素上のメソッドを呼び
出す。イベントについては、呼び出しが反対方向であり、構成要素が複数の引き
数を送って、構成要素消費者により提供されるメソッドを呼び出す。呼び出しの
方向の違いに加えて、他にも幾つか顕著な違いが見られる。
示的に従属している。これに対し、イベント呼び出しは通常匿名であり、構成要
素は構成要素消費者に明示的には従属しない。代わりに、リスナーは、イベント
ソースにより提供されるメカニズムを使ってイベント又はイベントセットに接続
できる。
ち数とタイプ、又は引き数とリターンタイプを決定する。イベント呼び出しに関
しては、イベントソース(呼び出し人)は形状を決定する。
ベントは、通常、構成要素(販売者により書き込まれることが多い)とイベント
ハンドリングコード(構成要素を使って開発者により書き込まれる)との間の交
信に用いられる。以下に説明されている構成要素モデルの実施例は、シングルキ
ャスト及びマルチキャスト両方のイベントを支援する。
を述べる。ここでは、幾つかのクラスが定義され、論じられている。 1)クラスEvent。イベントは、イベントオブジェクト内の関心のある状
態をパッケージする。そのようなイベントオブジェクトは全てイベントクラスか
ら出ている。イベントクラスはパラメータなしのイベントにも直接用いられる。 2)デレゲイトEventHandler、これはクラスイベントと協力して用いられ
る。 3)クラスCancelEvent、これはキャンセルすることのできるアクション
に用いられる。イベントソースは、アクションがすぐに発生することを、アクシ
ョンが起こる前に関心あるリスナーに通知する。各リスナーはアクションを「キ
ャンセル」する機会を有する。 4)デレゲイトCancelEventHandler、これはクラスキャンセルイベントと
協力して用いられる。
以上を行う。 1)イベントクラスを定義する 2)「イベントハンドラ」デレゲイトを定義する 3)イベントソースがイベントと接続し、その後それと切断することがで
きるようにする「追加」及び「取り外し」メソッドを提供するか、又は 4)を立ち上げる「イベント立上げ」メソッドを提供する。
存するイベントクラスを採用することができるので、新しいイベントクラスを定
義することは必ずしも必要ではない。
しないイベントを定義して用いることは可能である。本例の構成要素モデルは、
イベントワイヤリングシナリオ及びバージョニングを容易にするために、オブジ
ェクトとしてイベントをパッケージすることを勧める。これらのテーマについて
は、更に以下で論じる。ウインドウクラスにより持ち上げられたマウスイベント
に対しては、図9に示されているイベントクラスを定義することができる。
のようなデレゲイトは、多数のイベントに用いられる。約束により、イベントハ
ンドラデレゲイトは、 public multicast delegate void <Name>Handler(Object source、<Ev
entType e) のパターンと一致するように定義されている。
スがイベントに接続し、その後イベントを切断できるような「追加」及び「取り
外し」メソッドを提供する。約束により、イベントハンドラデレゲイトは、 Public void addOn<EventName>Handler(<EventHandlerType>handler) Public void removeOn<EventName>Handler(<EventHandlerType>handler) のパターンに一致するように定義される。
に立ち上げられたイベントをキャンセルし、構成要素の消費者から妨害されずに
前後処理できるようにするメソッドである。メソッド本体は、引き数を送り、t
hisをイベントに対するソースパラメータの値として加えて、適切なデレゲイ
ト値付きの特性上にDelegate.invokeを呼び出すイベントを立ち
上げる。最終クラスに対しては、引き出されるクラスが存在することは有り得な
いので、そのようなメソッドを提供する必要はない。約束により、イベントハン
ドラデレゲイトはパターン protected void on<EventName>(<EventType> e) に一致するように定義される。
ベントが構成要素に利用可能かを学習する。 2)例えば図11のコード48で示されているように、応答イベント特性に
対して用いられるデレゲイトにより定義される正当なシグネチャを使って、イベ
ントハンドラ関数を作成する。 3)例えば図12のコード50で示されているように、イベントソースによ
り提供される「追加」メソッドを呼び出すことにより、イベントハンドリングコ
ードをイベントに接続する。 4)例えば図13のコード52で示されているように、ソースにより提供さ
れる「取り外し」メソッドを呼び出すことにより、イベントハンドリングコード
をイベントから、随意的に、切断する。ほとんどの場合、明示的に切断する必要
はない。
+コード54の例である。図14A―14Bでは、マウスイベントクラス及びマ
ウスイベントハンドラデレゲイトが宣言されている。2つのボックスインスタン
スを用いる構成要素消費者の例と、ボックスクラス宣言とが述べられている。
―15Bに示されている。図15A―15BのJ++プログラム56で、そのハ
ッピー特性が変わるときに、スマイリー制御がイベントを立ち上げる。
オにも等しく上手く作用する。ここに述べられている実施例では、好適な約束に
より、全イベントはマルチキャストである。しかし、シングルキャストイベント
を定義することは実に簡単であり、デレゲイト宣言内のマルチキャスト変更子を
省略するだけである。イベントは、クラス定義又はインターフェースのどちらか
に現れる。一組のイベントを1つのインターフェース内に定義することと、この
インターフェースを支援する複数のクラスを有することとが可能である。
本的な違いは、どのように接続がなされるかである。マルチキャストの場合、マ
ルチキャストデレゲイトを用いて「addOn」及び「removeOn」メソッドを採用す
ることが必要である。シングルキャストでは、非マルチキャストデレゲイトを用
いて、特性設定及び入手によりイベントとの接続/切断がなされるようにするこ
とができる。つまり構成要素は、出現する各イベントに対するデレゲイト値付き
特性を提供する。例えばMouseMoveイベントでは、図16のコード58で示され
ているように、「foo」イベントを出現させようとする構成要素は、「OnFoo」特
性を出現させることになる。
約束により、構成要素に対するイベントは、タイプがクラスイベントから出るク
ラスであるような単一のパラメータを採用する。
的にスタティックメンバーEMPTYは、図17に示されているコード60に例
示されているように、この目的に用いられ、イベントが効果的に立ち上げられる
ことができるようにする。
タイプイベントの単一のパラメータを取るイベントに用いられる。
するイベントに用いられる。キャンセルイベントクラスは、当該アクションがキ
ャンセルされているかどうかを述べるcancelという名のブールフィールド
を提供する。真の値は、アクションがキャンセルされていることを示し、偽の値
は、アクションがキャンセルされていないことを示す。cancelに対する最
初の値は、提供されるコンストラクタを使って提供される。一般的に、canc
elはfalseに初期化され、そのためイベントが処理されないか又はイベン
トハンドラがcancelフィールドを変更しなければ、イベントソースは、ア
クションを実行する許可が与えられているとみなす。キャンセルイベントクラス
は、図19のコード64に示されている。
るように、タイプキャンセルイベントの単一のパラメータを取るイベントに用い
られる。
に役立つ。しかし、J/直接呼び出し及びレイジー呼び出しにおけるコールバッ
ク機構に取って替わるような非イベント指向シナリオにも有益である。
イクロソフト(登録商標)ビジュアルJ++として示されている。しかし、本明
細書に記述されている本発明は、C++及びマイクロソフト(登録商標)ビジュ
アルベーシックのようなオブジェクトベースのプログラミング言語のような他の
オブジェクト指向プログラミング言語システムに、又はマイクロソフト社又は他
の開発者から入手可能なJ++の他のバージョンに広く適用されることは理解頂
けるであろう。
かれるコンピュータープログラムと、コンピュータープログラムをコンピュータ
ーシステムで実行できるコマンドへ翻訳するコンパイラ、実行時バーチャルマシ
ン及び他のプログラミングシステムとの両方に適用可能であり、その両方の形式
を取る。
ブルディスク、コンピューターメモリ、又はコードを1つのコンピューター又は
記憶媒体から他のコンピューター又は記憶媒体へ転送するのに用いられる電気信
号のような、担体の中又は上において、デレゲイト及びイベントモデルを物理的
なコンピューターコードフォームに具体化する。
ここに記述されている本発明はソフトウェアでの実行だけに決して限定されるも
のではないし、フィルムウェア及びシリコンベース又は他の形態のハードワイヤ
ードロジック、あるいはハードワイヤードロジック、フィルムウェア、ソフトウ
ェア又は何らかの好適な代用品の組み合わせ内でのインプリメンテーションをも
考慮していることは明らかである。
テムにおいてメソッドへのリファランスをカプセル化し、そのリファレンスが安
全であることを保証するためのメソッド及び装置を説明してきた。上に述べたよ
うに、本発明は、 a)参照されるメソッドの形状を定義するエンティティを定義し、 b)メソッドへのリファレンスを入手し、 c)このリファレンスを任意のデータ構成で保存し、 d)リファレンスを他のパーティにより書き込まれたコードへ送り、 e)メソッドリファレンス保持者誰にでもメソッド呼び出しができるよう
にし、 f)メソッドリファレンス保持者がターゲットオブジェクト及び参照され
るメソッドを決定できるようにする。
適合問題を学習でき、 b)開発ツールが、開発者に、デレゲイトを用いる構成要素の形状につい
て情報を提示することができる ようにしながら、強くタイプされた方式で上記目的を達成する。
イベントベースプログラミングを提供する。
る。
ng.Callableインターフェースを含むようにする実施例である。
Claims (44)
- 【請求項1】 クラスのインスタンスの第二メソッドを呼び出すことにより
第一メソッドを呼び出す段階を実行するためにコンピューターを用いる段階から
成る、オブジェクトベースのコンピューターコードを使ってコンピューターを操
作するための方法において、前記第二メソッドに提供されるパラメータが前記第
一メソッドに提供され、前記第二メソッドのパラメータリストが前記第一メソッ
ドのパラメータリストと一致し、更に、前記第一メソッドは名前により、及び前
記第一メソッドのパラメータリスト及び結果タイプを前記クラスに対して宣言さ
れたパラメータリスト及び結果タイプと突き合わせることにより識別されること
を特徴とする方法。 - 【請求項2】 前記クラスのインスタンスが、変数に割り当てることができ
一つの手続きから別の手続きへ送ることができる値により表されることを表示す
る段階を更に含むことを特徴とする請求項1に記載の方法。 - 【請求項3】 前記クラスのインスタンスを表す値を割り当てられている変
数上の前記第二メソッドを呼び出すために、プログラムコードを用いる段階を更
に含むことを特徴とする請求項2に記載の方法。 - 【請求項4】 前記第一メソッドを用いてイベントを処理する段階を更に含
むことを特徴とする請求項1に記載の方法。 - 【請求項5】 前記第二メソッドへの呼び出しで1つ又はそれ以上の追加の
第一メソッドを呼び出す段階を更に含み、1つ又はそれ以上の対応する追加のパ
ラメータのセットが、それぞれ、もう一つの追加の第一メソッドに供給される第
二メソッドに供給されることを特徴とする請求項1に記載の方法。 - 【請求項6】 前記第二メソッドに関連する呼び出しリストを作成する段階
を更に含み、前記呼び出しリストは呼び出される前記第一メソッドを特定するこ
とを特徴とする請求項5に記載の方法。 - 【請求項7】 前記呼び出しリストに第一メソッドを加え、前記呼び出しリ
ストから第一メソッドを削除する段階を更に含むことを特徴とする請求項6に記
載の方法。 - 【請求項8】 物理的な担体上に、コンピューターが読み取り可能な形式で
具体化されているコンピュータープログラムコードを備えた、オブジェクトベー
スのコンピュータープログラム製品において、前記プログラムコードは、クラス
のインスタンスの第二メソッドを呼び出すことによりコンピューターに第一メソ
ッドを呼び出す段階を実行させ、前記第二メソッドに供給されるパラメータが前
記第一メソッドに供給され、且つ前記第二メソッドのパラメータリストが前記第
一メソッドのパラメータリストと一致し、更に、前記第一メソッドは、名前によ
り、且つ前記第一メソッドのパラメータリスト及び結果タイプを前記クラスに対
して宣言されたパラメータリスト及び結果タイプと突き合わせることにより識別
されることを特徴とするコンピュータープログラム製品。 - 【請求項9】 更に、前記クラスの前記インスタンスが、変数に割り当てる
ことができ一つの手続きから別の手続きへ送ることのできる値により表示されて
いることを特徴とする請求項8に記載のコンピュータープログラム製品。 - 【請求項10】 更に、プログラムコードが、コンピューターに、前記クラ
スのインスタンスを表す値を割り当てられている変数上の前記第二メソッドを呼
び出させることを特徴とする請求項9に記載のコンピュータープログラム製品。 - 【請求項11】 更に、イベントが前記第一メソッドを用いて処理されるこ
とを特徴とする請求項8に記載のコンピュータープログラム製品。 - 【請求項12】 更に、前記コンピューターは、前記第二メソッドへの呼び
出しにより1つ又はそれ以上の追加の第一メソッドを呼び出し、1つ又はそれ以
上の対応する追加のパラメータのセットが、それぞれ、もう一つの追加の第一メ
ソッドに供給される第二メソッドに供給されることを特徴とする請求項8に記載
のコンピュータープログラム製品。 - 【請求項13】 更に、前記第二メソッドに関連する呼び出しリストが作成
され、前記呼び出しリストは、呼び出される前記第一メソッドを特定することを
特徴とする請求項12に記載のコンピュータープログラム製品。 - 【請求項14】 更に、第一メソッドは、前記呼び出しリストに加えられ、
そして前記呼び出しリストから削除されることを特徴とする請求項13に記載の
コンピュータープログラム製品。 - 【請求項15】 クラスのインスタンスの第二メソッドを呼び出すことによ
り第一メソッドを呼び出すことができるようになっているコンピューターを備え
たオブジェクトベースのプログラミングシステムにおいて、前記第二メソッドに
提供されるパラメータが前記第一メソッドに提供され、且つ前記第二メソッドの
パラメータリストは前記第一メソッドのパラメータリストと一致し、更に、前記
第一メソッドは名前により、且つ前記第一メソッドのパラメータリスト及び結果
タイプを前記クラスに対して宣言されたパラメータリスト及び結果タイプと突き
合わせることにより識別されることとを特徴とするプログラミングシステム。 - 【請求項16】 更に、前記クラスの前記インスタンスが、変数に割り当て
ることができ一つの手続きから別の手続きへ送ることができる値により表示され
ていることを特徴とする請求項15に記載のプログラミングシステム。 - 【請求項17】 更に、プログラムコードが、コンピューターに、前記クラ
スのインスタンスを示す値を割り当てられている変数上の前記第二メソッドを呼
び出させることを特徴とする請求項16に記載のプログラミングシステム。 - 【請求項18】 更に、イベントが前記第一メソッドを用いて処理されるこ
とを特徴とする請求項15に記載のプログラミングシステム。 - 【請求項19】 更に、前記コンピューターは、前記第二メソッドへの呼び
出しにより1つ又はそれ以上の追加の第一メソッドを呼び出し、1つ又はそれ以
上の対応する追加のパラメータのセットが、それぞれ、もう一つの追加の第一メ
ソッドに供給される第二メソッドに供給されることを特徴とする請求項15に記
載のプログラミングシステム。 - 【請求項20】 更に、前記第二メソッドに関連する呼び出しリストが作成
され、前記呼び出しリストは、呼び出される前記第一メソッドを特定することを
特徴とする請求項19に記載のプログラミングシステム。 - 【請求項21】 更に、第一メソッドは、前記呼び出しリストに加えられ、
そして前記呼び出しリストから削除されることを特徴とする請求項20に記載の
プログラミングシステム。 - 【請求項22】 更に、前記コンピューターが、ソフトウェアに適合してい
ることを特徴とする請求項15に記載のプログラミングシステム。 - 【請求項23】 更に、前記コンピューターが、ハードウェア及びソフトウ
ェアに適合していることを特徴とする請求項15に記載のプログラミングシステ
ム。 - 【請求項24】 更に、前記プログラミングシステムが、コンパイラを含ん
でいることを特徴とする請求項15に記載のプログラミングシステム。 - 【請求項25】 更に、前記プログラミングシステムが、インタプリタを含
んでいることを特徴とする請求項15に記載のプログラミングシステム。 - 【請求項26】 a)第一メソッドを有する第一クラスを、第二クラスの第
二メソッドを参照するのに用いられるように定義するプログラミング段階と、 b)前記第一クラスのインスタンスを値で表示し、そこでは前記第二クラスのイ
ンスタンス及び前記第二メソッドは前記第一クラスの前記インスタンスのパラメ
ータとして識別されているプログラミング段階と、 c)前記インスタンスを参照するために、前記値を用いて前記第一クラスの前記
インスタンス上の前記第一メソッドを呼び出すことにより、前記第二メソッドを
呼び出すプログラミング段階とを実行するためにコンピューターを用いる段階か
ら成ることを特徴とする、オブジェクトベースのコンピューターコードでコンピ
ューターをプログラミングするための方法。 - 【請求項27】 クラスのインスタンスの第二メソッドを呼び出すことによ
り第一スタティックメソッドを呼び出す段階を実行するためにコンピューターを
用いる段階から成り、前記第二メソッドに供給されるパラメータが前記第一メソ
ッドに供給され、且つ前記第二メソッドのパラメータリストは前記第一メソッド
のパラメータリストと一致し、更に、前記第一メソッドは名前により、且つ前記
第一メソッドのパラメータリスト及び結果タイプを前記クラスに対して宣言され
たパラメータリスト及び結果タイプと突き合わせることにより識別されることを
特徴とする、オブジェクトベースのコンピューターコードを使ってコンピュータ
ーを操作するための方法。 - 【請求項28】 コンピューターに、 1)以下のプログラムステートメント、即ち、 a)第一クラスはもう一つのクラスのインスタンスのメソッドを呼び出すのに
用いられることを宣言し、そこでは前記第一クラスはパラメータリスト及び結果
タイプと共に宣言され、前記第一クラスは他のクラスのメソッドを呼び出すのに
用いられるメソッドを含んでいるプログラムステートメントと、 b)前記第一クラスのインスタンスを、パラメータとして供給される他のクラ
スのメソッドの名前及びインスタンスの名前と共に例示するプログラムステート
メントと、 c)前記第一クラスの前記インスタンスのメソッドを呼び出し、他のクラスの
前記メソッドへ提供されるパラメータを含んでいるプログラムステートメントと
をコンピューターで読み取り可能に受信させ、 2)他のクラスの前記メソッドに関して前記コンピュータに供給される他のプロ
グラムステートメントを検索させ、そのパラメータリスト及び結果タイプを前記
第一クラスのパラメータリスト及び結果タイプと比較することによりそれを識別
するように作用するオブジェクトベースのコンピュータープログラム。 - 【請求項29】 検索により識別された他のクラスの前記メソッドが1つ又
はそれ以上の受け入れ基準を満たすかどうかをチェックするために、コンパイラ
が前記コンピューター上で作動することを特徴とする請求項28に記載のオブジ
ェクトベースのプログラム。 - 【請求項30】 物理的な担体上に、コンピューターが読み取り可能な形式
でコード化されている以下のプログラムステートメント、即ち、 a)第一クラスはもう一つのクラスのインスタンスのメソッドを呼び出すのに用
いられることを宣言し、そこでは前記第一クラスはパラメータリスト及び結果タ
イプと共に宣言され、前記第一クラスは他のクラスのメソッドを呼び出すのに用
いられるメソッドを含んでいるプログラムステートメントと、 b)前記第一クラスのインスタンスを、パラメータとして供給される他のクラス
のメソッドの名前及びインスタンスと共に例示し、そこでは前記第一クラスの前
記インスタンスが値で表示されているプログラムステートメントと、 c)前記第一クラスの前記インスタンスの前記メソッドを呼び出し、他のクラス
の前記インスタンスの前記メソッドへ提供されるパラメータを含んでいるプログ
ラムステートメントとを含むオブジェクトベースのコンピュータープログラム製
品。 - 【請求項31】 前記第一クラスの前記インスタンスは機密保護許可のセッ
トを有するクラス内に例示されており、且つ他のクラスは機密保護許可のセット
を有しており、更に、前記機密保護許可は担体上にコンピューター読み取り可能
な形式でコード化されていることとを特徴とする請求項30に記載の製品。 - 【請求項32】 第一クラスのインスタンス上の第一メソッドを呼び出す段
階から成る、オブジェクトベースのコンピュータープログラム内でターゲットメ
ソッドを呼び出すコンピューターで実行される方法において、前記第一メソッド
へ供給されるパラメータは第二クラス上の前記ターゲットメソッドへのリファレ
ンスを含んでおり、前記第一メソッドは前記ターゲットメソッドを呼び出し、更
に、前記第一クラスの前記インスタンスは機密保護許可のセットを有する第三ク
ラス内に例示され、前記第二クラスは機密保護許可のセットを有し、前記第三ク
ラスの機密保護許可のセットは、前記第三クラスが前記第一クラスのインスタン
スを例示できるかどうかを決定するために前記第二クラスの機密保護許可のセッ
トと比較されることを特徴とする方法。 - 【請求項33】 更に、前記ターゲットメソッドの前記呼び出しが許可され
なければ前記第一クラスは例示されないようにする段階を含むことを特徴とする
請求項32に記載の方法。 - 【請求項34】 オブジェクトベースのコンピューター言語による複数のク
ラス定義と、それぞれが少なくとも幾つかの前記クラスに関連している複数の機
密保護許可とを備えており、前記クラスと関連している前記機密保護許可は、も
う一つのクラスのインスタンスのメソッドを呼び出すのに用いられるクラスのイ
ンスタンスが、もう一つ又別のクラスに例示されているかどうかを決定するため
に互いが比較されるように構成されていることを特徴とするコンピューター読み
取り可能な媒体上に記録されているデータ構成。 - 【請求項35】 オブジェクトベースのコンピュータープログラムを読み取
り処理して実行に備えるための1つ又はそれ以上のコンピュータープログラムモ
ジュールを備えており、前記モジュールの1つ又はそれ以上は、もう一つのクラ
スのインスタンスのメソッドを呼び出すのに用いられるクラスのインスタンスが
もう一つ又別のクラスに例示されているかどうかを決定するために、1つ又はそ
れ以上のクラスに関連している機密保護許可をチェックすることを特徴とする、
物理的な担体上にコンピューターが読み取り可能な形式でコード化されているコ
ンピュータープログラムを備えているコンピュータープログラム製品。 - 【請求項36】 オブジェクトベースのコンピュータープログラムを読み取
り処理して実行に備える段階と、 もう一つのクラスのインスタンスのメソッドを呼び出すのに用いられるクラス
のインスタンスがもう一つ又別のクラスに例示されているかどうかを決定するた
めに、1つ又はそれ以上のクラスに関連している機密保持許可をチェックする段
階とを備えていることを特徴とする、コンピューターを操作する方法。 - 【請求項37】 機密保護チェックを容易にするために、前記クラスの前記
インスタンスが最終クラスであることをチェックする段階を更に含むことを特徴
とする請求項36に記載の方法。 - 【請求項38】 オブジェクトベースのコンピュータープログラムを読み取
り処理して実行に備えるためのコンピューター上で作動する1つ又はそれ以上の
コンピュータープログラムモジュールを備えた、物理的な担体上にコンピュータ
ーが読み取り可能な形式でコード化されているコンピュータープログラムを備え
ているコンピュータープログラム製品において、 前記モジュールの1つ又はそれ以上は、 1)以下のオブジェクトベースのプログラムステートメント、即ち、 a)第一クラスはもう一つのクラスのインスタンスのメソッドを呼び出すのに
用いられることを宣言し、そこでは前記第一クラスはパラメータリスト及び結果
タイプと共に宣言され、前記第一クラスは別のクラスのメソッドを呼び出すのに
用いられるメソッドを含んでいるプログラムステートメントと、 b)パラメータとして供給される他のクラスのメソッドの名前及びインスタン
スの名前と共に前記第一クラスのインスタンスを例示するプログラムステートメ
ントと、 c)前記第一クラスの前記インスタンスの前記メソッドを呼び出し、他のクラ
スの前記メソッドへ提供されるパラメータを含むプログラムステートメントとを
コンピューターが読み取り可能な形式で受信し、 2)他のクラスの前記メソッドに対してコンピュータに供給される他のプログラ
ムステートメントを検索し、そのパラメータリスト及び結果タイプを前記第一ク
ラスのパラメータリスト及び結果タイプと比較することによりそれを識別するこ
とを特徴とする、コンピュータープログラム製品。 - 【請求項39】 オブジェクトベースのコンピュータープログラムを読み取
り処理して実行に備えるための、コンピューター上で作動する1つ又はそれ以上
のコンピュータープログラムモジュールを備えており、前記モジュールの1つ又
はそれ以上は、コンピューターの読み取り可能な形式でプログラムステートメン
トをオブジェクトベースのコンピューター言語で受信し、別のクラスのインスタ
ンスのメソッドを呼び出すのに用いられるクラスを宣言し、前記第一クラスはパ
ラメータリスト及び結果タイプと共に宣言され、メソッドを別のクラスのインス
タンスのメソッドを呼び出すのに用いられる前記第一クラス上に自動的に作成す
ることを特徴とする、物理的な担体上にコンピューターが読み取り可能な形式で
コード化されているコンピュータープログラムを備えているコンピュータープロ
グラム製品。 - 【請求項40】 モジュールが機能的に関連しているコンピュータープログ
ラムコード及びデータを備えていることを特徴とする請求項39に記載のオブジ
ェクトベースのプログラム。 - 【請求項41】 コンピューターが読み取り可能なプログラムステートメン
トをオブジェクトベースのコンピューター言語で受信し、別のクラスのインスタ
ンスのメソッドを呼び出すのに用いられるクラスを宣言するコンピューターを備
えた方法において、前記クラスはパラメータリスト及び結果タイプと共に宣言さ
れ、前記クラスの宣言に応じて、メソッドを別のクラスのインスタンスのメソッ
ドを呼び出すのに用いられる第一クラス上に自動的に作成することを特徴とする
方法。 - 【請求項42】 別のクラスのメソッドを使ってメソッドを参照する段階か
ら成る方法。 - 【請求項43】 別のクラスのメソッドを使ってメソッドを参照するための
コードを備えたコンピュータープログラム。 - 【請求項44】 前記コードがコンピューター上で実行することを特徴とす
る請求項43に記載のプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/089,619 | 1998-06-03 | ||
US09/089,619 US6381734B1 (en) | 1998-06-03 | 1998-06-03 | Method, software and apparatus for referencing a method in object-based programming |
PCT/US1999/012299 WO1999063433A1 (en) | 1998-06-03 | 1999-06-03 | Referencing a method in object-based programming |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002517815A true JP2002517815A (ja) | 2002-06-18 |
JP4220127B2 JP4220127B2 (ja) | 2009-02-04 |
Family
ID=22218650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000552579A Expired - Fee Related JP4220127B2 (ja) | 1998-06-03 | 1999-06-03 | オブジェクトベースプログラミングでのメソッド参照 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6381734B1 (ja) |
EP (1) | EP1082654B1 (ja) |
JP (1) | JP4220127B2 (ja) |
AT (1) | ATE280973T1 (ja) |
DE (1) | DE69921474T2 (ja) |
ES (1) | ES2230900T3 (ja) |
WO (1) | WO1999063433A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009104658A1 (ja) * | 2008-02-19 | 2009-08-27 | 日本電気株式会社 | 情報表示装置、方法及びプログラム |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6918126B1 (en) * | 2000-09-08 | 2005-07-12 | International Business Machines Corporation | Method and apparatus for creating and enforcing protected system level Java code |
US7150001B1 (en) * | 2001-03-19 | 2006-12-12 | Microsoft Corporation | System and method to facilitate design-time component discovery |
US6934946B2 (en) * | 2001-05-15 | 2005-08-23 | Sun Microsystems, Inc. | Lightweight native method invocation interface for java computing environments |
US7152223B1 (en) * | 2001-06-04 | 2006-12-19 | Microsoft Corporation | Methods and systems for compiling and interpreting one or more associations between declarations and implementations in a language neutral fashion |
US7636720B2 (en) * | 2003-05-08 | 2009-12-22 | Microsoft Corporation | Associating and using information in a metadirectory |
US7634480B2 (en) | 2003-05-08 | 2009-12-15 | Microsoft Corporation | Declarative rules for metadirectory |
US7257603B2 (en) * | 2003-05-08 | 2007-08-14 | Microsoft Corporation | Preview mode |
US7516157B2 (en) * | 2003-05-08 | 2009-04-07 | Microsoft Corporation | Relational directory |
US20040225632A1 (en) * | 2003-05-08 | 2004-11-11 | Microsoft Corporation | Automated information management and related methods |
US7330853B2 (en) | 2003-05-08 | 2008-02-12 | Microsoft Corporation | Attribute value selection for entity objects |
US7620658B2 (en) * | 2003-09-24 | 2009-11-17 | Microsoft Corporation | Configuration of a directory system |
US7552450B1 (en) | 2003-09-30 | 2009-06-23 | Microsoft Corporation | Systems and methods for enabling applications via an application programming interface (API) to interface with and configure digital media components |
US8533597B2 (en) * | 2003-09-30 | 2013-09-10 | Microsoft Corporation | Strategies for configuring media processing functionality using a hierarchical ordering of control parameters |
US20070016292A1 (en) * | 2003-11-14 | 2007-01-18 | Edward Perez | Epithelium treatment methods and devices for treating the epithelium |
US20050246773A1 (en) * | 2004-04-29 | 2005-11-03 | Microsoft Corporation | System and methods for processing partial trust applications |
US7665062B1 (en) | 2004-07-02 | 2010-02-16 | Borland Software Corporation | System and methodology for design-time dynamic class type construction |
US7561673B2 (en) * | 2004-09-30 | 2009-07-14 | Microsoft Corporation | Integration of speech services with telecommunications |
US20070074185A1 (en) * | 2005-08-30 | 2007-03-29 | Microsoft Corporation | Identifier expressions |
US7694285B2 (en) * | 2005-08-30 | 2010-04-06 | Microsoft Corporation | Relaxed and extended delegates |
US9009688B2 (en) * | 2005-12-30 | 2015-04-14 | Intel Corporation | Type checking for object-oriented programming languages |
US7752596B2 (en) * | 2006-03-17 | 2010-07-06 | Microsoft Corporation | Connecting alternative development environment to interpretive runtime engine |
US7743087B1 (en) | 2006-03-22 | 2010-06-22 | The Math Works, Inc. | Partitioning distributed arrays according to criterion and functions applied to the distributed arrays |
US8234626B2 (en) | 2008-06-04 | 2012-07-31 | Dell Products L.P. | Modular ASL component |
US9569282B2 (en) * | 2009-04-24 | 2017-02-14 | Microsoft Technology Licensing, Llc | Concurrent mutation of isolated object graphs |
US20110055809A1 (en) * | 2009-08-28 | 2011-03-03 | International Business Machines Corporation | Typed configuration management in programming languages |
US20120159429A1 (en) * | 2010-12-15 | 2012-06-21 | Microsoft Corporation | Metadata based eventing |
US8793706B2 (en) | 2010-12-16 | 2014-07-29 | Microsoft Corporation | Metadata-based eventing supporting operations on data |
US20130212598A1 (en) * | 2012-02-14 | 2013-08-15 | Microsoft Corporation | Dependency informer |
US9626171B2 (en) | 2015-07-24 | 2017-04-18 | Oracle International Corporation | Composing a module system and a non-module system |
US10104090B2 (en) | 2015-08-25 | 2018-10-16 | Oracle International Corporation | Restrictive access control for modular reflection |
US10394528B2 (en) | 2016-03-30 | 2019-08-27 | Oracle International Corporation | Returning a runtime type loaded from an archive in a module system |
US10360008B2 (en) * | 2016-09-16 | 2019-07-23 | Oracle International Corporation | Metadata application constraints within a module system based on modular encapsulation |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU639802B2 (en) * | 1990-08-14 | 1993-08-05 | Oracle International Corporation | Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment |
AU628264B2 (en) * | 1990-08-14 | 1992-09-10 | Oracle International Corporation | Methods and apparatus for providing a client interface to an object-oriented invocation of an application |
US5265206A (en) * | 1990-10-23 | 1993-11-23 | International Business Machines Corporation | System and method for implementing a messenger and object manager in an object oriented programming environment |
US5421016A (en) * | 1991-12-12 | 1995-05-30 | International Business Machines Corporation | System and method for dynamically invoking object methods from an application designed for static method invocation |
US5515536A (en) * | 1992-11-13 | 1996-05-07 | Microsoft Corporation | Method and system for invoking methods of an object through a dispatching interface |
US5632034A (en) * | 1993-06-01 | 1997-05-20 | International Business Machines Corporation | Controlling method invocation sequence through virtual functions in an object-oriented class library |
DE69426143T2 (de) * | 1993-09-10 | 2001-06-13 | Sun Microsystems, Inc. | Kundenseitiger Stubinterpretor |
US5732271A (en) * | 1995-01-23 | 1998-03-24 | International Business Machines Corporation | Data processing system and method for processing an object oriented development environment employing property inheritance using prototypical objects |
US5680619A (en) * | 1995-04-03 | 1997-10-21 | Mfactory, Inc. | Hierarchical encapsulation of instantiated objects in a multimedia authoring system |
DE19535519C2 (de) * | 1995-09-25 | 1999-03-04 | Ibm | Verfahren zur Reduzierung des Umfanges von Computerprogrammen |
US5864862A (en) * | 1996-09-30 | 1999-01-26 | Telefonaktiebolaget Lm Ericsson (Publ) | System and method for creating reusable components in an object-oriented programming environment |
US6298476B1 (en) * | 1995-12-04 | 2001-10-02 | International Business Machines Corporation | Object oriented software build framework mechanism |
US5768505A (en) * | 1995-12-19 | 1998-06-16 | International Business Machines Corporation | Object oriented mail server framework mechanism |
US6104874A (en) * | 1996-10-15 | 2000-08-15 | International Business Machines Corporation | Object oriented framework mechanism for order processing including pre-defined extensible classes for defining an order processing environment |
US6002867A (en) * | 1996-10-24 | 1999-12-14 | Inprise Corporation | Development system with methods providing visual form inheritance |
US5937189A (en) * | 1996-11-12 | 1999-08-10 | International Business Machines Corporation | Object oriented framework mechanism for determining configuration relations |
US5991802A (en) * | 1996-11-27 | 1999-11-23 | Microsoft Corporation | Method and system for invoking methods of objects over the internet |
US5920720A (en) * | 1997-02-25 | 1999-07-06 | Microsoft Corporation | Efficient computer based virtual machine object structure |
US6182274B1 (en) * | 1997-05-01 | 2001-01-30 | International Business Machines Corporation | Reusing code in object-oriented program development |
US5941945A (en) * | 1997-06-18 | 1999-08-24 | International Business Machines Corporation | Interest-based collaborative framework |
US6014710A (en) * | 1997-06-30 | 2000-01-11 | Sun Microsystems, Inc. | System and method for message transmission between network nodes using remote wires |
US6078743A (en) * | 1997-11-24 | 2000-06-20 | International Business Machines Corporation | Generic IDE interface support for scripting |
US6199197B1 (en) * | 1998-03-11 | 2001-03-06 | International Business Machines Corporation | Apparatus and method for providing common behavior across different processing levels in an object oriented framework |
US6195791B1 (en) * | 1998-03-11 | 2001-02-27 | International Business Machines Corporation | Object mechanism and method for coupling together processes to define a desired processing environment in an object oriented framework |
US6275979B1 (en) * | 1998-03-11 | 2001-08-14 | International Business Machines Corporation | Implementation for an object oriented run-time extensible item |
US6083276A (en) * | 1998-06-11 | 2000-07-04 | Corel, Inc. | Creating and configuring component-based applications using a text-based descriptive attribute grammar |
-
1998
- 1998-06-03 US US09/089,619 patent/US6381734B1/en not_active Expired - Lifetime
-
1999
- 1999-06-03 EP EP19990955342 patent/EP1082654B1/en not_active Expired - Lifetime
- 1999-06-03 ES ES99955342T patent/ES2230900T3/es not_active Expired - Lifetime
- 1999-06-03 DE DE69921474T patent/DE69921474T2/de not_active Expired - Lifetime
- 1999-06-03 WO PCT/US1999/012299 patent/WO1999063433A1/en active IP Right Grant
- 1999-06-03 AT AT99955342T patent/ATE280973T1/de active
- 1999-06-03 JP JP2000552579A patent/JP4220127B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009104658A1 (ja) * | 2008-02-19 | 2009-08-27 | 日本電気株式会社 | 情報表示装置、方法及びプログラム |
JP5359891B2 (ja) * | 2008-02-19 | 2013-12-04 | 日本電気株式会社 | 情報表示装置、方法及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
DE69921474D1 (de) | 2004-12-02 |
DE69921474T2 (de) | 2006-01-05 |
EP1082654B1 (en) | 2004-10-27 |
EP1082654A1 (en) | 2001-03-14 |
WO1999063433A1 (en) | 1999-12-09 |
JP4220127B2 (ja) | 2009-02-04 |
US6381734B1 (en) | 2002-04-30 |
ES2230900T3 (es) | 2005-05-01 |
ATE280973T1 (de) | 2004-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2002517815A (ja) | オブジェクトベースプログラミングでのメソッド参照 | |
US6959307B2 (en) | Process and system for a client object to perform a remote method invocation of a method in a server object | |
Bracha et al. | Modules as objects in Newspeak | |
US6385722B1 (en) | Method, system, and article of manufacture for limiting access to program files in a shared library file | |
EP0546683B1 (en) | Language neutral objects | |
US6044224A (en) | Mechanism for dynamically associating a service dependent representation with objects at run time | |
US6470494B1 (en) | Class loader | |
US7225438B2 (en) | Lazy compilation of template-generated classes in dynamic compilation execution environments | |
EP0546684A2 (en) | Method stubs for redispatch | |
EP0546809A2 (en) | Computer with object oriented environment | |
US6473768B1 (en) | System and method for modifying an executing application | |
US7114152B2 (en) | Method, apparatus, and program to determine the mutability of an object at loading time | |
JPH10505693A (ja) | 異種オブジェクトシステム相互間にインタオペラビリティを提供するシステム及び方法 | |
US6330711B1 (en) | Method and apparatus for dynamic application and maintenance of programs | |
US6085034A (en) | Constructor based object initialization with overrides | |
US6298475B1 (en) | Method and apparatus for analyzing performance of a Java bean | |
US6918126B1 (en) | Method and apparatus for creating and enforcing protected system level Java code | |
US6205491B1 (en) | Method and apparatus for deferred throwing of exceptions in C++ | |
WO2000077632A1 (en) | Management of non-mbeam objects in jmx environment | |
AU2000263715B2 (en) | System and method of verifying the authenticity of dynamically connectable executable images | |
Meijer et al. | Lambada, Haskell as a better Java | |
Hunt et al. | Intercepting and Instrumenting COM Applications. | |
Watkins et al. | Programming in the. NET Environment | |
Troelsen | COM and. NET interoperability | |
Szyperski | Components vs. objects vs. component objects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041012 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050112 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050119 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050412 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050530 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050928 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051110 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20051121 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20060113 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20061121 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20061121 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081006 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20081113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111121 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111121 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121121 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131121 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |