JP4070248B2 - オブジェクト接続を動的に発生する方法及びシステム - Google Patents
オブジェクト接続を動的に発生する方法及びシステム Download PDFInfo
- Publication number
- JP4070248B2 JP4070248B2 JP30736794A JP30736794A JP4070248B2 JP 4070248 B2 JP4070248 B2 JP 4070248B2 JP 30736794 A JP30736794 A JP 30736794A JP 30736794 A JP30736794 A JP 30736794A JP 4070248 B2 JP4070248 B2 JP 4070248B2
- Authority
- JP
- Japan
- Prior art keywords
- connection point
- interface
- sink
- source
- objects
- 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.)
- Expired - Lifetime
Links
Images
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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Stored Programmes (AREA)
- Bus Control (AREA)
Description
【産業上の利用分野】
本発明は一般にオブジェクトを接続するためのコンピュータシステムに係り、より詳細には、通知の目的でオブジェクト接続を発生する方法及びシステムに係る。
【0002】
【従来の技術】
ある事象が生じたときに他のソフトウェアとの通信を必要とするソフトウェアがしばしば形成される。例えば、コンピュータのウインドウシステムでは、ユーザがディスプレイ上のウインドウを選択したときに、ウインドウシステムは、ウインドウに情報を引き出すソフトウェアにウインドウが選択されたことを通知する必要がある。公知のシステムでは、ある事象の通知を必要とするソフトウェアは、それが通知しようとする事象を、その事象を引き起こしたソフトウェアと共に登録する。ある公知のシステムでは、登録機構の一部分として、通知を必要とするソフトウェアは、通知を行えるようにする通知ファンクションを登録する。従って、ソフトウェアが、既に登録されている事象を引き起こしたときには、その登録された通知ファンクションが呼び出される。これは、公知技術では、コールバック機構として知られている。
【0003】
本発明は、オブジェクト指向の概念を用いて以下に説明するので、良く知られたオブジェクト指向のプログラミング技術の概要を述べることにする。オブジェクト指向のプログラミング言語の2つの共通の特徴は、データのカプセル化(エンキャプスレーション)及びデータタイプの継承に対するサポートである。データのカプセル化は、ファンクションとデータの結合を指す。継承は、あるデータのタイプを他のデータのタイプに関して宣言する能力を指す。
【0004】
C++言語においては、オブジェクト指向技術は、クラスの使用によってサポートされる。クラスとは、ユーザが定めるタイプである。クラスの宣言は、そのクラスのデータメンバー及びファンクションメンバーを記述する。例えば、次の宣言は、CIRCLEと称するクラスのデータメンバー及びファンクションメンバーを定義する。
変数x及びyは円の中心位置を指定し、そして変数radiusは円の半径を指定する。これらの変数は、クラスCIRCLEのデータメンバーと称する。ファンクションdrawは、指定された半径の円を指定された位置に描くユーザが定めたファンクションである。ファンクションdrawは、クラスCIRCLEのファンクションメンバーと称する。ファンクションメンバーは、クラスのメソッドとも称する。クラスのデータメンバー及びファンクションメンバーは、ファンクションがクラスのインスタンスにおいて動作するという点で互いに結合される。クラスのインスタンスは、クラスのオブジェクトとも称する。
【0005】
C++の文法において、次のステートメントは、オブジェクトa及びbがタイプクラスCIRCLEのものであると宣言する。
CIRCLE a, b;この宣言は、オブジェクトa及びbに対してメモリの割り当てを生じる。次のステートメントは、オブジェクトa及びbのデータメンバーにデータを指定する。
a,x =2;
a,y =2;
a,radius=1;
b,x =4;
b,y =5;
b,radius=2;
次のステートメントは、オブジェクトa及びbにより定められた円を描くのに使用される。
a,draw();b,draw();
【0006】
導出されたクラスとは、そのベースのクラスの特性、即ちデータメンバー及びファンクションメンバーを継承するクラスである。例えば、次の導出クラスCIRCLE FILLは、ベースクラスCIRCLEの特性を継承する。
この宣言は、クラスCIRCLE FILLが、このクラスCIRCLE FILLの宣言に導入されたデータ及びファンクションメンバー、即ちデータメンバーpattern及びファンクションメンバーfillに加えて、クラスCIRCLEにある全てのデータ及びファンクションメンバーを含むことを指定する。この例では、クラスCIRCLE FILLは、データメンバーx,y、radius及びpatternと、ファンクションメンバーdraw及びfillとを有する。別のクラスの特性を継承するクラスは、導出されたクラス(例えば、CIRCLE FILL)である。別のクラスの特性を継承しないクラスは、一次(ルート)クラス(例えば、CIRCLE)である。特性が別のクラスによって継承されるクラスは、ベースクラスである(例えば、CIRCLEは、CIRCLE FILLのベースクラスである)。導出クラスは、多数のクラスの特性を継承することができ、即ち導出クラスは、多数のベースクラスをもつことができる。これは、多継承と称する。
【0007】
導出クラスは、ベースクラスが仮想的に継承されるべきであることを指定してもよい。ベースクラスの仮想的な継承とは、導出クラスに仮想ベースクラスの1つのインスタンスしか存在しないことを意味する。例えば、2つの非仮想ベースクラスをもつ導出クラスの例を以下に示す。
class CIRCLE 1:CIRCLE{... };
class CIRCLE 2:CIRCLE{... };
class PATTERN:CIRCLE 1,CIRCLE 2 {... };この宣言において、クラスPATTERNは、クラスCIRCLE 1及びCIRCLE 2を介してクラスCIRCLEを非仮想的に2回継承する。クラスPATTERNには、クラスCIRCLEの2つのインスタンスがある。
【0008】
2つの仮想ベースクラスをもつ導出クラスの例を以下に示す。
class CIRCLE_1:virtual CIRCLE{... };
class CIRCLE_2:virtual CIRCLE{... };
class PATTERN:CIRCLE_1,CIRCLE_2 {... };
導出クラスPATTERNは、クラスCIRCLE 1及びCIRCLE 2を介してクラスCIRCLEを仮想的に2回継承する。クラスCIRCLEは仮想的に2回継承されるので、導出クラスPATTERNにはクラスCIRCLEのオブジェクトが1つしかない。当業者に明らかなように、仮想的継承は、クラス導出がより複雑なときには非常に有用である。
【0009】
又、クラスは、そのファンクションメンバーが仮想的であるかどうかを指定することもできる。ファンクションメンバーが仮想的であると宣言することは、導出クラスにおいて同じ名前及びタイプのファンクションによってそのファンクションをオーバーライドできることを意味する。以下の例では、ファンクションdrawは、クラスCIRCLE及びCIRCLE FILLにおいて仮想的であると宣言される。
仮想ファンクションは、実施を与えずに宣言された場合には、純粋な仮想ファンクションと称される。純粋な仮想ファンクションとは、純粋な指定子「=φ」で宣言される仮想ファンクションである。あるクラスが純粋な仮想ファンクションを指定する場合には、いかなる導出クラスも、そのファンクションメンバーが呼び出される前にそのファンクションメンバーに対する実施を指定することが必要となる。
【0010】
オブジェクトをアクセスするために、C++言語は、ポインタデータタイプを与える。ポインタは、メモリにおけるオブジェクトのアドレスである値を保持する。ポインタにより、オブジェクトを参照することができる。次のステートメントは、変数c ptrをタイプクラスCIRCLEのオブジェクトにおけるポインタであると宣言し、そしてオブジェクトcのアドレスを保持するよう変数cptrをセットする。
CIRCLE*c_ptr;
c_ptr=&c;
この例を続けると、次のステートメントは、オブジェクトaをタイプクラスCIRCLEであると宣言しそしてオブジェクトbをタイプクラスCIRCLE FILLであると宣言する。
CIRCLE a;
CIRCLE_FILL b;
次のステートメントは、クラスCIRCLEで定義されたファンクションdrawを参照する。
a.draw();
これに対し、次のステートメントは、クラスCIRCLE FILLで定義されたファンクションdrawを参照する。
b.draw();
更に、次のステートメントは、オブジェクトbをタイプクラスCIRCLEのオブジェクトにタイプキャストし、そしてクラスCIRCLE FILLで定義されたファンクションdrawを呼び出す。
CIRCLE*c_ptr;
c_ptr=&b;
c_ptr->draw(); //CIRCLE FILL::draw()
従って、呼び出された仮想ファンクションは、ファンクションCIRCLE FILL::drawである。
【0011】
図1は、オブジェクトを表すのに使用される典型的なデータ構造を示すブロック図である。オブジェクトは、オブジェクトの振る舞いを実施するインスタンスデータ(データメンバー)及びファンクションメンバーで構成される。オブジェクトを表すのに使用されるデータ構造は、インスタンスデータ構造101、仮想ファンクションテーブル102及びファンクションメンバー103、104、105を備えている。インスタンスデータ構造101は、仮想ファンクションテーブル102を指すポインタを含むと共に、データメンバーを含んでいる。仮想ファンクションテーブル102は、オブジェクトに対して定義された各仮想ファンクションメンバーのエントリーを含む。各エントリーは、それに対応するファンクションメンバーを実施するコードに対するレファレンスを含んでいる。このサンプルオブジェクトのレイアウトは、参考としてここに取り上げる「オブジェクト指向のプログラミング言語のためのコンパイラーにおいて仮想ファンクション及び仮想ベースを実施するための方法(A Method for Implementing Virtual Functions and Virtual Bases in a Compiler for an Object Oriented Programming Language) 」と題する米国特許出願第07/682,537号に定められたモデルに合致するものである。以下の説明において、オブジェクトは、C++プログラミング言語によって定義されたクラスのインスタンスとして説明する。当業者であれば、オブジェクトは、他のプログラミング言語を用いても定義されることが明らかであろう。
【0012】
オブジェクト指向の技術を用いる利点は、これら技術を用いてオブジェクトの共有を容易にできることである。特に、オブジェクト指向の技術は、複合文書の形成を容易にする。複合文書とは、種々のコンピュータプログラムによって発生されたオブジェクトを含む文書である。(典型的に、オブジェクトのデータメンバー及びクラスタイプのみが複合文書に記憶される。)例えば、スプレッドシートプログラムによって発生されたスプレッドシートオブジェクトを含むワードプロセス文書は、複合文書である。ワードプロセスプログラムは、ユーザがスプレッドシートオブジェクト(例えば、セル)をワードプロセス文書内に埋め込みできるようにする。この埋め込みを行えるようにするため、ワードプロセスプログラムは、埋め込まれたオブジェクトのファンクションメンバーをアクセスするように、埋め込まれるべきオブジェクトのクラス定義を用いてコンパイルされる。従って、ワードプロセスプログラムは、ワードプロセス文書に埋め込みできる各クラスのオブジェクトのクラス定義を用いてコンパイルされる必要がある。新たなクラスのオブジェクトをワードプロセス文書に埋め込むためには、ワードプロセスプログラムは、新たなクラスの定義で再コンパイルされる必要がある。従って、ワードプロセスプログラムのデベローパ(開発プログラム)により選択されたクラスのオブジェクトしか埋め込むことができない。更に、新たなクラスは、ワードプロセスプログラムの新たなリリースでしかサポートできない。
【0013】
任意のクラスのオブジェクトを複合文書に埋め込めるようにするために、ワードプロセスプログラムがコンパイル時にクラス定義にアクセスする必要なくオブジェクトをアクセスできるようなインターフェイスが定義される。アブストラクト(抽象)クラスは、実施を伴わない仮想ファンクションメンバー(純粋な仮想ファンクションメンバー)が少なくとも1つ存在するようなクラスである。インターフェイスは、データメンバーを伴わず仮想ファンクションが全て純粋であるようなアブストラクトクラスである。従って、インターフェイスは、2つのプログラムが通信するためのプロトコルを与える。インターフェイスは、典型的に、導出に使用され、プログラムは、クラスが導出されたインターフェイスのための実施を与えるクラスを実施する。その後、オブジェクトは、これら導出されたクラスのインスタンスとして形成される。
【0014】
次のクラス定義は、インターフェイスの例示的な定義である。この例では、説明の簡略化のため、任意のクラスのオブジェクトを文書に埋め込みできるようにするのではなくて、ワードプロセスプログラムは、スプレッドシートオブジェクトを埋め込みできるようにする。このインターフェイスを与えるスプレッドシートオブジェクトは、オブジェクトがいかに実施されるかに係わりなく、埋め込むことができる。更に、スプレッドシートオブジェクトは、ワードプロセスプログラムがコンパイルされる前に実施されるかその後に実施されるかに係わりなく、埋め込むことができる。
スプレッドシートプログラムのデベローパは、スプレッドシートオブジェクトをワードプロセス文書に埋め込めるようにするためのインターフェイスの実施を与えることが必要である。
【0015】
ワードプロセスプログラムは、スプレッドシートオブジェクトを埋め込むときには、スプレッドシートオブジェクトのインターフェイスを実施するコードをアクセスする必要がある。クラスコードをアクセスするために、各実施には独特のクラス識別子が与えられる。例えば、マイクロソフト・コーポレーションにより開発されたスプレッドシートオブジェクトを実施するコードは、「MSSスプレッドシート」のクラス識別子を有するが、他社により開発されたスプレッドシートオブジェクトを実施するコードは、「LTSSスプレッドシート」のクラス識別子を有する。クラスを実施するコードに対して各クラス識別子をマップする各コンピュータシステムの永続的登録が維持される。典型的に、スプレッドシートプログラムがコンピュータシステムに設置されるときには、そのクラスのスプレッドシートオブジェクトの利用性を反映するように永続的登録が更新される。スプレッドシートデベローパがインターフェイスにより定められた各ファンクションメンバーを実施しそして永続的登録が維持される限り、ワードプロセスプログラムは、デベローパのスプレッドシートオブジェクトのインスタンスをワードプロセス文書に埋め込むことができる。ワードプロセスプログラムは、その埋め込まれたスプレッドシートオブジェクトのファンクションメンバーを誰が実施したか又はどのように実施したかに係わりなく、これらファンクションメンバーにアクセスする。
【0016】
しかしながら、種々のスプレッドシートデベローパは、あるファンクションメンバーのみを実施しようとする。例えば、あるスプレッドシートデベローパは、データベースサポートは実施しようとしないが、他の全てのファンクションメンバーをサポートしようとする。スプレッドシートデベローパがファンクションメンバーの幾つかだけをサポートできるようにする一方、オブジェクトを埋め込みできるようにするために、スプレッドシートオブジェクトの多数のインターフェイスが定義される。例えば、インターフェイスIDatabase及びIBasicは、スプレッドシートオブジェクトに対して次のように定義される。
各スプレッドシートデベローパは、IBasicインターフェイスを実施し、そして任意に、IDatabaseインターフェイスを実施する。
【0017】
実行時に、ワードプロセスプログラムは、埋め込まれるべきスプレッドシートオブジェクトがIDatabaseインターフェイスをサポートするかどうかを決定する必要がある。この決定を行うために、オブジェクトに対してどのインターフェイスが実施されるかを指示するファンクションメンバーと共に別のインターフェイス(各スプレッドシートオブジェクトが実施する)が定義される。このインターフェイスは、IUnknownと称され(そして未知のインターフェイス又はオブジェクトマネージメントインターフェイスと称され)、次のように定義される。
IUnknownインターフェイスは、ファンクションメンバー(メソッド)QueryInterfaceを定義する。このメソッドQueryInterfaceには、パラメータiid(タイプREFIELDの)におけるインターフェイス識別子(例えば、IDatabase)が通され、そしてパラメータppvにおいてこのメソッドが呼び出されるところのオブジェクトに対し識別されたインターフェイスの実施を指すポインタを返送する。オブジェクトがインターフェイスをサポートしない場合には、このメソッドは偽を返送する。タイプHRESULTは、予め定義された状態を指示し、そしてタイプULONGは、非符号の長い整数を指示する。
【0018】
コードテーブル1は、クラスIUnknownを継承するクラスXXのメソッドQueryInterfaceの典型的な実施に対しC++ソースコードのための擬似コードを含んでいる。スプレッドシートオブジェクトがIDatabaseインターフェイスをサポートする場合には、メソッドQueryInterfaceは、スイッチステートメント内に適当なケースラベルを含む。変数pIBasic及びpIDatabaseは、各々、IBasic及びIDatabaseインターフェイスの仮想ファンクションテーブルのポインタを指す。メソッドQueryInterfaceは、インターフェイスのポインタが返送されるときにクラスXXのオブジェクトに対するレファレンスカウントを増加するためにメソッドAddRef(以下の述べる)を呼び出す。
【0019】
インターフェイスIUnknownは、レファレンスカウント動作を実施するのに用いられるメソッドAddRef及びReleaseを定義する。インターフェイスに対する新たなレファレンスが形成されたときには、オブジェクトのレファレンスカウントを増加するためにメソッドAddRefが呼び出される。レファレンスがもはや必要でないときには、オブジェクトのレファレンスカウントを減少しそしてレファレンスカウントが0になったときにオブジェクトの割り当てを解除するために、メソッドReleaseが呼び出される。コードテール2は、クラスIUnknownを継承するクラスXXのメソッドAddRef及びReleaseの典型的な実施に対しC++ソースコードのための擬似コードを含んでいる。
【0020】
IDatabaseインターフェイス及びIBasicインターフェイスは、IUnknownインターフェイスを継承する。次の定義は、IUnknownインターフェイスの使用を示すものである。
【0021】
次の擬似コードは、スプレッドシートオブジェクトがIDatabaseインターフェイスをサポートするかどうかを決定するためにワードプロセスプログラムがIUnknownインターフェイスをいかに使用するかを示している。
if(pSpreadsheet->QueryInterface("IDatabase",&pIDatabase))
//IDatabase supported
else
//IDatabase not supported
ポインタpSpreadsheetは、スプレッドシートクラスのインスタンスを指すポインタである。上記したように、スプレッドシートオブジェクトは、あるインターフェイスを含み、他は含まない。オブジェクトがIDatabaseインターフェイスをサポートする場合には、メソッドQueryInterfaceは、IDatabaseデータ構造を指すようにポインタpIDatabaseをセットし、そして真をその値として返送する。
【0022】
図2は、スプレッドシートオブジェクトの記号表示である。以下の説明において、オブジェクトデータ構造は、オブジェクトをアクセスするところのインターフェイスがラベル表示された形状201によって表される。
【0023】
【発明が解決しようとする課題】
本発明の目的は、オブジェクト接続を動的に発生するための方法及びシステムを提供することである。
【0024】
本発明の別の目的は、その後の通知目的のために任意のインターフェイスを接続するための方法及びシステムを提供することである。
【0025】
本発明の別の目的は、多数の通知ルーチンに接続する多数の接続ポイントを提供することである。
【0026】
本発明の更に別の目的は、オブジェクトが接続のための特定のインターフェイスを有するかどうかを判断する機構を提供することである。
【0027】
本発明の更に別の目的は、どんなタスクを実行するか知ることなく既に接続された通知ルーチンを呼び出すための方法及びシステムを提供することである。
【0028】
本発明の更に別の目的は、アプリケーションとは独立したオブジェクトインターフェイスを用いて事象を取り扱うための方法及びシステムを提供することである。
【0029】
【課題を解決するための手段】
上記及び他の目的は、以下の説明から明らかとなるように、オブジェクト接続を動的に発生する改良された方法及びシステムによって達成される。好ましい実施例において、本発明は、ソースオブジェクトとシンクオブジェクトとを備えている。ソースオブジェクトは、1つ以上の接続ポイントオブジェクトを含み、その各々は、シンクオブジェクトに接続するための接続ポイントインターフェイスを含んでいる。各シンクオブジェクトは、シンクオブジェクトに通信するための通知インターフェイスを有している。接続を確立するために、ソースオブジェクトは、特定の接続要求に対してどの接続ポイントオブジェクトを使用するかを決定する。この決定された接続ポイントオブジェクトを用いて、シンクオブジェクトは、ソースオブジェクトに接続されるように要求し、更に通信を行うために使用されるべき通知インターフェイスの指示を渡す。次いで、ソースオブジェクトは、その指示された通知インターフェイスを、接続ポイントオブジェクトによってマネージされるデータ構造に記憶する。その後、ソースオブジェクトは、どんな通知インターフェイスが特定の接続ポイントオブジェクトに記憶されているかを決定し、そして通知インターフェイスを接続した各シンクオブジェクトを通知するために各記憶された通知インターフェイスの特定のメソッドを呼び出す。このような通知は、典型的に、事象、例えば、ユーザ入力装置からの動きに応答して行われる。
【0030】
【実施例】
本発明は、ソースオブジェクトとシンクオブジェクトとの間のオブジェクト接続を発生するための方法及びシステムを提供する。これらの接続は、オブジェクトに対する多数の形式の事象取扱機構をサポートするのに使用でき、本発明は、オブジェクト通信のための基礎的な接続機構アーキテクチャを提供するものである。ソースオブジェクトは、事象を引き起こすか又は認識するオブジェクトを指し、シンクオブジェクトは、事象を取り扱うオブジェクトを指す。ソースオブジェクトとシンクオブジェクトとの間の接続は、いずれかのオブジェクトによって直接開始されてもよいし、或いはイニシエータ(開始)オブジェクトと称する第3のオブジェクトによって開始されてもよい。典型的な事象取扱環境では、ソースオブジェクトは事象を引き起こすか又は認識し、通知メソッドを呼び出すことによってシンクオブジェクト又はイニシエータオブジェクトに通知する。通知メソッドがイニシエータオブジェクトに属する場合には、イニシエータオブジェクトがその事象を取り扱うためにシンクオブジェクトの適当なメソッドを呼び出すという役目を果たす。
【0031】
好ましい実施例においては、本発明の方法及びシステムは、中央処理ユニットと、メモリと、入力/出力装置とを備えたコンピュータシステムにおいて実施される。本発明の好ましい実施例において、ソースオブジェクトは、接続ポイントオブジェクトと、これら接続ポイントオブジェクトをマネージするための接続ポイントコンテナオブジェクトとを備えている。好ましくは、接続ポイントコンテナオブジェクトは、ソースオブジェクトの一部分として実施され、そして接続ポイントオブジェクトは、ソースオブジェクトのサブオブジェクトとして実施される。これらサブオブジェクトは、本発明のアプリケーションとは独立した振る舞いを分離する。接続ポイントコンテナオブジェクトは、その収容された接続ポイントオブジェクトを列挙することのできるメソッドと、特定のインターフェイス識別子(ID)に対応する接続ポイントオブジェクトを見つけられるようにするメソッドとを備えたインターフェイスを形成する。接続ポイントオブジェクトには、ある形式のインターフェイス(インターフェイスIDで識別された)が関連され、該インターフェイスを通して、接続されるシンクオブジェクトに通知を出すようにされる。接続ポイントオブジェクトは、通知インターフェイスを接続したり、既に接続された通知インターフェイスを切断したり、接続された通知インターフェイスを列挙したりするメソッドを備えたインターフェイスを形成するのが好ましい。又、接続ポイントオブジェクトは、多数の通知インターフェイス(1つ以上のシンクオブジェクトに属する)に対するレファレンスを任意に記憶できるのが好ましい。接続された通知インターフェイスは、事象セットとして働く。即ち、インターフェイスの定義により、文書インターフェイスをサポートする各オブジェクトは、ある1組のメソッドを与えねばならない。従って、シンクオブジェクトが通知インターフェイスを接続するときには、ソースオブジェクトは、通知インターフェイスによってどんなメソッドがサポートされるか自動的に分かる。このパースペクティブから、サポートされるメソッドは事象におおよそ対応し、そして通知インターフェイス全体は、1組の事象におおよそ対応する。
【0032】
いったん接続されると、ソースオブジェクトは、接続ポイントオブジェクトを種々のやり方で使用することができる。典型的な動作においては、ソースオブジェクトは、事象通知を受け取ると、その受け取った事象に対応するインターフェイスIDに関連した接続ポイントオブジェクト(1つ又は複数)に、接続された通知インターフェイスを得るように相談する。次いで、ソースオブジェクトは、通知インターフェイスの所定のメソッドを呼び出すことにより、各接続された通知インターフェイスに事象通知を送る。このように、単一の事象の発生時に多数のシンクオブジェクトに通知することができる。
【0033】
図3は、好ましい接続機構のアーキテクチャのブロック図である。この図は、2つの接続ポイントオブジェクト305及び306を経て2つのシンクオブジェクト302及び303に接続されたソースオブジェクト301を示している。このソースオブジェクト301は、接続ポイントオブジェクト305及び306をマネージするための接続ポイントコンテナオブジェクト304を実施する。この接続ポイントコンテナオブジェクト304は、接続ポイントオブジェクトを列挙し見つけるためのIConnectionPointContainerインターフェイス307を実施する。接続ポイントオブジェクト305及び306は、接続ポイントコンテナオブジェクト304により、それらの各IConnectionPointインターフェイス308及び309を経てアクセスされる。接続ポイントオブジェクト305及び306は、それらの各通知インターフェイス310及び311を経てシンクオブジェクト302及び303に接続される。ソースオブジェクト301は、事象に対応するIConnectionPointインターフェイスを位置決めしそしてシンクオブジェクトの通知インターフェイスのメソッドを呼び出すことにより事象の発生をシンクオブジェクト302及び303に通知する。
【0034】
上記したように、ソースオブジェクトとシンクオブジェクトとの間の接続は、イニシエータオブジェクトによって開始することができる。イニシエータオブジェクトは、シンクオブジェクトの通知インターフェイスをソースオブジェクトに接続することができ、又はそれ自身の「委託(delegate)」オブジェクトの通知インターフェイスを接続することができる。委託オブジェクトとは、単にシンクオブジェクトとソースオブジェクトとの間にあるオブジェクトである。委託オブジェクトは、ソース及びシンクの両オブジェクトに透過的である。というのは、シンクオブジェクトが与えるような接続ポイントオブジェクトに対応するインターフェイスを実施するからである。委託オブジェクトは、事象通知をシンクオブジェクトに送るという役目を果たす。このように、委託オブジェクトは、ソース及びシンクオブジェクトの比較許可特権に基づいて事象通知を送るかどうかを判断する機密機構として使用できる。
【0035】
図4は、ソースオブジェクトと、委託オブジェクトと、シンクオブジェクトとの間の接続を示すブロック図である。図4に示された接続は、3つのオブジェクト、即ち接続ポイントオブジェクト401、委託オブジェクト402及びシンクオブジェクト403を備えている。委託オブジェクト402は、特定の通知インターフェイス404を経て接続ポイントオブジェクト401に接続される。この同じ通知インターフェイスは、シンクオブジェクト403を委託オブジェクト402に接続するのに使用される。従って、2つの通知インターフェイス404及び405は、同じインターフェイス定義の異なる実施であり、従って、同じインターフェイスIDを有する。
【0036】
本発明の典型的な用途は、ビジュアル(視覚的)プログラミング環境においてオブジェクトを接続することである。ビジュアルプログラミングとは、ビジュアル指向のプログラム(ビジュアルプログラム)を迅速に開発できるようにするコンピュータプログラミング技術である。ビジュアルプログラミング環境は、典型的に、ビジュアルプログラムを形成するように相互接続することのできる予め定義されたコンポーネント(オブジェクト)のリストを含んでいる。各コンポーネントは、入力及び出力ポートと、ビジュアルインターフェイスとを含む。ビジュアルプログラムを形成するときには、ビジュアルプログラマがビジュアルコンポーネント及びディスプレイにおけるそれらの位置を指定する。又、ビジュアルプログラマは種々のポート間の相互接続も指定する。次いで、ビジュアルコンポーネントは、これらの接続を用いて互いに通信する。
【0037】
例えば、ビジュアルプログラミング環境を用いてアプリケーションプログラムのためのダイアログボックスを形成することができる。図5は、アプリケーションプログラムに対するオープンファイルダイアログボックスを形成するのに使用されるビジュアルプログラミング環境ディスプレイのブロック図である。オープンファイルダイアログボックスは、オープンすべきファイルを選択するためにファイル名のリストを通してスクロールするのに使用される。ビジュアルプログラミング環境のディスプレイは、2つの部分、即ちワークスペースディスプレイエリア501と、コマンドエリア502とを備えている。ワークスペースディスプレイエリア501は、多数のオブジェクトが形成されて、ダイアログボックスをビジュアルにプログラムするよう接続されることを示している。ワークスペースディスプレイエリア501に現在示されているオブジェクトは、オープンファイルダイアログボックスオブジェクト503と、4つのコードオブジェクト504ないし507とを備えている。各オブジェクトは、次いで、多数のサブオブジェクトを備えている。例えば、オープンファイルダイアログボックスオブジェクト503は、タイトルバーオブジェクト508、多選択リストボックスオブジェクト509、及びボタンオブジェクト510を備えている。図示された状態では、多選択リストボックスオブジェクト509は、他のオブジェクトとの接続を形成するようにユーザによって現在選択されている。選択されたオブジェクト509に対応する入力ポート511及び出力ポート512は、ハイライト状態のオブジェクトとして示されている。コマンドエリア502のボタンによって与えられる種々のコマンドを用いて、ビジュアルプログラマは、オープンファイルダイアログボックスオブジェクト503の出力ポート516、多選択リストボックスオブジェクト509の入力及び出力ポート511及び512、並びにボタンオブジェクト510の入力及び出力ポート513及び514をコードオブジェクト504ないし506に接続している。特に、オープンファイルダイアログボックスオブジェクト503の出力ポート516は、コードオブジェクト504の入力ポート517に接続されており、このコードオブジェクトは、多選択リストボックスオブジェクト509に示されたファイルのリストを更新するためのコードを含んでいる。又、多選択リストボックスオブジェクト509の入力ポート511は、コードオブジェクト504の出力ポート518に接続されている。それ故、ユーザがオープンファイルダイアログボックスオブジェクト503を選択したときは、多選択リストボックスオブジェクト509に示されたファイルのリストが、上記ダイアログボックスが最後に選択されたとき以来のファイルの追加又は削除を表すように更新される。多選択リストボックスオブジェクト509の出力ポート512は、コードオブジェクト505の入力ポート519に接続されており、このコードオブジェクトは、多選択リストボックスオブジェクト509において選択されたファイルを追跡するためのコードを含んでいる。この出力ポートは、コードオブジェクト504の入力ポート517にも接続されており、ユーザがファイルを選択するたびに、多選択リストボックスに表示されるファイルリストが更新されるようになっている。ボタンオブジェクト510の入力ポート513は、コードオブジェクト505の出力ポート520に接続されており、従って、選択されたファイルのリストは、ファイルが選択されるたびにボタンオブジェクト510に通される。ボタンオブジェクト510の出力ポート514は、コードオブジェクト506の入力ポート521に接続されており、該コードオブジェクトは、ボタンオブジェクト510により実施されるOKボタンをユーザが押したときに選択されたファイルのリストにおける各ファイルをオープンするコードを含んでいる。
【0038】
このビジュアルプログラミング環境を用いていったん形成すると、オープンファイルダイアログボックスは、特定のシステム事象、例えば、ユーザ入力装置から生じた事象に応答することによって動作する。例えば、ユーザがオープンファイルダイアログボックス503を選択したときには、MouseLeftButtonDown選択事象がオープンファイルダイアログボックスオブジェクト503へ送られる。この選択事象を受け取ると、オープンファイルダイアログボックスオブジェクト503は、コードオブジェクト504に通知を送る。というのは、コードオブジェクト504の入力ポート517がオープンファイルダイアログボックスオブジェクト503の出力ポート516に既に接続されているからである。表示されたファイルのリストを更新するためのコードを実施するコードオブジェクト504は、次いで、更新されたファイルリストを多選択リストボックスオブジェクト509へ送る。というのは、コードオブジェクト504の出力ポート518が多選択リストボックスオブジェクト509の入力ポート511に既に接続されているからである。又、ユーザがマウス入力装置を用いて多選択リストボックスオブジェクト509により実施されるリストボックスのファイルを選択するときには、MouseLeftButtonDown選択事象が多選択リストボックスオブジェクト509に送られる。この事象は、次いで、ユーザ選択を追跡するためにコードオブジェクト505へ送られる。というのは、コードオブジェクト505の入力ポート519が多選択リストボックスオブジェクト509の出力ポート512に既に接続されているからである。コードオブジェクト505は、次いで、選択されたファイルのリストをボタンオブジェクト510に送る。というのは、コードオブジェクト505の出力ポート520がボタンオブジェクト510の入力ポート513に既に接続されているからである。更に、ユーザがボタンオブジェクト510により実施されているOKボタンを選択するときには、システム選択事象(例えば、MouseLeftButtonDown選択事象)がボタンオブジェクト510へ送られる。このボタンオブジェクト510は、その出力(この場合は選択されたファイルのリスト)をコードオブジェクト506に送る。というのは、ボタンオブジェクト510の出力ポート514がコードオブジェクト506の入力ポート521に既に接続されているからである。このボタン選択事象を受け取ると、コードオブジェクト506は、ユーザが選択したファイルを開く。
【0039】
1つの例示的な用途においては、本発明は、図5に示されたビジュアルプログラミング例で必要とされるオブジェクト接続を動的に発生するのに使用することができる。図6は、本発明を用いて図5に示したオブジェクトを接続した後のオブジェクト接続及びデータ構造のブロック図である。図6は、4つのオブジェクト、即ち図5のオープンファイルダイアログボックスオブジェクト503に対応するソースオブジェクト601と、図5のコードオブジェクト504ないし506に対応する3つのシンクオブジェクトとを示している。オープンファイルダイアログボックスオブジェクト503に対応するソースオブジェクト601は、タイトルバーオブジェクト508、多選択リストボックスオブジェクト509及びボタンオブジェクト510に対応するサブオブジェクトを含んでいる(これらのサブオブジェクトはいずれも示されていない)。或いは又、本発明を用いて、オープンファイルダイアログボックスオブジェクト503に含まれたサブオブジェクトの各々に対するソースオブジェクトを形成しそしてその各々のソースオブジェクトを適当なコードオブジェクト(シンクオブジェクト)に接続することもできる。
【0040】
オープンファイルダイアログボックスオブジェクト503は、オープンファイルダイアログボックスオブジェクト503の選択、多選択リストボックスオブジェクト509内のファイルの選択、及びボタンオブジェクト510により実施されるOKボタンのユーザ選択に対応するシステム事象を取り扱うので、ソースオブジェクト601は、異なる事象セットに関連した接続ポイントオブジェクトをサポートする。より詳細には、ソースオブジェクト601は、接続ポイントコンテナオブジェクト605と、3つの接続ポイントオブジェクト608、612及び615とを含んでいる。接続ポイントオブジェクト608には、多選択リストボックスオブジェクト509をサポートするのに使用されるIMultipleListインターフェイスが関連される。接続ポイントオブジェクト612にはボタンオブジェクト510をサポートするのに使用されるIButtonインターフェイスが関連される。接続ポイントオブジェクト615には、オープンファイルダイアログボックスオブジェクト503をサポートするのに使用されるIDialogインターフェイスが関連される。接続ポイントコンテナオブジェクト605は、IConnectionPointContainerインターフェイスを形成し、接続ポイントオブジェクトのポインタのリストを維持する。図6において、接続ポイントオブジェクトを指すポインタのリストは、現在、3つのエレメント606、607及び618を有している。各エレメントは、接続ポイントオブジェクトに関連したインターフェイスIDのインジケータと、接続ポイントオブジェクトのIConnectionPointインターフェイスのポインタと、リストの次のエレメントのポインタとを含んでいる。形成された接続ポイントオブジェクトのセットをマネージするのに他のデータ構造を使用できることが当業者に明らかであろう。又、効率の理由で、各リストエレメントに関連される情報はもっと多くてもよいし少なくてもよい。例えば、各エレメントがインターフェイスIDを記憶する必要はない。というのは、インターフェイスIDは接続ポイントオブジェクトから容易にアクセスできるからである。
【0041】
各接続ポイントオブジェクトは、IConnectionPointインターフェイスを形成し、そしてシンクオブジェクトに属する通知インターフェイスに対するレファレンスのリストを維持する。シンクオブジェクトの通知インターフェイスに対するレファレンスは、シンクオブジェクトがIConnectionPointインターフェイスを用いて接続ポイントオブジェクトから接続を要求するときにこのリストに加えられる。接続ポイントコンテナオブジェクト605のリストエレメント606によってレファレンスされる接続ポイントオブジェクト608は、現在、2つのエレメント610及び611を含む通知インターフェイスに対するレファレンスのリストを示す。通知インターフェイス609に対するレファレンスのリストのヘッダは、それに関連したインターフェイス識別子及び第1リストエレメントを迅速にアクセスするために設けられている。各リストエレメントは、接続を独特に識別するトークンと、接続されたシンクオブジェクトのIUnknownインターフェイスのポインタと、リスト内の次のエレメントのポインタとを含んでいる。例えば、リストエレメント610は、シンクオブジェクト602との接続を独特に識別するトークンを含み、このシンクオブジェクトは、多選択リストボックスオブジェクト509により表示されたファイルのリストを更新するためのコードオブジェクト504に対応する。又、リストエレメント610は、シンクオブジェクト602のIMultipleListインターフェイス(通知インターフェイス)をアクセスするためにシンクオブジェクト602のIUnknownインターフェイスのポインタを含んでいる。又、リストエレメント610は、リストエレメント611のポインタを与える。リストエレメント611は、選択されたファイルを追跡するためにコードオブジェクト505に対応するシンクオブジェクト603に同様に接続される。
【0042】
接続ポイントオブジェクト612は、ボタンオブジェクト510とシンクオブジェクト604との間の接続を実施し、このシンクオブジェクトは、ユーザが選択したファイルをオープンするためのコードオブジェクト506に対応する。接続ポイントオブジェクト608と同様に、接続ポイントオブジェクト612は、1つのエレメント614をもつリストを含んでいる。エレメント614は、コードオブジェクト506に対応するシンクオブジェクト604のIUnknownインターフェイスを指すポインタを含んでいる。更に、接続ポイントオブジェクト615は、シンクオブジェクト602の通知インターフェイスに同様に接続される。接続ポイントオブジェクト615(IDialog)に接続されたシンクオブジェクト602の通知インターフェイスは、接続ポイントオブジェクト608に接続された同じシンクオブジェクト(IMultipleList)の通知インターフェイスとは異なることに注意されたい。しかしながら、この実施例では、両接続ポイントオブジェクト608及び615は、シンクオブジェクト602のIUnknownインターフェイスを指すポインタを含んでいる。図6に示すように、接続ポイントオブジェクトは、1つ以上の通知インターフェイス(1つ以上のシンクオブジェクトの)に接続することができ、そしてシンクオブジェクトは、1つ以上の接続ポイントオブジェクトに接続することができる。
【0043】
図6を参照すれば、ソースオブジェクト601がオープンファイルダイアログボックス503に関連した事象を受け取るとき、ソースオブジェクト601は、IDialogインターフェイス(615)に対応する接続ポイントオブジェクトを見つける。ソースオブジェクト601は、シンクオブジェクト602に通知を出し、該シンクオブジェクト602は、そのIDialogインターフェイスを用いてファイルのリストを更新する。ソースオブジェクト601は、多選択リストボックスオブジェクト509を選択することに関連した選択事象を受け取ると、IMultipleListインターフェイス(608)に対応する接続ポイントオブジェクトを見つけ、そしてそれらの接続された通知インターフェイス(IMultipleList)を用いてシンクオブジェクト602及び603に通知する。同様に、ソースオブジェクト601は、ユーザがボタンオブジェクト510を押すことに関連した選択事象を受け取ると、IButtonインターフェイス(612)に対応する接続ポイントオブジェクトを見つけ、接続された通知インターフェイス(IButton)を用いてシンクオブジェクト604に通知する。ボタンオブジェクト510を選択することに対応する事象通知の例を図9を参照して説明する。
【0044】
コードテーブル3は、インターフェイスIConnectionPoint及びIEnumConnectionsの好ましい定義と、列挙インターフェイスIEnumConnectionsにより返送されるデータ構造とに対するC++擬似コードを含んでいる。IConnectionPoinインターフェイスは、接続ポイントオブジェクトを接続及び切断しそしてその接続ポイントオブジェクトに接続された通知インターフェイスを列挙するためのメソッドを含んでいる。メソッドGetConnectionInterfaceは、接続ポイントオブジェクトに関連したインターフェイスIDのポインタを返送する。メソッドGetConnectionPointContainerは、接続ポイントオブジェクトを含む接続ポイントコンテナオブジェクト(その親コンテナオブジェクト)のIConnectionPointContainerインターフェイスを指すポインタを返送する。接続ポイントオブジェクトがインスタンス生成されるときは、接続ポイントオブジェクトの形成メソッドが、将来の使用のために接続ポイントコンテナオブジェクトを指すポインタを渡す。メソッドAdviseは、パラメータpunkにより指定された通知インターフェイスを接続ポイントオブジェクトに接続し、もし首尾良くいった場合は、パラメータpdwTokenにおける接続を識別する独特のトークンを返送する。この独特のトークンは、永久に記憶される。メソッドUnadviseは、入力パラメータdwTokenによって指定された通知インターフェイスを切断する。メソッドEnumConnectionsは、インターフェイスIEnumConnectionsのインスタンスである列挙インターフェイスを、接続された通知インターフェイスを経て繰り返し返送する。
【0045】
インターフェイスIEnumConnectionsは、IConnectionPointインターフェイスにより使用されるエニュメレータを実施する。このエニュメレータは、特定の接続ポイントオブジェクトに対して通知インターフェイス接続を列挙する1組のメソッドを含んでいる。問題とする2つのメソッドは、第1の接続された通知インターフェイスを指すようにエニュメレータを再初期化するメソッドResetと、次の接続された通知インターフェイスのポインタを返送するメソッドNextとを含む。コードテーブル3は、列挙メソッドNextにより返送される接続情報、CONNECTDATAと称する、に対する典型的な構造定義を示している。
【0046】
コードテーブル4は、インターフェイスIConnectionPointContainer及びIEnumConnectionPointsの好ましい定義に対するC++擬似コードを含んでいる。IConnectionPointContainerインターフェイスは、特定の接続ポイントオブジェクトを見つけそして1組の収容された接続ポイントオブジェクトを列挙するための方法を実施する。IEnumConnectionPointsインターフェイスはIConnectionPointContainerインターフェイスにより使用される列挙メソッドを実施する。IConnectionPointContainerインターフェイスは、指定のインターフェイスIDを与えたIConnectionPointインターフェイスのポインタを返送するメソッドFindConnectionPointを含んでいる。メソッドIEnumConnectionPointsは、収容された1組の接続ポイントオブジェクトを経てインターフェイスIEnumConnectionPointsのポインタを繰り返し返送する。インターフェイスIEnumConnectionPointsは、第1の接続オブジェクトを指すようにエニュメレータを初期化するメソッドResetと、接続ポイントコンテナオブジェクトに記憶された次の接続ポイントオブジェクトに関連したIConnectionPointインターフェイスを指すポインタを検索するメソッドNextとを備えている。
【0047】
図5及び6について説明した例と対応的に、図5に示されたビジュアルプログラミング環境より成るオブジェクトは、オープンファイルダイアログボックスオブジェクト503(ソースオブジェクト)とコードオブジェクト(シンクオブジェクト)504、505及び506との間の接続を設定するイニシエータオブジェクトとして働く。図7は、指定のシンクオブジェクトを指定の通知インターフェイスに対する指定のソースオブジェクトに接続するためのファンクションSetUpConnectionの流れ線図である。イニシエータオブジェクト(ビジュアルプログラミング環境を実施するコード)は、このファンクションを使用して、図5及び6に示された全ての接続を設定することができる。ファンクションSetUpConnectionは、コードテーブル3及び4に示されたインターフェイスを使用して事象取扱機構を設定するための一例を与える。これらのインターフェイス、及びSetUpConnectionとは異なるファンクションが多数使用できることが当業者に明らかであろう。
【0048】
ファンクションSetUpConnectionは、ソースオブジェクトにおける接続ポイントオブジェクトを接続のために決定し、そしてシンクオブジェクトの適当な通知インターフェイスを接続ポイントオブジェクトに接続する。このファンクションは、3つの入力パラメータをとる。即ち、接続すべきソースオブジェクトのあるインターフェイスを指すポインタであるpSrcと、接続すべきシンクオブジェクトのあるインターフェイスを指すポインタであるpSinkと、シンクオブジェクトが接続しようとする接続ポイントオブジェクトに関連したインターフェイス識別子であるiidである。ステップ701において、このファンクションは、指定のソースオブジェクトのメソッドQueryInterfaceを呼び出して、指定のソースオブジェクトのIConnectionPointContainerインターフェイスを位置決めする。ステップ702において、ファンクションは、返送されたIConnectionPointContainerインターフェイスポインタを使用して、メソッドFindConnectionPointを呼び出し、指定のiidに対する接続ポイントオブジェクトのポインタを検索する。(このファンクションは、図8を参照して説明する。)ステップ703において、ファンクションは、例えば、将来にシンクオブジェクトの切断に使用するために、接続ポイントオブジェクトの返送されたポインタをセーブする。ステップ704において、ファンクションは、指定のシンクオブジェクトのメソッドQueryInterfaceを呼び出して、シンクオブジェクトのIUnknownインターフェイスのポインタを得る。ステップ705において、ファンクションは、接続ポイントオブジェクト(ステップ702で返送された)のメソッドAdviseを呼び出し、シンクオブジェクトのIUnknownインターフェイスを接続ポイントオブジェクトに接続する。ファンクションは、Adviseの呼び出しにおいてシンクオブジェクトのIUnknownインターフェイスのポインタを渡し、それが首尾良くいく場合は、メソッドAdviseは、接続された通知インターフェイスを独特に識別するトークンを返送する。ステップ706において、メソッドAdviseによって接続が首尾良く実行された場合には、ファンクションはステップ707に続き、さもなくば、エラーを返送する。ステップ707において、ファンクションは、シンクオブジェクトの通知インターフェイスの切断に後で使用するためにメソッドAdviseによって返送されたトークンをセーブし、そして復帰となる。
【0049】
ファンクションSetUpConnectionは、接続ポイントオブジェクトとシンクオブジェクトとの間の接続を設定する1つのメソッドを組み込んでいる。多数の別の方法があることが当業者に明らかであろう。例えば、ステップ702とは別に、ConnectionPointContainerインターフェイスの列挙メソッドEnumConnectionPointsを用いて、接続ポイントオブジェクトを決定してもよい。又、シンク又はイニシエータオブジェクトがソースオブジェクトにおける接続ポイントオブジェクトのポインタを既に有している場合には、シンク又はイニシエータオブジェクトはIConnectionPointインターフェイスのメソッドGetConnectionPointContainerを用いて、接続ポイントコンテナオブジェクトのポインタを検索し、異なる接続ポイントオブジェクトをサーチすることができる。又、シンク又はイニシエータオブジェクトが所望の接続ポイントオブジェクトを既に得ている場合には、シンク又はイニシエータオブジェクトはメソッドAdviseを直接呼び出し、予備的なステップを省くことができる。更に、好ましい実施例では、指定のシンクオブジェクトのIUnknownインターフェイスのポインタは、指定の接続ポイントオブジェクトに記憶されたインターフェイスポインタであると仮定する。IUnknownインターフェイスは、接続ポイントオブジェクトの永続的記憶をサポートし、そして接続されたシンク又は委託オブジェクトへの遅延結合をイネーブルするのに使用される。或いは又、遅延結合に関連することなく通知インターフェイス自体のポインタを記憶することもできる。又、このファンクション及び以下に述べるファンクションでは、説明の簡略化のために、レファレンスカウントが省略されていることに注意されたい。オブジェクト接続が形成されそして破壊されるときには、好ましくはレファレンスカウントが更新されそして好ましくは繰り返しレファレンスが回避されることが当業者に明らかであろう。
【0050】
図8は、IConnectionPointContainerインターフェイスのメソッドFindConnectionPointを示すフローチャートである。このメソッドは、指定のインターフェイス識別子に対応する接続ポイントオブジェクトのIConnectionPointインターフェイスのポインタを返送する。指定のインターフェイス識別子は、入力パラメータとしてこのメソッドに通され、そしてこのメソッドは、出力パラメータにおけるインターフェイスポインタを指すポインタを返送する。ステップ801ないし806では、このメソッドは、インスタンス生成された接続ポイントオブジェクトのリストを通してループし、指定のインターフェイス識別子に対応する接続ポイントオブジェクトを探す。ステップ807ないし810において、対応する接続ポイントオブジェクトが見つからない場合には、このメソッドは、要求されたインターフェイス識別子がソースオブジェクトによってサポートされる場合に新たな接続ポイントオブジェクトをインスタンス生成し、さもなくば、このメソッドは、エラーを返送する。ステップ801において、第1のリストエレメントに含まれたIConnectionPointインターフェイスポインタを指すように一時的な変数がセットされる。ステップ802において、一時的な変数によって指されたインターフェイスのメソッドGetConnectionInterfaceが呼び出されて、一時的な変数によって参照された接続ポイントオブジェクト(現在接続ポイントオブジェクト)に関連したインターフェイスIDが指定のインターフェイスIDに一致するかどうかを決定する。ステップ803において、返送されたインターフェイスIDが指定のインターフェイスIDに一致する場合には、このメソッドはステップ804に続き、さもなくば、ステップ805に続く。ステップ804では、このメソッドは、一時的な変数により参照されたIConnectionPointインターフェイスポインタのアドレスを指すように出力パラメータをセットし、そして復帰する。ステップ805において、一時的な変数(現在接続ポイントオブジェクトを指す)は、インスタンス生成された接続ポイントオブジェクトのリストにおける次のエレメントのIConnectionPointインターフェイスを指すようにセットされる。ステップ806において、このメソッドがリストの終わりに達した場合には、このメソッドはステップ807へ続き、さもなくば、このメソッドは、ステップ801においてループの始めへ戻る。ステップ807において、このメソッドは、指定のインターフェイスIDが、ソースオブジェクトがサポートする接続インターフェイスに対応するかどうかを決定し、もしそうであれば、このメソッドは、ステップ808へ続き、さもなくば、エラーを返送する。ステップ808において、このメソッドは、新たな接続ポイントオブジェクトをインスタンス生成する。ステップ809において、このメソッドは、新たにインスタンス生成された接続ポイントオブジェクトを、接続ポイントオブジェクトの接続ポイントコンテナオブジェクトのリストへ挿入する。ステップ810において、このメソッドは、その新たにインスタンス生成された接続ポイントオブジェクトのアドレスを指すように出力パラメータをセットし、そして復帰する。
【0051】
図8のメソッドFindConnectionPointを構成するステップは、接続ポイントオブジェクトが必要に応じて動的にインスタンス生成されることを仮定している。接続ポイントオブジェクトは、ソースオブジェクトの実施に基づいて動的に又は静的に確立できることが当業者に明らかであろう。例えば、ソースオブジェクトをインスタンス生成する際には、ソースオブジェクトによってサポートされる各接続インターフェイス識別子に対応する接続ポイントオブジェクトを、通知インターフェイスに対する空のレファレンスリストと共にインスタンス生成することができる。又、接続ポイントオブジェクトの実施構造の知識と共に接続ポイントコンテナオブジェクトが実施される場合には、効率化の理由で、あるステップをメソッドFindConnectionPointから除去することができる。このような知識は、典型的に、ソースオブジェクトの実施が接続ポイントコンテナオブジェクト及び接続ポイントオブジェクトに対してそれ自身の実施を与える場合に生じる。更に、メソッドFindConnectionPointは、接続ポイントオブジェクトに対するレファレンスを記憶するのに用いられるデータ構造が図6に示すようなリスト構造であると仮定する。或いは又、このメソッドは、種々の記憶データ構造を取り扱うように書き込むこともできる。
【0052】
図9は、ソースオブジェクトとシンクオブジェクトとの間に確立された接続を使用する方法のフローチャートである。より詳細には、図9は、ユーザがOKボタンオブジェクト510を押したことを指示するシステム選択事象をソースオブジェクトが受け取ったときに図5のオープンファイルダイアログボックスオブジェクト503に対応するソースオブジェクトによって実行することのできる1組のステップを示している。この例は、図6を参照して述べたように接続が適当に確立されたと仮定している。オブジェクト接続機構の意味及び他の多数の使用が考えられることが当業者に明らかであろう。
【0053】
ユーザが図5のOKボタンオブジェクト510を押すと、システムは選択事象をソースオブジェクトに送信する。次いで、ソースオブジェクトは、外部で生じた事象に応答するためにある内部ルーチンを呼び出す。図9は、このようなルーチン、即ちIDialogBoxインターフェイスに対するメソッドOK ButtonDownの例を示している。メソッドOK ButtonDownは、生じた事象に関連するインターフェイス識別子にどの接続ポイントオブジェクトが対応するかを決定し、そしてその決定された接続ポイントオブジェクトに接続された通知インターフェイスの所定のメソッドを呼び出す。既に述べたように、生じた事象を含む1組の事象はインターフェイスによって表されるので、ソースオブジェクトは、接続されたシンクオブジェクトによりどんなメソッドがサポートされるかの知識を有する。更に、生じた事象を取り扱うソースオブジェクトルーチン(この場合は、OK ButtonDownメソッド)では、ソースオブジェクトは、その生じた事象を取り扱うためにシンクオブジェクトのどの特定メソッドを呼び出すのが好ましいかを判断することができる。この特定例では、このメソッドは、その生じた選択事象に応答するために、インターフェイス識別子IID IButtonに対応する通知インターフェイスのメソッドMouseLeftButtonDownを呼び出すのが好ましいと決定する。
【0054】
ステップ901では、このメソッドは、メソッドQueryInterfaceを用いてそれ自身のIConnectionPointContainerインターフェイスを得る。ステップ902では、このメソッドは、IConnectionPointContainerインターフェイスポインタを用いて、メソッドFindConnectionPointを呼び出し、インターフェイス識別子IID IButtonに対応する接続ポイントオブジェクトを要求する。ステップ903では、このメソッドは、手前のステップで返送された接続ポイントオブジェクトのメソッドEnumConnectionsを呼び出して、接続ポイントオブジェクトの内容を列挙するエニュメレータを得る。ステップ904では、このメソッドは、通知インターフェイスのレファレンスのリストの始めでスタートするようにエニュメレータをリセットする。ステップ905では、このメソッドは、エニュメレータのメソッドNextを呼び出し、次にレファレンスされた通知インターフェイスに対する接続データを得る。ステップ906では、通知インターフェイスに対するそれ以上のレファレンスが存在しないことをエニュメレータが指示する場合には、このメソッドは復帰となり、さもなくば、このメソッドはステップ907へ続く。ステップ907では、このメソッドは、もし必要ならばリモート手順コールを用いて、接続ポイントデータ構造で指示されたIUnknownインターフェイスのメソッドQueryInterfaceを呼び出し、インターフェイス識別子IID IButtonに対応する通知インターフェイスを要求する。リモート手順コールは、接続された通知インターフェイスが別のプロセスアドレススペース内に含まれたオブジェクトに属する場合に必要とされる。ステップ908において、このメソッドは、検索されたIButtonインターフェイスのメソッドMouseLeftButtonDownを呼び出し(もし必要ならばリモート手順コールを用いて)、そしてステップ905のループの始めへと戻る。接続ポイントコンテナオブジェクト及び接続ポイントオブジェクトの実施がソースオブジェクトの実施によって分かる場合には、効率化の理由で、この方法の多数のステップを省略できることが当業者に明らかであろう。
【0055】
図10は、指定の通知インターフェイスを切断するためにシンクオブジェクトによって定められたファンクションのフローチャートである。このファンクションは、シンクオブジェクトが切断しようとする通知インターフェイスのインターフェイスIDである1つの入力パラメータを有している。ステップ1001において、このファンクションは、ファンクションSetUpConnectionの間に既に記憶された(図7のステップ703)指定のインターフェイスIDに対する接続ポイントオブジェクトのIConnectionPointインターフェイスのポインタを検索する。又、このファンクションは、指定のインターフェイスIDに対して既に確立された(図7のステップ707)接続を独特に識別するトークンも検索する。ステップ1002において、このファンクションは、検索されたIConnectionPointインターフェイスのメソッドUnadviseを呼び出し、検索されたトークンをこれに渡し、そして復帰する。IConnectionPointインターフェイスのメソッドUnadviseは、指定のトークンを使用して通知インターフェイスに対するレファレンスのリストをサーチし、それに対応する通知インターフェイスレファレンスを見つける。メソッドUnadviseは、次いで、対応する通知インターフェイスに対するレファレンスを、接続された通知インターフェイスのリストから除去し、従って、対応する通知インターフェイスを切断する。
【0056】
コードテーブル5は、未知のソースオブジェクトに関する情報を得るためにシンクオブジェクトにより使用できるインターフェイスIProvideClassInfoの好ましい定義に対するC++擬似コードを含む。IProvideClassInfoインターフェイスのメソッドGetClassInfoは、未知のソースオブジェクトからクラス及びタイプ情報を得てそれに接続するためにシンク又はイニシエータオブジェクトによって使用することができる。ITypeInfoインターフェイスは、どんな事象が生じるかそしてどんな特性をサポートするかについてソースオブジェクトにより実施されるインターフェイスを記述する。シンク又はイニシエータオブジェクトは、この情報を用いて、適合し得る接続を設定することができる。ITypeInfoインターフェイスは、参考としてここに取り上げる「タイプライブラリーにインターフェイスするための方法及びシステム(Method and System for Interfacing to a Type Library)」と題する米国特許出願第07/959,056号に詳細に説明されている。
【0057】
以上、好ましい実施例について本発明を説明したが、本発明は、この実施例に限定されるものはない。当業者であれば、本発明の精神内での変更が明らかであろう。従って、本発明は、特許請求の範囲のみにより限定されるものとする。
【図面の簡単な説明】
【図1】オブジェクトを表すのに使用される典型的なデータ構造を示すブロック図である。
【図2】スプレッドシートオブジェクトの記号表示である。
【図3】好ましい接続機構アーキテクチャのブロック図である。
【図4】ソースオブジェクト、委託オブジェクト及びシンクオブジェクトの間の接続を示すブロック図である。
【図5】アプリケーションプログラムのためのオープンファイルダイアログボックスを形成するのに使用されるビジュアルプログラミング環境のディスプレイを示すブロック図である。
【図6】本発明を用いて図5に示すオブジェクトを接続した後のオブジェクト接続及びデータ構造を示すブロック図である。
【図7】指定のシンクオブジェクトを指定の通知インターフェイスに対する指定のソースオブジェクトに接続するためのファンクションSetUpConnectionを示すフローチャートである。
【図8】IConnectionPointContainerインターフェイスの方法FindConnectionPointのフローチャートである。
【図9】ソースオブジェクトとシンクオブジェクトとの間に確立された接続を使用する方法のフローチャートである。
【図10】指定の通知インターフェイスを切断するためにシンクオブジェクトによって定められたファンクションのフローチャートである。
【符号の説明】
301 ソースオブジェクト
302、303 シンクオブジェクト
305、306 接続ポイントオブジェクト
307、308、309、310、311 インターフェイス
401 接続ポイントオブジェクト
402 委託オブジェクト
403 シンクオブジェクト
404、405 通知インターフェイス
Claims (13)
- CPU及びメモリを有するコンピュータシステムで実行される方法において、予めメモリに記憶されたプログラムの命令に基づいて、CPUがメモリ内でソースオブジェクトとシンクオブジェクトを相互接続するための方法であり、
シンクオブジェクトは、ソースオブジェクトから通信を受信するための通知インターフェースと、該通知インターフェースと対応付けられたインターフェース識別子を有し、
ソースオブジェクトは、複数の接続ポイントオブジェクトと接続ポイントコンテナオブジェクトを有し、
接続ポイントオブジェクトは、前記インターフェース識別子で識別された通知インターフェースを接続、切断するためのものであり、1つあるいはそれより多い通知インターフェースに対応するポインタ及びシンクオブジェクトを識別するトークンを記憶するものであり、
接続ポイントコンテナオブジェクトは、ソースオブジェクトの1つあるいはそれより多い事象に関連する要求で指示された特定のインターフェース識別子に対応する接続ポイントオブジェクトを見つけるためのものであり、ソースオブジェクトに収容された1つあるいはそれより多い接続ポイントオブジェクトヘの1つあるいはそれより多いポインタとインターフェース識別子のリストを有し、
当該方法は、
ソースオブジェクト内に収容された1つあるいはそれより多い接続ポイントオブジェクトヘの1つあるいはそれより多いポインタとインターフェース識別子のリストを使って、シンクオブジェクトの通知インターフェースに対応付けられたインターフェース識別子に基づいてソースオブジェクトの事象に関連する要求を認識し、
前記認識された要求によって指示されたインターフェース識別子に基づいて、接続ポイントオブジェクトを検索し、見つかったときはその接続ポイントオブジェクトを選択し、見つからない場合は新たに接続ポイントオブジェクトを生成し、
ソースオブジェクトの事象に関連する要求に対するシンクオブジェクトの通知インターフェースに対応するポインタ及びシンクオブジェクトを識別するトークンを取得し、前記選択又は新たに生成した接続ポイントオブジェクトに記憶し、
ソースオブジェクトが、システム事象を認識したときに、接続ポイントコンテナオブジェクトのインターフェース識別子及び前記ポインタのリストに基づいて接続ポイントオブジェクトを見つけ、接続ポイントオブジェクトの通知インターフェースに対応するポインタ及びシンクオブジェクトを識別するトークンに基づいて、ソースオブジェクトとシンクオブジェクトの間を相互接続させる方法。 - 通知を、ソースオブジェクトからシンクオブジェクトに送るための、コンピュータシステムにおける方法であって、請求項1に記載の方法によってシンクオブジェクトがソースオブジェクトに接続され、
当該方法が更に、
CPUがソースオブジェクトを実行することによって、
シンクオブジェクトの通知インターフェースのメンバファンクションを呼び出す、ステップを含む方法。 - コンピュータシステムが、ソースオブジェクトとシンクオブジェクトとの間の接続を設定するための、メモリに記憶されたイニシエータオブジェクトを有する請求項1に記載の方法。
- CPU及びメモリを持つコンピュータシステムにおいて実行される、メモリに予め記億されたプログラム命令に基づいて、CPUが、メモリ内で、ソースオブジェクトとシンクオブジェクトとの間のオブジェクト接続を発生する方法であって、シンクオブジェクトがソースオブジェクトにアクセスするための通知インターフェースを有し、
通知インターフェースが、対応付けられたインターフェース識別子を有し、
ソースオブジェクトは複数の接続ポイントオブジェクト及び接続ポイントコンテナオブ ジェクトを有し、
接続ポイントオブジェクトが、シンクオブジェクトの通知インターフェースを接続、及び、切断し、並びに、1つあるいはそれより多い通知インターフェースに対応するポインタ及びシンクオブジェクトを識別するトークンを記憶するためのものであり、接続ポイントオブジェクトの各々が、接続ポイントインターフェースを有し、接続ポイントオブジェクトが、接続ポイントコンテナオブジェクトによって管理され、
接続ポイントコンテナオブジェクトは、ソースオブジェクトの1つあるいはそれより多い事象に関連する要求で指示された特定のインターフェース識別子に対応する接続ポイントオブジェクトを見つけるためのものであり、ソースオブジェクトに収容された1つあるいはそれより多い接続ポイントオブジェクトヘの1つあるいはそれより多いポインタとインターフェース識別子のリストを有し、
当該方法は、
ソースオブジェクト内に収容された1つあるいはそれより多い接続ポイントオブジェクトヘの1つあるいはそれより多いポインタとインターフェース識別子のリストを使って、シンクオブジェクトの通知インターフェースに対応付けられたインターフェース識別子に基づいてソースオブジェクトの事象に関連する要求を認識し、
前記認識された要求によって指示されたインターフェース識別子に基づいて、接続ポイントオブジェクトを検索し、見つかったときはその接続ポイントオブジェクトを選択し、見つからない場合は新たに接続ポイントオブジェクトを生成し、
ソースオブジェクトの事象に関連する要求に対するシンクオブジェクトの通知インターフェースに対応するポインタ及びシンクオブジェクトを識別するトークンを取得し、前記選択又は新たに生成した接続ポイントオブジェクトに記憶し、
ソースオブジェクトが、システム事象を認識したときに、接続ポイントコンテナオブジェクトのインターフェース識別子及び前記ポインタのリストに基づいて接続ポイントオブジェクトを見つけ、接続ポイントオブジェクトの通知インターフェースに対応するポインタ及びシンクオブジェクトを識別するトークンに基づいて、ソースオブジェクトとシンクオブジェクトの間を相互接続させる方法。 - 請求項4に記載の方法であって、
選択された接続ポイントインターフェースが、複数のシンクオブジェクトに接続するためのものである方法。 - 接続ポイントコンテナオブジェクトが、接続ポイントインターフェースとの対話を管理するためのものである、請求項4に記載の方法。
- 接続ポイントインターフェースが、ソースオブジェクトヘの接続を要求するためのアドバイスメンバファンクションを持つ請求項4に記載の方法。
- 接続ポイントコンテナオブジェクトが、複数の接続ポイントオブジェクトとの対話を管理するためのものであり、
接続ポイントオブジェクトを選択するステップが、接続ポイントコンテナオブジェクトから接続ポイントオブジェクトを要求するサブステップを含む、請求項4に記職の方法。 - 接続ポイントインターフェースがアドバイスメンバーファンクションを有し、選択された接続ポイントオブジェクトの接続ポイントインターフェースからの接続を要求するステップが、
要求をなすために、接続ポイントインターフェースのアドバイスメンバーファンクションを呼び出すことを含む、請求項4に記載の方法。 - CPU及びメモリを備えたコンピュータシステムにおいて実行される、メモリ内に予め記憶されたプログラムの命令に基づいて、CPUが、メモリに記憶されたソースオブジェクトと、メモリに記憶されたシンクオブジェクトとの間のオブジェクト接続を動的に発生する方法であって、
シンクオブジェクトがソースオブジェクトにアクセスするための通知インターフェースを有し、
通知インターフェースが、対応付けられたインターフェース識別子を有し、
ソースオブジェクトは複数の接続ポイントオブジェクト及び接続ポイントコンテナオブジェクトを有し、
接続ポイントオブジェクトが、シンクオブジェクトの通知インターフェースを接続、及び、切断し、並びに、1つあるいはそれより多い通知インターフェースに対応するポインタ及びシンクオブジェクトを識別するトークンを含む参照を記憶するためのものであり、接続ポイントオブジェクトの各々が、接続ポイントインターフェースを有し、接続ポイントオブジェクトが、接続ポイントコンテナオブジェクトによって管理され、
接続ポイントコンテナオブジェクトは、ソースオブジェクトの1つあるいはそれより多い事象に関連する要求で指示された特定のインターフェース識別子に対応する接続ポイントオブジェクトを見つけるためのものであり、ソースオブジェクトに収容された1つあるいはそれより多い接続ポイントオブジェクトヘの1つあるいはそれより多いポインタとインターフェース識別子のリストを有し、
当該方法は、
ソースオブジェクト内に収容された1つあるいはそれより多い接続ポイントオブジェクトヘの1つあるいはそれより多いポインタとインターフェース識別子のリストを使って、シンクオブジェクトの通知インターフェースに対応付けられたインターフェース識別子に基づいてソースオブジェクトの事象に関連する要求を認識し、
前記認識された要求によって指示されたインターフェース識別子に基づいて、接続ポイントオブジェクトを検索し、見つかったときはその接続ポイントオブジェクトを選択し、見つからない場合は新たに接続ポイントオブジェクトを生成し、
ソースオブジェクトの事象に関連する要求に対するシンクオブジェクトの通知インターフェースに対応するポインタ及びシンクオブジェクトを識別するトークンを取得し、前記選択又は新たに生成した接続ポイントオブジェクトに記憶し、
ソースオブジェクトが、システム事象を認識したときに、接続ポイントコンテナオブジェクトのインターフェース識別子及び前記ポインタのリストに基づいて接続ポイントオブジェクトを見つけ、接続ポイントオブジェクトの通知インターフェースに対応するポインタ及びシンクオブジェクトを識別するトークンに基づいて、ソースオブジェクトとシンクオブジェクトの間を相互接続させる方法。 - CPUが、ソースオブジェクトを実行することによって、接続ポイントオブジェクト内に記憶された参照によって参照された通知インターフェースインスタンスのメソッドを呼び出すというステップを更に含む、請求項10に記載の方法。
- 選択された接続ポイントオブジェクトが、複数のシンクオブジェクトに接続するためのものであり、
接続を要求し、選択された接続ポイントオブジェクト内に参照を記憶するステップが、各シンクオブジェクトに対して実行されるものであり、
更に、
CPUがソースオブジェクトを実行することによって、各シンクオブジェクトに対して、選択された接続ポイントオブジェクト内に記憶された参照によって参照された通知インターフェースのメソッドを呼び出す、
ステップを含む、請求項10に記載の方法。 - 請求項補10に記載の方法であって、
選択された接続ポイントインターフェースが、複数のシンクオブジェクトヘ接続するための.ものであり、
ソースオブジェクト及びシンクオブジェクトが接続されることを要求するための選択された接続ポイントインタフェースを使用し、選択された通知インターフェースインスタンスヘの参照を記憶するステップが、複数のシンクオブジェクトの各々について実行され、
更に、
CPUが、ソースオブジェクトを実行することによって、各シンクオブジェクトに対して、選択された接続ポイントインターフェースを有する接続ポイントオブジェクトに記憶された参照によって参照された通知インターフェースのメソッドを呼び出す、
ステップを含む方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/166976 | 1993-12-13 | ||
US08/166,976 US5485617A (en) | 1993-12-13 | 1993-12-13 | Method and system for dynamically generating object connections |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002151117A Division JP2003015875A (ja) | 1993-12-13 | 2002-05-24 | オブジェクト接続を動的に発生する方法及びシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07200296A JPH07200296A (ja) | 1995-08-04 |
JP4070248B2 true JP4070248B2 (ja) | 2008-04-02 |
Family
ID=22605432
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP30736794A Expired - Lifetime JP4070248B2 (ja) | 1993-12-13 | 1994-12-12 | オブジェクト接続を動的に発生する方法及びシステム |
JP2002151117A Pending JP2003015875A (ja) | 1993-12-13 | 2002-05-24 | オブジェクト接続を動的に発生する方法及びシステム |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002151117A Pending JP2003015875A (ja) | 1993-12-13 | 2002-05-24 | オブジェクト接続を動的に発生する方法及びシステム |
Country Status (5)
Country | Link |
---|---|
US (2) | US5485617A (ja) |
EP (1) | EP0660231B1 (ja) |
JP (2) | JP4070248B2 (ja) |
CA (1) | CA2137745C (ja) |
DE (1) | DE69425548T2 (ja) |
Families Citing this family (158)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805885A (en) | 1992-12-24 | 1998-09-08 | Microsoft Corporation | Method and system for aggregating objects |
US5485617A (en) | 1993-12-13 | 1996-01-16 | Microsoft Corporation | Method and system for dynamically generating object connections |
DE69518238T2 (de) * | 1994-05-16 | 2001-03-29 | Apple Computer | Objekt für die definition einer dialogeinheitschnittstelle |
US5922054A (en) * | 1994-08-19 | 1999-07-13 | Canon Kabushiki Kaisha | System for managing external applications and files |
US5706505A (en) * | 1994-08-19 | 1998-01-06 | Microsoft Corporation | Method and system for binding data in a computer system |
DE69517945T2 (de) * | 1994-09-21 | 2001-01-11 | Kodak Ltd | Verbindungsverwalter zum integrieren der daten zwischen anwenderprogrammen |
US5805886A (en) * | 1994-09-26 | 1998-09-08 | Intel Corporation | Method for notifying client applications of events in a shared application in a computer system |
EP0803093B1 (en) * | 1994-12-07 | 2001-09-12 | NeXT SOFTWARE, INC. | Method for associating data bearing objects with user interface objects |
US5850518A (en) | 1994-12-12 | 1998-12-15 | Northrup; Charles J. | Access-method-independent exchange |
EP0811193B1 (en) * | 1995-02-22 | 1998-10-14 | Agust S. Egilsson | Graphical environment for managing and developing applications |
US5911068A (en) * | 1995-03-30 | 1999-06-08 | Microsoft Corporation | Container independent control architecture |
US5802531A (en) * | 1995-05-08 | 1998-09-01 | Apple Computer, Inc. | Method and system for embedding parts of documents and synchronizing multiple views thereof |
US5664208A (en) * | 1995-05-16 | 1997-09-02 | Apple Computer, Inc. | Methods and apparatuses for seamless compound document processing |
US5740455A (en) * | 1995-05-16 | 1998-04-14 | Apple Computer, Inc. | Enhanced compound document processing architectures and methods therefor |
US5606661A (en) * | 1995-06-07 | 1997-02-25 | Tandem Computers Incorporated | Apparatus and method for scan-based testing in an object-oriented programming environment |
EP0762273B1 (en) | 1995-09-06 | 2002-05-15 | Seiko Epson Corporation | Peripheral device control system using a plurality of objects |
US5724589A (en) * | 1995-10-13 | 1998-03-03 | Borland International, Inc. | Development system with a property-method-event programming model for developing context-free reusable software components |
US6467085B2 (en) | 1995-10-17 | 2002-10-15 | Telefonaktiebolaget L M Ericsson (Publ) | System and method for reducing coupling in an object-oriented programming environment |
US6389483B1 (en) * | 1995-10-17 | 2002-05-14 | Telefonaktiebolaget L M Ericsson (Publ) | System and method for reducing coupling between modules in a telecommunications environment |
US6016392A (en) * | 1995-11-03 | 2000-01-18 | Intergraph Corporation | Method for object-oriented programming using dynamic interfaces |
US6185728B1 (en) * | 1996-01-31 | 2001-02-06 | Inprise Corporation | Development system with methods for type-safe delegation of object events to event handlers of other objects |
US6226746B1 (en) | 1998-03-20 | 2001-05-01 | Sun Microsystems, Inc. | Stack-based system and method to combine security requirements of methods |
US6185611B1 (en) | 1998-03-20 | 2001-02-06 | Sun Microsystem, Inc. | Dynamic lookup service in a distributed system |
US6487607B1 (en) | 1998-02-26 | 2002-11-26 | Sun Microsystems, Inc. | Methods and apparatus for remote method invocation |
US6832223B1 (en) | 1996-04-23 | 2004-12-14 | Sun Microsystems, Inc. | Method and system for facilitating access to a lookup service |
US6938263B2 (en) | 1996-04-23 | 2005-08-30 | Sun Microsystems, Inc. | System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space |
US6138238A (en) | 1997-12-11 | 2000-10-24 | Sun Microsystems, Inc. | Stack-based access control using code and executor identifiers |
US6247026B1 (en) | 1996-10-11 | 2001-06-12 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of delegation certificates in a distributed system |
US6421704B1 (en) | 1998-03-20 | 2002-07-16 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of group membership in a distributed system |
US6578044B1 (en) | 1997-11-17 | 2003-06-10 | Sun Microsystems, Inc. | Method and system for typesafe attribute matching |
US6466947B2 (en) | 1998-03-20 | 2002-10-15 | Sun Microsystems, Inc. | Apparatus and method for dynamically verifying information in a distributed system |
US6446070B1 (en) | 1998-02-26 | 2002-09-03 | Sun Microsystems, Inc. | Method and apparatus for dynamic distributed computing over a network |
US6598094B1 (en) | 1998-03-20 | 2003-07-22 | Sun Microsystems, Inc. | Method and apparatus for determining status of remote objects in a distributed system |
US6282652B1 (en) | 1998-02-26 | 2001-08-28 | Sun Microsystems, Inc. | System for separately designating security requirements for methods invoked on a computer |
US6237024B1 (en) | 1998-03-20 | 2001-05-22 | Sun Microsystem, Inc. | Method and apparatus for the suspension and continuation of remote processes |
US6438614B2 (en) | 1998-02-26 | 2002-08-20 | Sun Microsystems, Inc. | Polymorphic token based control |
US6463446B1 (en) | 1998-02-26 | 2002-10-08 | Sun Microsystems, Inc. | Method and apparatus for transporting behavior in an event-based distributed system |
US6393497B1 (en) | 1998-03-20 | 2002-05-21 | Sun Microsystems, Inc. | Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system |
US6560656B1 (en) | 1998-02-26 | 2003-05-06 | Sun Microsystems, Inc. | Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system |
US5999986A (en) * | 1996-05-01 | 1999-12-07 | Microsoft Corporation | Method and system for providing an event system infrastructure |
US5918233A (en) * | 1996-05-30 | 1999-06-29 | The Foxboro Company | Methods and systems for providing electronic documentation to users of industrial process control systems |
US6401135B1 (en) * | 1996-06-21 | 2002-06-04 | Sun Microsystems, Inc. | Translator object for testing an interface to a server object |
US5893107A (en) * | 1996-07-01 | 1999-04-06 | Microsoft Corporation | Method and system for uniformly accessing multiple directory services |
US6647432B1 (en) * | 1996-08-19 | 2003-11-11 | Geoquest, A Division Of Schlumberger Technology Corporation | Distributed framework for intertask communication between workstation applications |
EP0825506B1 (en) * | 1996-08-20 | 2013-03-06 | Invensys Systems, Inc. | Methods and apparatus for remote process control |
US6237009B1 (en) | 1996-10-11 | 2001-05-22 | Sun Microsystems, Inc. | Lease renewal service |
US6728737B2 (en) | 1996-10-11 | 2004-04-27 | Sun Microsystems, Inc. | Method and system for leasing storage |
US5832529A (en) | 1996-10-11 | 1998-11-03 | Sun Microsystems, Inc. | Methods, apparatus, and product for distributed garbage collection |
US6401138B1 (en) * | 1996-10-28 | 2002-06-04 | Koninklijke Philips Electronics N.V. | Interface for patient context sharing and application switching |
US6418482B1 (en) * | 1996-11-12 | 2002-07-09 | International Business Machines Corporation | Reference attributes within an object-oriented system |
US6263486B1 (en) * | 1996-11-22 | 2001-07-17 | International Business Machines Corp. | Method and system for dynamic connections with intelligent default events and actions in an application development environment |
US6438615B1 (en) | 1997-01-31 | 2002-08-20 | Sun Microsystems, Inc. | System, method and article of manufacture for using multiple bidirectional ports in association with a java application or applet |
US5913065A (en) * | 1997-01-31 | 1999-06-15 | Sun Microsystems, Inc. | System, method and article of manufacture for creating hierarchical folder components for use in a java application or applet |
US5842020A (en) * | 1997-01-31 | 1998-11-24 | Sun Microsystems, Inc. | System, method and article of manufacture for providing dynamic user editing of object oriented components used in an object oriented applet or application |
US5884078A (en) * | 1997-01-31 | 1999-03-16 | Sun Microsystems, Inc. | System, method and article of manufacture for creating an object oriented component having multiple bidirectional ports for use in association with a java application or applet |
US6496870B1 (en) | 1997-01-31 | 2002-12-17 | Sun Microsystems, Inc. | System, method and article of manufacture for collaboration with an application |
US5790855A (en) * | 1997-01-31 | 1998-08-04 | Sun Microsystems, Inc. | System, method and article of manufacture for type checking appropriateness of port connection and variable type matching in connection with multiport object-oriented components |
US6742050B1 (en) | 1997-03-31 | 2004-05-25 | Intel Corporation | Inter-object messaging |
US6205492B1 (en) * | 1997-04-04 | 2001-03-20 | Microsoft Corporation | Method and computer program product for interconnecting software drivers in kernel mode |
US6581203B1 (en) * | 1997-08-21 | 2003-06-17 | International Business Machines Corporation | Technique for visually creating and adding members to a class |
US6385660B2 (en) | 1997-10-06 | 2002-05-07 | Sun Microsystems, Inc. | Site specific message dispatch in object-oriented systems |
US6317796B1 (en) * | 1997-10-06 | 2001-11-13 | Sun Microsystems, Inc. | Inline database for receiver types in object-oriented systems |
US6253256B1 (en) | 1997-10-15 | 2001-06-26 | Sun Microsystems, Inc. | Deferred reconstruction of objects and remote loading in a distributed system |
US6134594A (en) | 1997-10-28 | 2000-10-17 | Microsoft Corporation | Multi-user, multiple tier distributed application architecture with single-user access control of middle tier objects |
US7076784B1 (en) | 1997-10-28 | 2006-07-11 | Microsoft Corporation | Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment |
EP0838796A3 (en) * | 1998-01-28 | 1998-06-10 | Siemens Aktiengesellschaft | Data or information transmission system |
US6363435B1 (en) * | 1998-02-03 | 2002-03-26 | Microsoft Corporation | Event sourcing and filtering for transient objects in a hierarchical object model |
US6604127B2 (en) | 1998-03-20 | 2003-08-05 | Brian T. Murphy | Dynamic lookup service in distributed system |
CN1298514A (zh) | 1998-02-26 | 2001-06-06 | 太阳微系统公司 | 确定性散列识别远程方法的方法和系统 |
JP2002505467A (ja) * | 1998-02-26 | 2002-02-19 | サン・マイクロシステムズ・インコーポレーテッド | 分散システムにおける動的参照サービス |
US7558472B2 (en) | 2000-08-22 | 2009-07-07 | Tivo Inc. | Multimedia signal processing system |
US6233389B1 (en) | 1998-07-30 | 2001-05-15 | Tivo, Inc. | Multimedia time warping system |
US8577205B2 (en) | 1998-07-30 | 2013-11-05 | Tivo Inc. | Digital video recording system |
US8380041B2 (en) | 1998-07-30 | 2013-02-19 | Tivo Inc. | Transportable digital video recorder system |
US6473791B1 (en) | 1998-08-17 | 2002-10-29 | Microsoft Corporation | Object load balancing |
US6425017B1 (en) | 1998-08-17 | 2002-07-23 | Microsoft Corporation | Queued method invocations on distributed component applications |
US6442620B1 (en) | 1998-08-17 | 2002-08-27 | Microsoft Corporation | Environment extensibility and automatic services for component applications using contexts, policies and activators |
US6256780B1 (en) | 1998-09-10 | 2001-07-03 | Microsoft Corp. | Method and system for assembling software components |
US6810522B2 (en) * | 1998-10-07 | 2004-10-26 | Invensys Systems, Inc. | Method and system for associating parameters of containers and contained objects |
FR2785412B1 (fr) | 1998-10-30 | 2001-08-24 | Bull Sa | Creation dynamique de classes d'objets |
US6304879B1 (en) | 1998-11-25 | 2001-10-16 | Microsoft Corporation | Dynamic data cache for object-oriented computing environments |
US6795968B1 (en) * | 1998-11-25 | 2004-09-21 | Microsoft Corporation | Dynamic object behavior for object-oriented-computing environments |
US6487665B1 (en) | 1998-11-30 | 2002-11-26 | Microsoft Corporation | Object security boundaries |
US6385724B1 (en) | 1998-11-30 | 2002-05-07 | Microsoft Corporation | Automatic object caller chain with declarative impersonation and transitive trust |
US6574736B1 (en) | 1998-11-30 | 2003-06-03 | Microsoft Corporation | Composable roles |
US6308181B1 (en) * | 1998-12-19 | 2001-10-23 | Novell, Inc. | Access control with delayed binding of object identifiers |
US6748455B1 (en) * | 1999-02-23 | 2004-06-08 | Microsoft Corporation | Object connectivity through loosely coupled publish and subscribe events with filtering |
US6829770B1 (en) * | 1999-02-23 | 2004-12-07 | Microsoft Corporation | Object connectivity through loosely coupled publish and subscribe events |
US6473769B1 (en) * | 1999-03-31 | 2002-10-29 | Microsoft Corporation | Property linking in object-oriented computing environments |
FR2792435B1 (fr) * | 1999-04-15 | 2001-07-13 | Cit Alcatel | Procede de modification d'un protocole entre objets distribues |
US7168062B1 (en) * | 1999-04-26 | 2007-01-23 | Objectbuilders, Inc. | Object-oriented software system allowing live modification of an application |
WO2000067121A1 (en) * | 1999-04-29 | 2000-11-09 | Rutgers University | Distributed software development environment |
US6925513B1 (en) * | 1999-05-04 | 2005-08-02 | Apple Computer, Inc. | USB device notification |
WO2000070417A1 (en) | 1999-05-17 | 2000-11-23 | The Foxboro Company | Process control configuration system with parameterized objects |
US7089530B1 (en) * | 1999-05-17 | 2006-08-08 | Invensys Systems, Inc. | Process control configuration system with connection validation and configuration |
US6782541B1 (en) * | 1999-05-28 | 2004-08-24 | Avaya Technology Corp. | System and method of exchanging information between software modules |
JP4546009B2 (ja) | 1999-06-11 | 2010-09-15 | ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー | ソフトウエア要素間の通信 |
US6788980B1 (en) * | 1999-06-11 | 2004-09-07 | Invensys Systems, Inc. | Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network |
US6671742B1 (en) * | 1999-06-15 | 2003-12-30 | At&T Corp. | Method and apparatus for unifield control and data event exchange in a software system |
US6701485B1 (en) * | 1999-06-15 | 2004-03-02 | Microsoft Corporation | Binding spreadsheet cells to objects |
US7337174B1 (en) | 1999-07-26 | 2008-02-26 | Microsoft Corporation | Logic table abstraction layer for accessing configuration information |
US6598037B1 (en) | 1999-07-26 | 2003-07-22 | Microsoft Corporation | Data table object interface for datastore |
US6564377B1 (en) | 1999-07-26 | 2003-05-13 | Microsoft Corporation | Self-describing components within a software catalog |
US6421682B1 (en) * | 1999-07-26 | 2002-07-16 | Microsoft Corporation | Catalog management system architecture having data table objects and logic table objects |
US6513112B1 (en) | 1999-07-26 | 2003-01-28 | Microsoft Corporation | System and apparatus for administration of configuration information using a catalog server object to describe and manage requested configuration information to be stored in a table object |
US6377960B1 (en) | 1999-07-26 | 2002-04-23 | Microsoft Corporation | Transactional configuration store and runtime versus administration isolation with version snapshots and aging |
US6466943B1 (en) * | 1999-07-26 | 2002-10-15 | Microsoft Corporation | Obtaining table objects using table dispensers |
AU6915400A (en) * | 1999-08-16 | 2001-03-19 | Z-Force Corporation | System of reusable software parts and methods of use |
US6356933B2 (en) * | 1999-09-07 | 2002-03-12 | Citrix Systems, Inc. | Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language |
US6748555B1 (en) * | 1999-09-09 | 2004-06-08 | Microsoft Corporation | Object-based software management |
US6920636B1 (en) * | 1999-12-15 | 2005-07-19 | Microsoft Corporation | Queued component interface passing for results outflow from queued method invocations |
US6671728B1 (en) * | 2000-02-18 | 2003-12-30 | G.E. Information Services, Inc. | Abstract initiator |
US6789257B1 (en) * | 2000-04-13 | 2004-09-07 | International Business Machines Corporation | System and method for dynamic generation and clean-up of event correlation circuit |
US8082491B1 (en) | 2000-05-09 | 2011-12-20 | Oracle America, Inc. | Dynamic displays in a distributed computing environment |
US6862594B1 (en) | 2000-05-09 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus to discover services using flexible search criteria |
US6934755B1 (en) | 2000-06-02 | 2005-08-23 | Sun Microsystems, Inc. | System and method for migrating processes on a network |
US20030005407A1 (en) * | 2000-06-23 | 2003-01-02 | Hines Kenneth J. | System and method for coordination-centric design of software systems |
EP1195676A3 (en) * | 2000-10-03 | 2007-03-28 | Microsoft Corporation | Architecture for customizable applications |
US6751787B1 (en) * | 2000-10-13 | 2004-06-15 | Intervoice Limited Partnership | Graphical programming language for representations of concurrent operations |
US6449541B1 (en) * | 2000-10-17 | 2002-09-10 | Microsoft Corporation | Application-to-component communications helper in a vehicle computer system |
US6820268B2 (en) * | 2000-10-30 | 2004-11-16 | Next Computer, Inc. | Method for associating data bearing objects with user interface objects |
US7346842B1 (en) | 2000-11-02 | 2008-03-18 | Citrix Systems, Inc. | Methods and apparatus for incorporating a partial page on a client |
US7194743B2 (en) * | 2000-12-12 | 2007-03-20 | Citrix Systems, Inc. | Methods and apparatus for communicating changes between a user interface and an executing application using property paths |
US6779151B2 (en) * | 2001-01-05 | 2004-08-17 | Microsoft Corporation | Storing objects in a spreadsheet |
US7660887B2 (en) | 2001-09-07 | 2010-02-09 | Sun Microsystems, Inc. | Systems and methods for providing dynamic quality of service for a distributed system |
US7756969B1 (en) | 2001-09-07 | 2010-07-13 | Oracle America, Inc. | Dynamic provisioning of identification services in a distributed system |
US6973655B2 (en) * | 2001-12-18 | 2005-12-06 | Xerox Corporation | System and method of integrating software components |
CA2429762A1 (en) | 2003-05-23 | 2004-11-23 | Ibm Canada Limited - Ibm Canada Limitee | Business to business event communications |
US7509651B2 (en) * | 2003-05-23 | 2009-03-24 | Hewlett-Packard Development Company, L.P. | System and method for providing event notifications to information technology resource managers |
US7739316B2 (en) * | 2003-08-21 | 2010-06-15 | Microsoft Corporation | Systems and methods for the implementation of base schema for organizing units of information manageable by a hardware/software interface system |
US8238696B2 (en) | 2003-08-21 | 2012-08-07 | Microsoft Corporation | Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system |
US8131739B2 (en) * | 2003-08-21 | 2012-03-06 | Microsoft Corporation | Systems and methods for interfacing application programs with an item-based storage platform |
US7590643B2 (en) | 2003-08-21 | 2009-09-15 | Microsoft Corporation | Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system |
US7401104B2 (en) * | 2003-08-21 | 2008-07-15 | Microsoft Corporation | Systems and methods for synchronizing computer systems through an intermediary file system share or device |
US8166101B2 (en) * | 2003-08-21 | 2012-04-24 | Microsoft Corporation | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system |
US20050049814A1 (en) * | 2003-08-26 | 2005-03-03 | Ramchandani Mahesh A. | Binding a GUI element to a control in a test executive application |
US20050091181A1 (en) * | 2003-10-23 | 2005-04-28 | Mckee Timothy P. | System and method for the presentation of items stored on a computer |
US7908562B2 (en) * | 2003-10-23 | 2011-03-15 | Microsoft Corporation | System and a method for presenting items to a user with a contextual presentation |
US7730073B2 (en) * | 2003-10-23 | 2010-06-01 | Microsoft Corporation | System and a method for presenting related items to a user |
US7792874B1 (en) | 2004-01-30 | 2010-09-07 | Oracle America, Inc. | Dynamic provisioning for filtering and consolidating events |
US20050188350A1 (en) * | 2004-02-20 | 2005-08-25 | Microsoft Corporation | Data binding |
US7761923B2 (en) | 2004-03-01 | 2010-07-20 | Invensys Systems, Inc. | Process control methods and apparatus for intrusion detection, protection and network hardening |
US7653880B2 (en) * | 2004-04-13 | 2010-01-26 | Microsoft Corporation | Application of data-binding mechanism to perform command binding |
US7539687B2 (en) * | 2004-04-13 | 2009-05-26 | Microsoft Corporation | Priority binding |
US7895633B2 (en) | 2004-11-19 | 2011-02-22 | Tivo Inc. | Method and apparatus for secure transfer and playback of multimedia content |
US7805422B2 (en) | 2005-02-28 | 2010-09-28 | Microsoft Corporation | Change notification query multiplexing |
US20060212842A1 (en) * | 2005-03-15 | 2006-09-21 | Microsoft Corporation | Rich data-bound application |
US7636888B2 (en) * | 2005-03-15 | 2009-12-22 | Microsoft Corporation | Verifying compatibility between document features and server capabilities |
US7860857B2 (en) * | 2006-03-30 | 2010-12-28 | Invensys Systems, Inc. | Digital data processing apparatus and methods for improving plant performance |
US7913228B2 (en) * | 2006-09-29 | 2011-03-22 | Rockwell Automation Technologies, Inc. | Translation viewer for project documentation and editing |
JP4288292B2 (ja) * | 2006-10-31 | 2009-07-01 | 株式会社エヌ・ティ・ティ・ドコモ | オペレーティングシステム監視設定情報生成装置及びオペレーティングシステム監視装置 |
US20080126537A1 (en) * | 2006-11-23 | 2008-05-29 | Jan Engehausen | Method for automatic definition and assembly of composite portal applications |
CN101211258B (zh) * | 2006-12-28 | 2010-05-19 | 联想(北京)有限公司 | 完整获取GDI和DirectX数据的方法 |
RU2495476C2 (ru) | 2008-06-20 | 2013-10-10 | Инвенсис Системз, Инк. | Системы и способы для иммерсивного взаимодействия с действительными и/или имитируемыми техническими средствами для управления технологическим процессом, контроля состояния окружающей среды и производственного контроля |
US8463964B2 (en) * | 2009-05-29 | 2013-06-11 | Invensys Systems, Inc. | Methods and apparatus for control configuration with enhanced change-tracking |
US8127060B2 (en) * | 2009-05-29 | 2012-02-28 | Invensys Systems, Inc | Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware |
US8331855B2 (en) | 2010-07-12 | 2012-12-11 | Invensys Systems, Inc. | Methods and apparatus for process control with improved communication links |
US9095002B2 (en) | 2010-07-12 | 2015-07-28 | Invensys Systems, Inc. | Methods and apparatus for process control with improved communication links |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4800488A (en) | 1985-11-12 | 1989-01-24 | American Telephone And Telegraph Company, At&T Bell Laboratories | Method of propagating resource information in a computer network |
US5206951A (en) * | 1987-08-21 | 1993-04-27 | Wang Laboratories, Inc. | Integration of data between typed objects by mutual, direct invocation between object managers corresponding to object types |
EP0369961A3 (en) * | 1988-11-18 | 1992-09-02 | International Business Machines Corporation | Interface device and method in a computer system |
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 |
DE69126857T2 (de) | 1991-01-18 | 1998-01-08 | Ibm | Objektorientierte Programmierungsplattform |
US5297284A (en) * | 1991-04-09 | 1994-03-22 | Microsoft Corporation | Method and system for implementing virtual functions and virtual base classes and setting a this pointer for an object-oriented programming language |
EP0546682A3 (en) * | 1991-12-12 | 1993-12-08 | Ibm | Parent class shadowing |
US5305461A (en) * | 1992-04-03 | 1994-04-19 | International Business Machines Corporation | Method of transparently interconnecting message passing systems |
US5371891A (en) * | 1992-04-09 | 1994-12-06 | Microsoft Corporation | Method for object construction in a compiler for an object-oriented programming language |
JP3489123B2 (ja) | 1992-04-15 | 2004-01-19 | 株式会社日立製作所 | アプリケーション結合方法 |
US5327562A (en) * | 1992-05-06 | 1994-07-05 | Microsoft Corporation | Method for implementing virtual function tables in a compiler for an object-oriented programming language |
JPH05324339A (ja) | 1992-05-20 | 1993-12-07 | Pfu Ltd | 連携処理制御方式 |
US5307490A (en) | 1992-08-28 | 1994-04-26 | Tandem Computers, Inc. | Method and system for implementing remote procedure calls in a distributed computer system |
US5315703A (en) * | 1992-12-23 | 1994-05-24 | Taligent, Inc. | Object-oriented notification framework system |
CA2128387C (en) | 1993-08-23 | 1999-12-28 | Daniel F. Hurley | Method and apparatus for configuring computer programs from available subprograms |
US5517645A (en) | 1993-11-05 | 1996-05-14 | Microsoft Corporation | Method and system for interfacing components via aggregate components formed by aggregating the components each with an instance of a component manager |
US5485617A (en) | 1993-12-13 | 1996-01-16 | Microsoft Corporation | Method and system for dynamically generating object connections |
-
1993
- 1993-12-13 US US08/166,976 patent/US5485617A/en not_active Ceased
-
1994
- 1994-12-09 EP EP94119549A patent/EP0660231B1/en not_active Expired - Lifetime
- 1994-12-09 DE DE69425548T patent/DE69425548T2/de not_active Expired - Lifetime
- 1994-12-09 CA CA002137745A patent/CA2137745C/en not_active Expired - Lifetime
- 1994-12-12 JP JP30736794A patent/JP4070248B2/ja not_active Expired - Lifetime
-
1998
- 1998-01-16 US US09/008,241 patent/USRE39285E1/en not_active Expired - Lifetime
-
2002
- 2002-05-24 JP JP2002151117A patent/JP2003015875A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
DE69425548D1 (de) | 2000-09-21 |
DE69425548T2 (de) | 2001-01-04 |
JP2003015875A (ja) | 2003-01-17 |
CA2137745A1 (en) | 1995-06-14 |
US5485617A (en) | 1996-01-16 |
JPH07200296A (ja) | 1995-08-04 |
USRE39285E1 (en) | 2006-09-12 |
EP0660231A2 (en) | 1995-06-28 |
EP0660231B1 (en) | 2000-08-16 |
CA2137745C (en) | 2004-07-27 |
EP0660231A3 (en) | 1995-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4070248B2 (ja) | オブジェクト接続を動的に発生する方法及びシステム | |
JP4027679B2 (ja) | コンポーネント接続管理方法およびその方法をコンピュータで制御するためのコンピュータ読取り可能な記憶媒体 | |
JP4322967B2 (ja) | オブジェクト集合方法及びシステム | |
US5689664A (en) | Interface sharing between objects | |
JP3949180B2 (ja) | 基底システムオブジェクトモデルを備えたシステム管理サービスの統合 | |
US5842018A (en) | Method and system for referring to and binding to objects using identifier objects | |
AU638138B2 (en) | Methods and apparatus for implementing data bases to provide object-oriented invocation of applications | |
US5682532A (en) | System and method having programmable containers with functionality for managing objects | |
AU691031B2 (en) | System and method for providing interoperability among heterogeneous object systems | |
US5511197A (en) | Method and system for network marshalling of interface pointers for remote procedure calls | |
US6230159B1 (en) | Method for creating object inheritance | |
US6088739A (en) | Method and system for dynamic object clustering | |
JPH0997204A (ja) | 分散オブジェクト操作環境において透明性のある不変性を提供する方法および装置 | |
EP0575073A2 (en) | Objects with run-time classes | |
US6360280B1 (en) | Method and system for accessing shell folder capabilities by an application program | |
US6751796B1 (en) | Integration of systems management services with an underlying system object model | |
JP2003022186A (ja) | オブジェクト集合方法およびシステム | |
Simon | Building component software with COM and Eiffel |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20030114 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071127 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080115 |
|
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: 20110125 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110125 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120125 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130125 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140125 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |