[go: up one dir, main page]

JP2004038958A - プロパティをオブジェクトに関連付けするための、コンピュータ可読媒体、システム、および、方法 - Google Patents

プロパティをオブジェクトに関連付けするための、コンピュータ可読媒体、システム、および、方法 Download PDF

Info

Publication number
JP2004038958A
JP2004038958A JP2003169976A JP2003169976A JP2004038958A JP 2004038958 A JP2004038958 A JP 2004038958A JP 2003169976 A JP2003169976 A JP 2003169976A JP 2003169976 A JP2003169976 A JP 2003169976A JP 2004038958 A JP2004038958 A JP 2004038958A
Authority
JP
Japan
Prior art keywords
property
computer
readable medium
class
additional
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
Application number
JP2003169976A
Other languages
English (en)
Other versions
JP4365142B2 (ja
Inventor
Jeffrey L Bogdan
ジェフリー エル.ボグダン
Mark J Finocchio
マーク ジェイ.フィノッキオ
Nicholas M Kramer
ニコラス エム.クレーマー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004038958A publication Critical patent/JP2004038958A/ja
Application granted granted Critical
Publication of JP4365142B2 publication Critical patent/JP4365142B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】オブジェクトの新しい機能を、オブジェクトがそこから派生するクラスに組み込まれないプロパティとして表すことができる機構を提供すること。
【解決手段】第1のプロパティセット内のあるプロパティを有するオブジェクトを含むコンピュータ可読媒体は、第2のプロパティセットのそれぞれの定義、および少なくとも1つの静的メソッドを含むデータ構造を含む。静的メソッドは、第2のプロパティセット内の1つのプロパティに関連付けられ、第1のパラメータを含む。第1のパラメータは、1つのプロパティを一意に識別する。静的メソッドは、オブジェクト内の1つのプロパティへの明示的参照を指定することなく、そのプロパティをオブジェクトに関連付けるように動作する。
【選択図】    図3

Description

【0001】
【発明の属する技術分野】
本発明は、ソフトウェアアプリケーションに関し、より詳細には、ソフトウェアアプリケーション内のオブジェクトのプロパティを管理するための機構を提供可能な、プロパティをオブジェクトに関連付けするためのコンピュータ可読媒体、システム、および、方法に関する。
【0002】
【従来の技術】
今日、ほとんどのプログラミングモデルは、クラスの概念をサポートしている。こうしたクラスは一般に、クラス階層内の異なるクラスを表すブランチを有する階層ツリーの構造をしている。2つのブランチのレベルが異なるときは、下位ブランチが子クラスに相当する。子クラスは、上位ブランチ(すなわち親クラス)に関連付けられているクラスから情報を継承する。2つのブランチのレベルが同じであるときは、それらのクラスを兄弟クラスと呼ぶ。
【0003】
以下の説明上、親クラスとの関係で子クラスに言及するとき、下位クラスおよび上位クラスという用語で、それぞれ子クラスおよび親クラスを指すことがある。階層の最上位のブランチは、階層クラスツリーの基底クラスに相当する。一般に、各クラスの情報には、プロパティ、メソッド、イベントなどがある。プロパティは、クラスに関連付けられた特性を表す。例えば、ボタンクラスは、幅、背景色、フォントタイプ、可視状態、押下げ状態などのプロパティを有することができる。これらのクラスの1つをインスタンス化すると、そのクラスのオブジェクトが作成される。そのオブジェクトの各プロパティは、ランタイム作業中にクエリまたは設定できる関連値を有する。構文が強く型付けされている(strongly typed)場合、クエリまたは設定される値は、特定のデータ型に一致すると期待することができる。ランタイム作業前にソフトウェアアプリケーション内でエラーを検出することができるため、強く型付けされた構文を有することが望ましい。
【0004】
【発明が解決しようとする課題】
クラス階層がいったん適切な位置に配置された後、クラス階層内のオブジェクトに新しい機能を追加することによって問題が生じる。あるプログラミングモデルでは、新しい機能は、強制的に基底クラスに入れられる。この場合、基底クラスが非常に大きくなり(例えば、100のメソッド、50のプロパティ、20のイベントなど)、オブジェクト階層がほぼ管理不可能になる。このプログラミングモデルでは、望ましくないことに、基底クラス内のプロパティ、メソッド、およびイベントの数が多くなりすぎて、開発者は、作成するオブジェクトに、完全に理解した上で所望の機能を実装することができなくなる。
【0005】
さらにもう1つの望ましくない結果として、このプログラミングモデルでは、プロパティの値がローカルに格納されるため、メモリ要件が非常に大きくなってしまう。値がローカルに格納されるため、このプログラミングモデルで作成されたアプリケーションのサイズが適切に調整されない(scale well)。
【0006】
また、このプログラミングモデルによって、サードパーティの開発者は、他の問題も被る。新しい機能の追加を望むサードパーティの開発者は、階層の最下位に子クラスを追加する必要がある。新しい子クラスは、その階層の最下位にあるので、その階層内の他の子クラスからは新しい機能を使用することができない。したがってサードパーティの開発者は、新しい機能をいくつかの子クラスに追加しなければならないことがある。これによってコードが重複し、オブジェクト階層の保守性に影響を与える。以上の理由から、上記従来のプログラミングモデルは望ましくない。
【0007】
そこで、本発明の目的は、新しい機能を、基底クラスに強制的に入れるのではなく、すなわち、あるクラスに追加してそのクラスの永久部分にすることなく、既存のクラス階層内の任意のクラスに入れることが可能な、コンピュータ可読媒体、システム、および、方法を提供することにある。
【0008】
また、本発明の他の目的は、新しい機能を、クラスに組み込まれないプロパティとして表すことが可能な、コンピュータ可読媒体、システム、および、方法を提供することにある。
【0009】
さらに、本発明の他の目的は、あるクラス内のプロパティを別のクラスに関連付ける機構を得ることが可能な、コンピュータ可読媒体、システム、および、方法を提供することにある。この場合、該機構の関連付けは、容易に変更可能であり、他のプロパティセット(set of properties)をそのクラスと関連付けることができる。
【0010】
【課題を解決するための手段】
一実施形態では、第1のプロパティセット内のあるプロパティを有するオブジェクトを含むコンピュータ可読媒体は、さらにデータ構造を含む。データ構造は、第2のプロパティセットのそれぞれの定義、および少なくとも1つの静的メソッドを含む。静的メソッドは、第2のプロパティセット内の1つのプロパティに関連付けられ、第1のパラメータを含む。第1のパラメータは、1つのプロパティを一意に識別する。静的メソッドは、そのオブジェクト内の1つのプロパティへの明示的参照を指定することなく、そのプロパティをオブジェクトに関連付けるように動作可能である。
【0011】
本発明の第1の態様では、静的メソッドは、強く型付けされた構文をサポートする。
【0012】
本発明の別の態様では、静的メソッドは、値をオブジェクトにローカルに格納することなく、オブジェクトの値を取り出すことを含む。この値は、親オブジェクト、プロパティシートなどいくつかの段階から取り出すことができる。
【0013】
【発明の実施の形態】
簡潔に述べると、本発明は、新しい機能を、あるクラスの永久部分にすることなくそのクラスに提供できるようにするプログラミングモデルを提供する。さらに、本発明によって、新しい機能を、クラスに組み込まれないプロパティとして表すことができるようにする。本発明は一般に、あるクラス内のプロパティを別のクラスに関連付ける機構を提供する。以下の詳細な説明を読めば明らかになるように、本発明のプログラミングモデルは、プロパティをオブジェクトに組み込むことなく、オブジェクトに動的なプロパティを提供する。
【0014】
図1を参照すると、本発明を実施するためのシステムの一例が、演算装置100などの演算装置を含んでいる。極めて基本的な構成では、演算装置100は一般に、少なくとも1つの処理ユニット102、およびシステムメモリ104を含む。システムメモリ104は、演算装置の正確な構成およびタイプに応じて、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、またはその2つの何らかの組合せでもよい。システムメモリ104は一般に、オペレーティングシステム105、1つまたは複数のプログラムモジュール106を含んでおり、またプログラムデータ107を含んでいてもよい。プログラムモジュール106の例には、ワシントン州レドモンドにあるMicrosoft CorporationのVisual Studio IntelliSense、オブジェクトライブラリを使用する他のソフトウェアプログラミング環境などがある。さらに、プログラムモジュール106は、ソフトウェアプログラミング環境を使用して作成されたソフトウェアアプリケーションを含む。これらのソフトウェアアプリケーションが処理ユニット102上で実行されると、プロパティエンジンは、本発明のプログラミングモジュールに従ってソフトウェアアプリケーションを処理する。プロパティエンジンは、オペレーティングシステム105の一部、あるいは別のプログラムモジュール106であってもよい。図1に、演算装置100のこの基本的な構成を、破線108内の構成要素で示している。
【0015】
演算装置100は、追加の特徴または機能を備えることができる。例えば、演算装置100は、磁気ディスク、光ディスク、テープなど、追加のデータ記憶装置(取外し可能および/または取外し不能)を含んでいてもよい。こうした追加の記憶装置を、図1に取外し可能記憶装置109および取外し不能記憶装置110で示している。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性の、取外し可能および取外し不能な媒体がある。システムメモリ104、取外し可能記憶装置109、および取外し不能記憶装置110は、すべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体には、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)、または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、または所望の情報を格納するために使用でき、演算装置100からアクセスできる他の任意の媒体などがある。こうしたコンピュータ記憶媒体が装置100の一部であってもよい。また演算装置100が、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置112を備えていてもよい。ディスプレイ、スピーカ、プリンタなどの出力装置114を含むこともできる。これらの装置は、当技術分野ではよく知られており、ここでは詳しく説明する必要はない。
【0016】
また演算装置100は、ネットワークなどを介してこの装置が他の演算装置118と通信できるようにする通信接続116を含んでいてもよい。通信接続116は、通信媒体の一例である。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波や他の移送機構などの変調されたデータ信号の形の他のデータで具現化することができ、これには任意の情報配布媒体(information delivery media)がある。「変調されたデータ信号」という用語は、信号内の情報をコード化するように設定または変更された1つまたは複数のその特性を有する信号を意味する。通信媒体には、それだけには限定されないが、一例として、有線ネットワーク、直接配線された通信(direct−wired connection)などの有線媒体、音響、RF、赤外線、その他の無線媒体などの無線媒体などがある。コンピュータ可読媒体という用語は、本明細書で使用する場合、記憶媒体および通信媒体の両方を含む。
【0017】
図2は、図1のプログラミング環境内で、あるアプリケーションで作成できる表示画面の一例である。本発明のプログラミングモデルは、様々な環境で使用でき、それだけには限定されないが、一例として、図2にユーザインターフェース環境内でのプログラミングモデルの使用を示している。したがってこの例では、図1のアプリケーションの1つが、図2で示す表示画面200を作成する。表示画面200は、ダイアログボックス202を含む。ダイアログボックス202は、他のいくつかのコントロール(すなわちオブジェクト)を含むことができる。この例では、ダイアログボックス202は、リストボックス204、編集ボックス206、および2つのボタンオブジェクト(OKボタン210、CANCELボタン212など)を有するコンテナオブジェクト208を含む。図3に関連して以下で詳述するように、従来のプログラミング技術を使用すると、これらの各オブジェクト(202〜212など)は、ベースオブジェクト(エレメントクラスなど)から派生する子オブジェクトである。さらに、本発明の一実施形態によれば、各子オブジェクトは、ノードクラスから派生していてもよい。後述するように、このノードクラスは、付加プロパティに「付加」機能を提供する。
【0018】
表示画面200の外観は、以前のプログラミングモデルを使用して作成した表示画面と同じように見えるかもしれないが、表示画面200を作成する機構はかなり異なる。以前のプログラミングモデルでは、表示画面200を実施するソフトウェアコードは、オブジェクトの挙動、および各オブジェクト自体または親オブジェクトの1つに組み込まれたオブジェクトの外観を有していた。しかし、以下で詳しく説明するように、本発明によれば、個別のクラスは、2つのクラスの間の明示的参照を頼ることなくオブジェクト202〜212にアクションおよび外観を提供する。
【0019】
これによって開発者は、オブジェクト全体を変更することなく、アクション部分または外観部分のいずれかを変更することができる。したがって、このユーザインターフェースの例では、各オブジェクトが2つの部分に要素の1つとして組み込まれる。1方の部分は、オブジェクトに関連付けられるアクション(すなわち挙動)に関連し、もう一方の部分は、オブジェクトの外観(すなわちレンダリング)に関連する。レンダリングがオブジェクトの挙動から分離されるため、オブジェクトの外観を容易に変更してオブジェクトの表示方法を変えることができる。
【0020】
上記のユーザインターフェースの例では、オブジェクトのプロパティを挙動グループおよび外観グループに都合のよいように要素の1つとして組み込んでいるが、発明者は、様々な環境の多くのオブジェクトのプロパティを、2つ以上の関連のあるグループに都合のよいように分けることができることを決定している。したがって、本発明によれば、こうした関連のあるグループを互いに「暗示的に」関連付けて、オブジェクトを完全に実装することができる。この「暗示の」関連付けによって、以前のプログラミングモデルにまさるいくつかの利点がもたらされる。利点の1つは、サードパーティの開発者が、他のグループに影響を与えずにそのアプリケーションに関する関連のあるグループを都合のよいように変更できることである。これによって、オブジェクトの機能を変更するために開発者が知る必要のある情報量が大幅に簡素化される。さらに、オブジェクト階層がより管理しやすくなる。別の利点は、各オブジェクトがローカル値を必ずしも現在の状態で維持する必要はないので、その記憶域が減ることである。代わりに、図6に関連して詳しく説明するように、必要なときに様々なソースから状態を取り出すことができる。
【0021】
図3は、本発明に従ってあるクラスのプロパティの関連のあるグループを別のクラスと「暗示的に」関連付ける機構を提供するプログラミングモデル300を示す図である。他のプログラミングモデルと同様に、本発明は、基底クラス302をサポートしている。基底クラス302は、基底クラス302と関連付けられている第1のプロパティセット304を含む。さらに、基底クラス302は、1組のメソッド306および1組のイベント308を含む。しかし本発明によれば、基底クラスは、ノードクラス301から派生する。ノードクラス301は、SetValue()メソッド307およびGetValue()メソッド309を提供する。
【0022】
第2のプロパティセット324は、付加クラス322内に含まれる。付加クラス322もまた、第2のプロパティセット324のそれぞれに関連付けられている少なくとも2つの静的メソッド(例えばSetFont()326、GetFont()330)を含む。これらの静的メソッドは、静的メソッドに関連付けられているプロパティを登録しているオブジェクトにアクセス可能なグローバルメソッドと考えることができる。付加クラス322を提供する開発者は、これらの静的メソッド326および330のそれぞれにコードを書く責任を負う。コードは、ノードクラス301が提供するメソッドの1つへの呼出しを含む。例えば、SetFont()326を呼び出して特定の識別子PropertylDおよび所与のフォントValueを得るアプリケーションは、最終的にノードクラス301のSetValue()307への呼出しを実行する。SetFont()326がSetValue()307への呼出しに渡すパラメータは、SetFont()326の呼出しで得られた特定の識別子PropertylDおよび所与のフォントValueを含む。SetFont()関数の例を、以下のように表すことができる。
SetFont(PropertyID,white)
{ PropertyID−>SetValue(PropertyID,white);
}.
【0023】
したがって、付加クラスが任意の付加プロパティに強い型付けを提供することを、当分野の技術者であれば理解されよう。本発明は、SetValue()307を直接呼び出すアプリケーションをサポートしているが、これによって、コンパイル時間中に強い型付けを提供する利点が利用できなくなってしまう。上述したように、強い型付けによって、ランタイム作業前にエラーを検出することができる。別の実施形態では、付加クラス322が、付加プロパティ324のそれぞれに追加の静的メソッド(GetFontID()328など)を提供する。この追加の静的メソッドは、要求された付加プロパティが登録されているかどうかをテストするように動作可能である。したがって、この追加の静的メソッド328を使用して、アプリケーションが、付加プロパティに対してsetおよびgetの静的メソッドを実行しようとする前に、確実に付加プロトコルを必ず適切に登録するようにする。例えば、GetFontlD()328は、Color付加プロパティが登録されていないことを検出した場合、エラーを知らせる、要求側オブジェクトのColor付加プロパティを自動的に登録する、などを行うことができる。
【0024】
次は、遅延登録を提供する実施形態の一例である。
class FontProvider
{   public static Font GetFont(Node n)
{   return n.GetValue(GetFontID());  }
public static void SetFont(Node n, Font newFont)
{   n.SetValue(GetFontID(), newFont);  }
public static DynamicProperty GetFontID()
{   //Delay register Font property if necessary
if(FontID == null)
{   FontID = RegisterProperty(”Font”, typeof(Font), ”Arial”, ...);


private static DynamicProperty FontID = null;

【0025】
他のプログラミングモデルと同様に、本発明は、基底クラス302の子クラス(図示せず)をサポートしている。説明を簡単にするために、図3には、基底クラス302および他の付加クラスの子クラスを示していない。したがって、子クラスが別の付加クラスに関連付けられているのを示していない。しかし、以下の説明を読めば、他の付加クラスを参照する子クラスを有するアプリケーションを容易に設計できることを、当分野の技術者であれば理解できよう。一般に、クラスが付加プロパティに必要な静的メソッドを提供する限り、どんなクラスでも付加プロパティの「プロバイダ」となることができる。
【0026】
付加クラス322によって、サードパーティの開発者は、基底クラス302を変更することなく、アプリケーションにプロパティおよび機能を動的に追加する能力を得ることができる。基底クラス302内のプロパティの変更と同様、追加されたプロパティ(第2のプロパティセット324など)が、階層オブジェクトツリー390全体の中にあるオブジェクトに影響を与える。付加クラス322は、アプリケーションの実行中はインスタンス化されない。したがって、基底クラス302からインスタンス化されたオブジェクトごとに、同じ付加クラス(付加クラス322)は、第2のプロパティセット324をこれらのオブジェクトのそれぞれに提供することができる。
【0027】
アプリケーションのランタイム中、ベースオブジェクト312がインスタンス化される。さらに、1つまたは複数の子オブジェクト(子オブジェクト340〜350など)がインスタンス化される。オブジェクトツリー390にあるオブジェクトは、プログラム制御(C#など)、マークアップ言語(XMLなど)、または他の手段でインスタンス化することができる。オブジェクトツリー390をプログラム制御で作成すると、一般にコンパイラは、付加クラス322を実施する命令に不当な名前やデータ型などのエラーがあるかどうかを識別する。上述したように、付加クラス322は、強い型付けを提供する。したがって、ランタイム前にエラーを見つけることができる。さらに、ソフトウェア開発ツールは、アプリケーションの開発中にエラーを検出することができる。オブジェクトツリー390をマークアップ言語で作成すると、構文解析プログラムがマークアップステートメントを解釈する。一般に、マークアップ言語のタグの名前は、対応するクラスの名前である。
【0028】
これらの子オブジェクト340〜350のそれぞれは、子オブジェクト(子オブジェクト340など)内に1つまたは複数の子プロパティ(子プロパティ341など)を含むことができる。子プロパティの値を、関連付けられた子オブジェクトに格納することができる。しかし、本発明によれば、子オブジェクトが必ずしも値を格納するためのローカルの記憶域を有している必要はない。さらに、これらの子オブジェクト340〜350のそれぞれは、子オブジェクトに関連付けられた1つまたは複数の付加プロパティ(点線のボックス内に示した付加プロパティ352など)を含むことができる。図6に関連して詳しく説明するように、付加プロパティ352は、その値を子オブジェクト350に関連付けられたローカルの記憶域から取得でき、その値を、継承(ベースオブジェクト312など)を介して、プロパティシート(図示せず)を介して、プログラムのメソッド(静的メソッド330をメソッド309と併用するなど)を介して、本発明による他の手段を介して取得することができる。付加プロパティのこれらの値は、子オブジェクトに関連付けられるが、これらの値の記憶域は、一般に子オブジェクトの一部ではない。
【0029】
再度図3を参照すると、ユーザインターフェース環境におけるプログラミングモデルを示している。したがって、ベースオブジェクト312および子オブジェクト340〜350内のプロパティは、オブジェクトの挙動に関連することに気づくであろう。ベースオブジェクト312はダイアログオブジェクトに相当し、子オブジェクト340はボタンオブジェクトに、子オブジェクト350は編集ボックスに、子オブジェクト342は、それぞれリストボックスおよびツリーを表す2つの子オブジェクト346および348を有するセレクタオブジェクトに相当する。これらの子オブジェクト340〜350のそれぞれは、ボタンオブジェクトの押下げプロパティ、ツリーオブジェクトの展開プロパティなど、1つまたは複数の子プロパティ(子プロパティ341など)を含む。
【0030】
一方、付加クラス322内のプロパティは、オブジェクトの外観に関連する。例えば、第2のプロパティセットは、フォントタイプ、色などのプロパティおよびデフォルトの値を含むことができる。このプログラミングモデルは、ランタイム時に子オブジェクトにプロパティを設定するように構成される。その程度まで、各子オブジェクトの付加プロパティ(付加プロパティ352など)は、付加クラスから値を受け取るように構成される。
【0031】
図4は、図3に示したプログラミングモデルを実装できる様々な操作環境のための構文の例をいくつか示している。各構文の例の中の「Provider」という用語の使用は、構文に記載した静的メソッドが、「Provider」という名前を有する付加クラスに関連付けられることを意味する。したがって、これらの各構文によって付加クラスに名前を付けることができるため、異なる2つの付加クラス内にあるまったく同じ名前のプロパティは、互いに競合することがない。これによって、開発者は、名前が競合する可能性を心配することなく付加プロパティクラスを開発することができる。
【0032】
次に構文の例を参照すると、プログラミング環境がVisual Basic、C#などのプログラム言語である場合、擬似言語は、プログラム構文401で示すように表すことができる。プログラム構文401は、クラスを、付加プロパティを含むものと識別するクラス識別子402を含む。プログラム構文401は、メソッド識別子404、およびプロパティに名前を指定する第1の識別子406および第1の識別子406で指定されたプロパティに関連付けられる値を指定する第2の識別子408を有するパラメータリストをさらに含む。パラメータリストは括弧で囲まれ、クラス識別子402とメソッド識別子404とがピリオドで分離されている。図3に示した付加クラス322の付加プロパティ「FONT」を参照すると、プログラム構文401は以下のとおりである。
Attached Class.SetFont(PropertylD, value)
【0033】
おもしろいことに、この構文は、以前のプログラミングモデルの構文と似ているように思われる。しかし、この構文はまったく同じではなく、プログラム構文401は、以前の構文と異なる。例えば、プログラム構文401では、メソッド識別子404は、Providerクラス(すなわち図3の付加クラス322)にある静的メソッドを識別する。以前のプログラミングモデルでは、メソッド識別子は、Providerインスタンスにあるインスタンスメソッドを識別していた。本発明は、Providerクラス(すなわち図3の付加クラス322)を利用するため、プログラミングモデルは、Providerインスタンスの寿命を追跡する必要がなく、そのためマークアップおよびプロパティシートにおいてエクステンダプロパティ(extender property)をサポートすることができる。プログラム構文401の別の特徴は、構文が強く型付けされることである。上述したように、強く型付けされた構文によって、綴り間違った名前や不正なデータ型などの起こり得るエラーを、ランタイム時ではなくコンパイル時に検出することができるため、適切なツールサポートが可能になる。
【0034】
さらに、Visual Basic、C#などのプログラミング環境の場合、プログラミングモデルでは、緩く型付けされた(loosely typed)構文(すなわちプログラム構文411)も許容する。プログラム構文411は、ターゲットオブジェクトを識別するオブジェクト識別子412、付加プロパティクラス内で静的メソッドを識別するメソッド識別子414、付加プロパティ識別子を含むパラメータリスト、および値419を含む。付加プロパティ識別子は、クラス識別子416、および関連付けられた付加クラス内で付加プロパティを識別するプロパティ識別子418を含む。
【0035】
別の実施形態では、プログラミングモデルを、マークアップ構文421などのマークアップ言語構文を使用して実装することができる。マークアップ構文421は、タグ422、プロバイダ指名子424およびプロパティ識別子426を有する付加プロパティ、および値428を含む。一実施形態では、タグ422は、ターゲットオブジェクトの名前(例えば図3のボタンオブジェクト340)である。一般にマークアップ構文421は、それぞれ開記号および閉記号、すなわち「<」および「>」で開始し、終了する。この場合もまた、構文解析プログラムは、付加プロパティがどこに存在しているかを探すための処理を実行する。というのは、付加プロパティは、そのクラスに直接には存在していないからである。
【0036】
さらに別の実施形態では、拡張可能マークアップ言語(XML)を、図4に示したスタイルシート構文431などのスタイルシートと共に使用してプログラミングモデルを実装することができる。この実施形態の場合、スタイルシート構文431は、「タグ」属性432を含む。タグ属性432は、処理を要求しているクラスに相当する。XMLでの付加プロパティの一例は、以下のとおりである。<Button xmlns:ap=”expandoNameSpace” Pressed=”false”
ap:Expandos.String=”string”/>
【0037】
本発明に従って付加プロパティを実装しているアプリケーションを実行するとき、アプリケーションは、オブジェクトツリーにあるオブジェクトをインスタンス化する。次いで、アプリケーションは、プロパティエンジンと共に、オブジェクトの値を取り出し、設定するステップを含むランタイム作業を処理する。図5および図6は、アプリケーションがプロパティエンジンと共に実行する処理を示す。
【0038】
ただし、図5および図6に示すSetValue()プロセスまたはGetValue()プロセスのいずれかを実行する前に、これら2つのプロセスのいずれかの中で指定された付加プロパティを登録する必要がある。上述したように、一実施形態は、プロパティが登録されたかどうかを判断するためのチェックを行うことができる。このチェック(GetFontlD()328など)は、付加プロパティに対応する任意の静的メソッド(すなわちSetFont()326およびGetFont()330)内で行うことができる。このチェックは、任意の静的メソッドが呼び出されるたびに行う必要があるので、この実施形態は、パフォーマンスの代償を払う。アプリケーションに登録を行うよう要求するなど、本発明から逸脱することなくプロパティの登録を最適化する他の実施形態を実施できることは、当分野の技術者であれば理解できよう。
【0039】
付加プロパティの登録は、付加プロパティの一意のPropertyIDを戻す。プロパティを登録するための呼出しを、一例として、以下の形とすることができる。
BarDP=RegisterProperty(”Bar”,O,typeof(string),typeof(Button),0x3);
【0040】
この実施形態では、BarDP変数は、この場合、付加プロパティの一意の識別子を含む。この一意の識別子は、この場合、SetValue()関数およびGetValue()関数の呼出しで使用される。一実施形態では、RegisterPropertyがオーナの静的コンストラクタから直接的または間接的に呼び出される。オーナは、付加プロパティを付加するクラスを参照する。付加プロパティが登録されると、付加プロパティに関連付けられたGetおよびSetの静的メソッドを呼び出すことによって、付加プロパティのターゲットタイプに一致する任意のインスタンスがプロパティを「暗示的に」付加することができる。
【0041】
プロパティを登録するための呼出しの例で上記に示したように、「Bar」は、付加プロパティの名前を指定する。プロパティエンジンは、一般にこの名前を使用しない。しかし、構文解析プログラムは、この名前を使用して、プロパティがすでにオーナに登録されているのと同じ名前をもつかどうかを判断する。ターゲットタイプはButtonである。付加プロパティの場合、オーナとターゲットは同じではない。デフォルトの値は「0」である。図6に関連して詳しく説明するように、プロパティエンジンは、付加プロパティの値を取り出す場所を決定する。したがって、RegisterPropertyの呼出しは、継承、プロパティシートなど、プロパティの値が検索される段階を識別する挙動ビット(behavior bit)を含む。上記の呼出しの例では、挙動ビット「0×3」は、付加プロトコルの値を決定するために、ローカル値、プロパティシート、および継承が検索されることを示す。したがって一実施形態では、こうした挙動ビットの解釈を、GetValue()静的メソッド内でコード化することができる。あるいは、こうした段階は、正規のやり方でプロパティ間の関係を形に表す式によって決定することができる。
【0042】
一実施形態では、付加クラスのコードを、表1に示した形とすることができる。
class BarProvider: Object {
public static DynamicProperty BarDP = RegisterProperty(
”Bar”, 0, typeof(string), typeof(Button));
public static string GetBar(Button button) {
return (string) button.GetValue(BarDP); }
public static void SetBar(Button button, string value){
button.SetValue(BarDP, value); }
}.
Table 1.
【0043】
上記のコードでは、「Bar」という名前の付加プロパティは、付加クラス「BarProvider」内で定義される。付加プロパティ名「Bar」は、データ型で文字列と定義され、Buttonオブジェクトに付加することしかできない。静的メソッドは、強く型付けされ、プロパティへのアクセスおよびプロパティの設定を可能にする。
【0044】
付加プロパティが登録されると、SetValue()関数およびGetValue()関数を実行することができる。図5は、本発明に従って値を設定するプロセスを示す論理流れ図である。ブロック501で処理が開始し、set関数が開始され、あるプロパティに関連付けられた値が変更される。一般に、SetValueプロセス500では、関与するプロパティ(以下、関与するプロパティと呼ぶ)の値がローカルに格納される。処理が決定ブロック502に進む。
【0045】
決定ブロック502で、関与するプロパティのローカルの記憶域が存在するかどうかを決定する。本発明は、自動的にはオブジェクトの各インスタンスのプロパティごとに記憶域をもたないため、関与するプロパティが以前その値を格納していなかった場合は、記憶域が割り振られる(ブロック504)。記憶域が割り振られると、決定ブロック502でローカル記憶域を検出した場合と同様に、処理がブロック506に進む。
【0046】
ブロック506で、値が、関与するプロパティに関連付けられている記憶域にコピーされる。関与するプロパティの状態が変わったら、状態変更の通知が送信される(ブロック508)。一実施形態では、この通知は、その状態はもはや有効ではない可能性があることを従属プロパティに知らせるようダーティビット(dirty bit)を設定することを含むことができる。あるいは、通知は、上記の特許出願に記載したように、ソースが変わったことを各従属に報告することを含むことができる。処理が決定ブロック510に進む。
【0047】
決定ブロック510で、関与するプロパティのキャッシュに値が格納されているかどうかを判断する。この関与するプロパティのキャッシュに値がない場合、プロセスは終了する。しかし、キャッシュに値がある場合、この値はもはや有効ではないので、キャッシュはクリアされる(ブロック512)。次いでプロセスが終了する。
【0048】
図6は、本発明に従って値を取り出すプロセスを示した論理流れ図である。処理はブロック601で開始し、クエリが開始される。処理がブロック602に進む。
【0049】
ブロック602で、アプリケーションは、関与するプロパティ(以下、関与するプロパティと呼ぶ)の1つが更新の必要があることを知らせる。これは一般に、オブジェクトがプロパティの現在の状態をクエリしているときに行われる可能性がある。プロセス600は、様々な段階をチェックすることによってプロパティの値を決定する。こうした段階は、プロパティの登録時に定義される。決定ブロック606〜610は、段階の例を表しているが、本発明から逸脱することがなければ、他の段階を追加することができる。処理が決定ブロック604に進む。
【0050】
決定ブロック604で、プロセスは、キャッシュをチェックして、関与するプロパティが前にキャッシュされているかどうかを判断する。一般に、関与するプロパティは、取出しを最適化するためにキャッシュされる。プロパティが前にキャッシュされている場合は、プロセスがブロック612に進み、値がキャッシュから取り出される。あるいは、プロセスが決定ブロック606に進む。決定ブロック606で、関与するプロパティの値がローカルかどうかを判断する。図5で説明したように、SetValue()が実行されてプロパティの値をローカルに設定した場合、値はローカルである。値がローカルの場合、プロセスがブロック612に進み、値がローカル記憶域から取り出される。値がローカルではない場合、プロセスが決定ブロック608に進む。
【0051】
決定ブロック608で、関与するプロパティの値がプロパティシートで入手可能かどうかを決定する。基底クラスが関連付けられたプロパティシートを有している場合、プロパティシートは、基底クラスの各子がインスタンス化されるとどのようにレンダリングされるかを指定する。関与するプロパティがプロパティシートで入手可能な場合、処理がブロック612に進み、値がプロパティシートから取り出される。しかし、値がプロパティシートにない場合、処理は決定ブロック610に進む。
【0052】
決定ブロック610で、関与するプロパティの値が、継承(すなわち継承値)を介して取得できるかどうかを判断する。継承値は、その子オブジェクトの親オブジェクトから派生する。親オブジェクトの1つが関与するプロパティを有している場合、処理がブロック612に進み、値が親オブジェクトから取り出される。しかし、値が継承されていない場合、付加プロパティに関連付けられた付加クラスからデフォルトの値が取り出される(ブロック614)。処理がブロック616に進む。
【0053】
ブロック616で、アプリケーションは、値を受け取った段階に基づいてウェイトメトリック(weight metric)を算出する。ウェイトメトリックが格納され、それを使用して、その後の取出しを最適化するために、関与するプロパティのうちのどれをキャッシュするかを経験に基づいて決定する。次いで処理が終了する。
【0054】
上記のSetValueプロセスおよびGetValueプロセスに加えて、本発明のプログラミングモデルは、グループクエリ、グループ通知などの強化機能を提供する。したがって、上述したように、本発明は、付加クラスの使用によって、プロパティ間の複雑な関係をサポートする、依存関係に基づくプロパティシステムを提供するプログラミングモデルを提供する。このプログラミングモデルを使用して構築されたアプリケーションでは、プロパティ管理手法が過度にローカルの、インスタンスごと(perinstance based)の記憶域を必要としないため、そのサイズが非常に適切に調整される。代わりに、プログラミングモデルは、基底クラスレベルでのプロパティシートおよび継承の使用などによって、プロパティ値の再利用を促進する。上述したように、本発明は、オブジェクト階層内のオブジェクトが付加を介してプロパティ値を格納するプロパティ管理機構を提供する。
【0055】
上記の詳細、例、およびデータは、本発明の構成の作成および使用を完全に説明している。本発明の多くの実施形態は、本発明の主旨および範囲から逸脱することなく実施することができるため、本発明は、頭記の特許請求の範囲に帰する。
【0056】
(まとめ)
以上の説明により、オブジェクトの新しい機能を、オブジェクトがそこから派生するクラスに組み込まれないプロパティとして表すことができる機構を得ることができる。この機構は、1つのクラス内にあるプロパティを別のクラスに関連付ける。
【0057】
第1のプロパティセット内のあるプロパティを有するオブジェクトを含むコンピュータ可読媒体は、さらにデータ構造を含む。このデータ構造は、第2のプロパティセットのそれぞれの定義と、少なくとも1つの静的メソッドとを含む。
この静的メソッドは、第2のプロパティセット内の1つのプロパティに関連付けられ、第1のパラメータを含む。この第1のパラメータは、1つのプロパティを一意に識別する。
【0058】
これにより、静的メソッドは、オブジェクト内の1つのプロパティへの明示的参照を指定することなく、そのプロパティをオブジェクトに関連付けるように動作することが可能となる。プロパティは、一意の識別子を受け取るためにランタイム中に登録される。
【0059】
以下の利点が挙げられる。
【0060】
本発明の1つの利点は、プロパティを1つまたは複数のサブセットに分けることによって、プロパティの各サブセットがより簡単に保守できるようになることである。本発明の別の利点は、オブジェクト階層の拡張性がより高く、開発者が基底クラスおよびすべての下位クラスに影響を与えるオブジェクト階層に機能を追加することができることである。
【0061】
本発明の別の利点は、オブジェクト内にあるプロパティの記憶域の管理がより効率的かつ便利になることである。
【0062】
本発明のさらに別の利点は、プログラミングモデルが、プログラム環境またはマークアップ環境内で動作することである。さらに、プログラミングモデルが、C++、C#など強く型付けされたプログラミング言語で動作する。さらに、プログラミングモデルは、プロパティシート、変更通知、および値の継承をサポートしている。
【0063】
本発明の別の利点は、付加クラス(attached class)の名前が有効にそのプロパティ名の一部になるため名前が競合する可能性がほとんどなく、そのため独立ライブラリが並存できることである。したがって、異なる2人の開発者がそれぞれ「color」という名前のプロパティを有する付加プロパティを作成した場合、2つの付加プロパティは競合しない。
【0064】
【発明の効果】
以上発明したように、本発明によれば、新しい機能を、あるクラスに追加してそのクラスの永久部分にすることなく、既存のクラス階層内の任意のクラスに追加することができる。
【0065】
また、本発明によれば、新しい機能を、クラスに組み込まれないプロパティとして表すことが可能となり、さらに、あるクラス内のプロパティを別のクラスに関連付ける機構を得ることができる。
【図面の簡単な説明】
【図1】本発明の実施形態の一例で使用できる演算装置の例を示す図である。
【図2】図1の演算装置で作成できる表示画面の例を示す図である。
【図3】本発明に従って1つのクラスのプロパティを別のクラスに付加できるようにするプログラミングモデルを示す図である。
【図4】図3に示すプログラミングモデルを実装するための構文の例をいくつか示す図である。
【図5】本発明に従って値を設定するプロセスを示す論理流れ図である。
【図6】本発明に従って値を取り出すプロセスを示す論理流れ図である。
【符号の説明】
100 演算装置
102 処理ユニット
104 システムメモリ
105 オペレーティングシステム
106 プログラムモジュール
107 プログラムデータ
108 破線
109 取外し可能記憶装置
110 取外し不能記憶装置
112 入力装置
114 出力装置
116 通信接続
118 他の演算装置
200 表示画面
202 ダイアログボックス
204 リストボックス
206 編集ボックス
208 コンテナオブジェクト
210 OKボタン
212 CANCELボタン
300 プログラミングモデル
301 ノードクラス
302 基底クラス
304 第1の組のプロパティ
306 メソッド
307 SetValue()メソッド
308 イベント
309 GetValue()メソッド
312 ベースオブジェクト
322 付加クラス
324 第2の組のプロパティ
326 SetFont()
328 GetFontID()
330 GetFont()
340〜350 子オブジェクト
341 子プロパティ
352 付加プロパティ
390 階層オブジェクトツリー
401 プログラム構文
402 クラス識別子
404 メソッド識別子
406 第1の識別子
408 第2の識別子
411 プログラム構文
412 オブジェクト識別子
414 メソッド識別子
416 クラス識別子
418 プロパティ識別子
419 値
421 マークアップ構文
422 タグ
424 プロバイダ指名子
426 プロパティ識別子
428 値
431 スタイルシート構文
432 タグ属性
500 SetValueプロセス
600 プロセス

Claims (33)

  1. 第1のプロパティセット内のあるプロパティを有するオブジェクトを含むコンピュータ可読媒体であって、
    第2のプロパティセットのそれぞれの定義、および、該第2のプロパティセット内の1つのプロパティに関連付けられた少なくとも1つの静的メソッドを含むデータ構造をさらに含み、
    前記少なくとも1つの静的メソッドは、前記1つのプロパティを一意に識別する第1のパラメータを有し、
    前記静的メソッドは、前記オブジェクトの前記1つのプロパティへの明示的参照を指定することなく前記1つのプロパティを前記オブジェクトに関連付けるように動作させることを特徴とするコンピュータ可読媒体。
  2. 前記静的メソッドは、強く型付けされた構文をサポートすることを特徴とする請求項1記載のコンピュータ可読媒体。
  3. 前記1つのプロパティを前記オブジェクトに関連付けるように動作させる前記静的メソッドは、前記値を前記オブジェクトにローカルに格納することなく前記オブジェクトの値を取り出すステップを含むことを特徴とする請求項1記載のコンピュータ可読媒体。
  4. 前記値を取り出すステップは、複数の段階のうちどの段階が前記1つのプロパティに関連付けられた前記値を保持するかを決定するステップを具えたことを特徴とする請求項3記載のコンピュータ可読媒体。
  5. 1つの段階は、前記オブジェクトの親オブジェクトを含むことを特徴とする請求項4記載のコンピュータ可読媒体。
  6. 1つの段階は、プロパティシートを含むことを特徴とする請求項4記載のコンピュータ可読媒体。
  7. 前記静的メソッドは、前記1つのプロパティの所与の値に対応する第2のパラメータをさらに含み、
    前記1つのプロパティを前記オブジェクトに関連付けるように動作させる前記静的メソッドは、前記オブジェクトのローカル記憶域にある前記所与の値を設定するステップを具えたことを特徴とする請求項1記載のコンピュータ可読媒体。
  8. 前記第1のプロパティセットは、前記オブジェクトの挙動に対応し、
    前記第2のプロパティセットは、前記オブジェクトの外観に対応することを特徴とする請求項1記載のコンピュータ可読媒体。
  9. コンピュータで実行可能な構成要素を有するコンピュータ可読媒体であって、
    複数のプロパティを含む基底クラスと、
    複数の付加プロパティを含む付加クラスと
    を具え、
    前記各付加プロパティは、前記基底クラスから派生したオブジェクトのインスタンスに関連付けられ、
    前記付加クラスは、前記複数の付加プロパティの1つを前記オブジェクトの前記インスタンスに関連付けるための静的メソッドをさらに含むことを特徴とするコンピュータ可読媒体。
  10. 前記基底クラスから派生する前記オブジェクトは、ノードクラスから少なくとも1つのメソッドを継承し、
    該1つのメソッドは、前記1つの付加プロパティを前記オブジェクトの前記インスタンスに関連付けたときに前記静的メソッドによって呼び出されることを特徴とする請求項9記載のコンピュータ可読媒体。
  11. 前記静的メソッドおよび前記1つのメソッドはそれぞれ、前記オブジェクトの前記インスタンスに関連付けられている前記1つの付加プロパティの一意の識別子を渡す第1のパラメータを含むことを特徴とする請求項10記載のコンピュータ可読媒体。
  12. 前記一意の識別子は、ランタイム時に前記1つの付加プロパティを登録した後で入手されることを特徴とする請求項11記載のコンピュータ可読媒体。
  13. 前記1つのメソッドは、緩く型付けされた構文をサポートすることを特徴とする請求項10記載のコンピュータ可読媒体。
  14. 前記静的メソッドは、強く型付けされた構文をサポートすることを特徴とする請求項9記載のコンピュータ可読媒体。
  15. 前記1つの付加プロパティを関連付けるステップは、前記オブジェクトの親オブジェクトから前記オブジェクトの値を取り出すステップを備えることを特徴とする請求項9記載のコンピュータ可読媒体。
  16. 前記1つの付加プロパティを関連付けるステップは、プロパティシートから前記オブジェクトの値を取り出すステップを具えたことを特徴とする請求項9記載のコンピュータ可読媒体。
  17. 第1のプロパティセットを含む、第1のクラスから派生する第1のオブジェクトと、
    第2のプロパティセットを前記第1のオブジェクトに提供する第2のクラスとを具え、
    該第2のクラスは、前記第1のオブジェクトに関連付けられた動作に応答して前記第2のプロパティセットの1つを前記第1のオブジェクトに付加するように動作する静的メソッドを含むことを特徴とするオブジェクトを使用するコンピュータシステム。
  18. 前記静的メソッドは、前記第2のプロパティセットにあるプロパティのうち、前記動作が要求しているのはどれであるかを一意に識別する第1のパラメータを含むことを特徴とする請求項17記載のコンピュータシステム。
  19. 前記1つのプロパティが登録された後で、前記第1のパラメータが前記1つのプロパティを一意に識別できるようになることを特徴とする請求項18記載のコンピュータシステム。
  20. プロパティの状態を設定するためのコンピュータで実施する方法であって、
    第1のプロパティセットを有する第1のオブジェクトを宣言するステップと、
    前記第1のオブジェクトに関連付けられた1つまたは複数の動的プロパティを登録するステップと
    を具え、
    前記動的プロパティは、前記第1のオブジェクトに第2のプロパティセットを提供し、前記第2のプロパティセットの記憶域は前記第1のオブジェクト内には存在しないことを特徴とするコンピュータで実施する方法。
  21. 前記1つまたは複数の動的プロパティを登録するステップは、前記1つまたは複数の動的プロパティのそれぞれに一意の識別子を割り当てるステップを含むことを特徴とする請求項20記載のコンピュータで実施する方法。
  22. 前記一意の識別子を参照する第1のパラメータを有する、静的メソッドを呼び出すステップをさらに具えたことを特徴とする請求項21に記載のコンピュータで実施する方法。
  23. 前記静的メソッドは、強く型付けされていることを特徴とする請求項22記載のコンピュータで実施する方法。
  24. 前記第1のオブジェクトは1つまたは複数の関連付けられた子オブジェクトを有し、各子オブジェクトはそれによって前記第2のプロパティセットに関連付けられることを特徴とする請求項20記載のコンピュータで実施する方法。
  25. 少なくとも1つのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
    付加プロパティクラスの静的メソッドで別のクラスから派生したオブジェクトのインスタンスに付加プロパティを関連付ける命令手段
    を具えたことを特徴とするコンピュータ可読媒体。
  26. 前記命令手段は、プログラム言語の強く型付けされた構文をサポートすることを特徴とする請求項25記載のコンピュータ可読媒体。
  27. 前記命令手段は、プログラム言語の緩く型付けされた構文をサポートすることを特徴とする請求項25記載のコンピュータ可読媒体。
  28. 前記命令手段は、マークアップドキュメント中にステートメントを具えたことを特徴とする請求項25記載のコンピュータ可読媒体。
  29. 前記命令手段は、プロパティシート中にステートメントを具えたことを特徴とする請求項25記載のコンピュータ可読媒体。
  30. コンピュータでコード化された少なくとも1つの命令を有するコンピュータ可読媒体であって、
    付加プロパティクラスを識別するクラス識別子と、
    ターゲットオブジェクトに関連付けられた付加プロパティに影響を与える前記付加プロパティクラス内にあるメソッドを識別するメソッド識別子と、
    前記付加プロパティを識別するプロパティ識別子を備えるパラメータリストとを具えたことを特徴とするコンピュータ可読媒体。
  31. コンピュータでコード化された少なくとも1つの命令を有するコンピュータ可読媒体であって、
    ターゲットオブジェクトを識別するオブジェクト識別子と、
    前記ターゲットオブジェクトに関連付けられた付加プロパティに影響を与える前記付加プロパティクラス内にあるメソッドを識別するメソッド識別子と、
    パラメータリストと
    を具え、
    該パラメータリストは、前記付加プロパティクラスを識別するクラス識別子と、前記付加プロパティクラス内にある前記付加プロパティの名前を識別するプロパティ識別子とを含むことを特徴とするコンピュータ可読媒体。
  32. コンピュータでコード化された少なくとも1つの命令を有するコンピュータ可読媒体であって、
    ターゲットオブジェクトを表すタグと、
    付加プロパティ識別子と
    を具え、
    前記付加プロパティ識別子は、前記付加プロパティクラスを識別するプロバイダ指定子と、前記付加プロパティクラス内にある前記付加プロパティの名前を識別するプロパティ識別子とを有することを特徴とするコンピュータ可読媒体。
  33. コンピュータでコード化された少なくとも1つの命令を有するコンピュータ可読媒体であって、
    ターゲットオブジェクトの付加プロパティへの明示的参照なしに、前記付加プロパティが前記ターゲットオブジェクトに関連付けられるように、前記ターゲットオブジェクト、付加プロパティクラス、および前記付加プロパティクラス内にある前記付加プロパティを定義するXMLスキーマ
    を具えたことを特徴とするコンピュータ可読媒体。
JP2003169976A 2002-06-28 2003-06-13 プロパティをオブジェクトに関連付けするための、コンピュータ可読媒体、システム、および、方法 Expired - Fee Related JP4365142B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/187,012 US7055132B2 (en) 2002-06-28 2002-06-28 System and method for associating properties with objects

Publications (2)

Publication Number Publication Date
JP2004038958A true JP2004038958A (ja) 2004-02-05
JP4365142B2 JP4365142B2 (ja) 2009-11-18

Family

ID=27733967

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003169976A Expired - Fee Related JP4365142B2 (ja) 2002-06-28 2003-06-13 プロパティをオブジェクトに関連付けするための、コンピュータ可読媒体、システム、および、方法

Country Status (19)

Country Link
US (1) US7055132B2 (ja)
EP (1) EP1378828A3 (ja)
JP (1) JP4365142B2 (ja)
KR (1) KR100571466B1 (ja)
CN (1) CN1470984B (ja)
AU (1) AU2003204351B2 (ja)
BR (1) BR0302032A (ja)
CA (1) CA2427288C (ja)
CO (1) CO5470295A1 (ja)
IL (1) IL155571A (ja)
MX (1) MX342196B (ja)
MY (1) MY133528A (ja)
NO (1) NO331544B1 (ja)
NZ (1) NZ525483A (ja)
PL (1) PL360131A1 (ja)
RU (1) RU2321882C2 (ja)
SG (1) SG107142A1 (ja)
TW (1) TWI287203B (ja)
ZA (1) ZA200303345B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012014261A (ja) * 2010-06-29 2012-01-19 Yahoo Japan Corp 統括プログラム

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030236764A1 (en) * 2002-06-19 2003-12-25 Lev Shur Data architecture to support shared data resources among applications
US6986123B2 (en) * 2002-06-28 2006-01-10 Microsoft Corporation Extensible on-demand property system
JP2004234158A (ja) * 2003-01-29 2004-08-19 Sony Corp 情報処理装置、およびコンテンツ管理方法、コンテンツ情報管理方法、並びにコンピュータ・プログラム
US20040167894A1 (en) * 2003-02-21 2004-08-26 Sap Ag Method for using a business model data interface
US7505987B2 (en) * 2003-05-13 2009-03-17 Microsoft Corporation Method and system for providing interface defaults
US7305666B2 (en) * 2003-07-23 2007-12-04 Microsoft Corporation Description language for an extensible compiler and tools infrastructure
US7559050B2 (en) * 2003-06-30 2009-07-07 Microsoft Corporation Generating software development tools via target architecture specification
US7086041B2 (en) * 2003-06-27 2006-08-01 Microsoft Corporation Extensible type system for representing and checking consistency of program components during the process of compilation
US7120898B2 (en) * 2003-06-26 2006-10-10 Microsoft Corporation Intermediate representation for multiple exception handling models
US7685581B2 (en) * 2003-06-27 2010-03-23 Microsoft Corporation Type system for representing and checking consistency of heterogeneous program components during the process of compilation
US7707566B2 (en) * 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
US7788652B2 (en) * 2003-06-27 2010-08-31 Microsoft Corporation Representing type information in a compiler and programming tools framework
US7676798B2 (en) * 2003-10-24 2010-03-09 Microsoft Corporation Mechanism for obtaining and applying constraints to constructs within an interactive environment
US7543286B2 (en) * 2003-11-18 2009-06-02 Microsoft Corporation Method and system for mapping tags to classes using namespaces
US7574655B2 (en) * 2004-05-03 2009-08-11 Microsoft Corporation System and method for encapsulation of representative sample of media object
EP1915726A4 (en) 2004-06-18 2009-10-28 Sap Ag COHERENT SET OF INTERFACES DERIVED FROM A COMMERCIAL OBJECT MODEL
US7802228B2 (en) * 2004-08-19 2010-09-21 Microsoft Corporation Systems and methods for varying software build properties using primary and supplemental build files
US8631347B2 (en) * 2004-11-15 2014-01-14 Microsoft Corporation Electronic document style matrix
US7844956B2 (en) * 2004-11-24 2010-11-30 Rojer Alan S Object-oriented processing of markup
US20060130038A1 (en) * 2004-12-15 2006-06-15 Claussen Christopher S Apparatus, system, and method for facilitating dynamic modification of existing software objects defined in a strongly-typed programming language
CA2490645A1 (en) * 2004-12-16 2006-06-16 Ibm Canada Limited - Ibm Canada Limitee Data-centric distributed computing
JP4393404B2 (ja) * 2005-03-04 2010-01-06 株式会社東芝 データベース管理装置およびデータベース管理方法
US8332355B2 (en) * 2005-03-28 2012-12-11 Symantec Corporation Method and apparatus for generating readable, unique identifiers
US20070061351A1 (en) * 2005-09-13 2007-03-15 Microsoft Corporation Shape object text
US20070061349A1 (en) * 2005-09-15 2007-03-15 Microsoft Corporation Hierarchically describing shapes
US8001526B2 (en) * 2005-09-15 2011-08-16 Microsoft Corporation Hierarchical property storage
WO2008005102A2 (en) 2006-05-13 2008-01-10 Sap Ag Consistent set of interfaces derived from a business object model
US20080077849A1 (en) * 2006-09-27 2008-03-27 Adams Gregory D Mechanism for associating annotations with model items
US8321853B2 (en) * 2007-05-11 2012-11-27 Microsoft Corporation Type and property definition support for software
CA2607537A1 (en) 2007-10-22 2009-04-22 Ibm Canada Limited - Ibm Canada Limitee Software engineering system and method for self-adaptive dynamic software components
US8417593B2 (en) 2008-02-28 2013-04-09 Sap Ag System and computer-readable medium for managing consistent interfaces for business objects across heterogeneous systems
US20090326988A1 (en) 2008-06-26 2009-12-31 Robert Barth Managing consistent interfaces for business objects across heterogeneous systems
US8245144B2 (en) * 2008-06-27 2012-08-14 Microsoft Corporation Object model for a user interface
US8195692B2 (en) 2008-12-11 2012-06-05 International Business Machines Corporation System and method for managing semantic and syntactic metadata
US20100153297A1 (en) 2008-12-12 2010-06-17 Sap Ag Managing Consistent Interfaces for Credit Portfolio Business Objects Across Heterogeneous Systems
US8576218B2 (en) * 2008-12-18 2013-11-05 Microsoft Corporation Bi-directional update of a grid and associated visualizations
US8396751B2 (en) 2009-09-30 2013-03-12 Sap Ag Managing consistent interfaces for merchandising business objects across heterogeneous systems
US8473905B1 (en) * 2009-09-30 2013-06-25 Emc Corporation Managing user interface characteristics in displaying data storage systems information
US8732083B2 (en) 2010-06-15 2014-05-20 Sap Ag Managing consistent interfaces for number range, number range profile, payment card payment authorisation, and product template template business objects across heterogeneous systems
US9135585B2 (en) * 2010-06-15 2015-09-15 Sap Se Managing consistent interfaces for property library, property list template, quantity conversion virtual object, and supplier property specification business objects across heterogeneous systems
US9342274B2 (en) 2011-05-19 2016-05-17 Microsoft Technology Licensing, Llc Dynamic code generation and memory management for component object model data constructs
US8601490B2 (en) 2011-07-28 2013-12-03 Sap Ag Managing consistent interfaces for business rule business object across heterogeneous systems
US8775280B2 (en) 2011-07-28 2014-07-08 Sap Ag Managing consistent interfaces for financial business objects across heterogeneous systems
US8725654B2 (en) 2011-07-28 2014-05-13 Sap Ag Managing consistent interfaces for employee data replication business objects across heterogeneous systems
US9232368B2 (en) 2012-02-16 2016-01-05 Sap Se Consistent interface for user feed administrator, user feed event link and user feed settings
US9237425B2 (en) 2012-02-16 2016-01-12 Sap Se Consistent interface for feed event, feed event document and feed event type
US8762454B2 (en) 2012-02-16 2014-06-24 Sap Ag Consistent interface for flag and tag
US8762453B2 (en) 2012-02-16 2014-06-24 Sap Ag Consistent interface for feed collaboration group and feed event subscription
US8984050B2 (en) 2012-02-16 2015-03-17 Sap Se Consistent interface for sales territory message type set 2
US8756274B2 (en) 2012-02-16 2014-06-17 Sap Ag Consistent interface for sales territory message type set 1
WO2014000200A1 (en) 2012-06-28 2014-01-03 Sap Ag Consistent interface for document output request
US9246869B2 (en) 2012-06-28 2016-01-26 Sap Se Consistent interface for opportunity
US8756135B2 (en) 2012-06-28 2014-06-17 Sap Ag Consistent interface for product valuation data and product valuation level
US8615451B1 (en) 2012-06-28 2013-12-24 Sap Ag Consistent interface for goods and activity confirmation
US9400998B2 (en) 2012-06-28 2016-07-26 Sap Se Consistent interface for message-based communication arrangement, organisational centre replication request, and payment schedule
US8949855B2 (en) 2012-06-28 2015-02-03 Sap Se Consistent interface for address snapshot and approval process definition
US9367826B2 (en) 2012-06-28 2016-06-14 Sap Se Consistent interface for entitlement product
US9557974B2 (en) * 2012-07-10 2017-01-31 Oracle International Corporation System and method for supporting compatibility checking for lambda expression
US9043236B2 (en) 2012-08-22 2015-05-26 Sap Se Consistent interface for financial instrument impairment attribute values analytical result
US9547833B2 (en) 2012-08-22 2017-01-17 Sap Se Consistent interface for financial instrument impairment calculation
US9076112B2 (en) 2012-08-22 2015-07-07 Sap Se Consistent interface for financial instrument impairment expected cash flow analytical result
US9191357B2 (en) 2013-03-15 2015-11-17 Sap Se Consistent interface for email activity business object
US9191343B2 (en) 2013-03-15 2015-11-17 Sap Se Consistent interface for appointment activity business object
US9430452B2 (en) 2013-06-06 2016-08-30 Microsoft Technology Licensing, Llc Memory model for a layout engine and scripting engine

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5187786A (en) 1991-04-05 1993-02-16 Sun Microsystems, Inc. Method for apparatus for implementing a class hierarchy of objects in a hierarchical file system
US5287447A (en) * 1991-06-28 1994-02-15 International Business Machines Corporation Method and system for providing container object attributes to a non-container object
US6378003B1 (en) * 1993-04-05 2002-04-23 International Business Machines Corporation Method and system for deriving metaclasses in an object oriented system
US5432925A (en) * 1993-08-04 1995-07-11 International Business Machines Corporation System for providing a uniform external interface for an object oriented computing system
US6119151A (en) * 1994-03-07 2000-09-12 International Business Machines Corp. System and method for efficient cache management in a distributed file system
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
US5635693A (en) * 1995-02-02 1997-06-03 International Business Machines Corporation System and method for tracking vehicles in vehicle lots
US5778227A (en) * 1995-08-01 1998-07-07 Intergraph Corporation System for adding attributes to an object at run time in an object oriented computer environment
US6230159B1 (en) 1997-04-30 2001-05-08 Microsoft Corporation Method for creating object inheritance
US6191790B1 (en) * 1998-04-01 2001-02-20 Microsoft Corporation Inheritable property shading system for three-dimensional rendering of user interface controls
US6083276A (en) * 1998-06-11 2000-07-04 Corel, Inc. Creating and configuring component-based applications using a text-based descriptive attribute grammar
US6336211B1 (en) 1999-05-20 2002-01-01 Xilinx, Inc. Method and apparatus for implementing type-safe heterogeneous property lists
US20010029604A1 (en) 2001-04-27 2001-10-11 Jacob Dreyband Descriptive data construct mapping method and apparatus
US20040088448A1 (en) * 2001-10-16 2004-05-06 Userspace Corporation Embedded system and method for controlling, monitoring of instruments or devices and processing their data via control and data protocols that can be combined or interchanged

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012014261A (ja) * 2010-06-29 2012-01-19 Yahoo Japan Corp 統括プログラム

Also Published As

Publication number Publication date
CO5470295A1 (es) 2004-12-30
US20040002991A1 (en) 2004-01-01
NZ525483A (en) 2004-10-29
CA2427288C (en) 2011-08-16
PL360131A1 (en) 2003-12-29
ZA200303345B (en) 2004-04-22
CN1470984A (zh) 2004-01-28
AU2003204351A1 (en) 2004-01-22
CN1470984B (zh) 2012-12-12
MY133528A (en) 2007-11-30
KR20040002784A (ko) 2004-01-07
NO20032993L (no) 2003-12-29
TW200408979A (en) 2004-06-01
NO331544B1 (no) 2012-01-23
US7055132B2 (en) 2006-05-30
AU2003204351B2 (en) 2009-11-12
HK1060925A1 (en) 2004-08-27
CA2427288A1 (en) 2003-12-28
RU2321882C2 (ru) 2008-04-10
RU2003119525A (ru) 2005-01-10
NO20032993D0 (no) 2003-06-27
TWI287203B (en) 2007-09-21
MXPA03005356A (es) 2004-10-29
EP1378828A2 (en) 2004-01-07
IL155571A0 (en) 2003-11-23
KR100571466B1 (ko) 2006-04-17
EP1378828A3 (en) 2006-12-13
IL155571A (en) 2008-11-03
BR0302032A (pt) 2004-08-24
JP4365142B2 (ja) 2009-11-18
SG107142A1 (en) 2004-11-29
MX342196B (es) 2016-09-20

Similar Documents

Publication Publication Date Title
JP4365142B2 (ja) プロパティをオブジェクトに関連付けするための、コンピュータ可読媒体、システム、および、方法
JP5354602B2 (ja) プロデューサグラフ指向のプログラミング及び実行
JP5354603B2 (ja) シナリオサポートを伴うプロデューサグラフ指向のプログラミングフレームワーク
US7577938B2 (en) Data association
US7543268B2 (en) Development environment for developing applications using a metamodel and a metadata API
US8255888B2 (en) API derivation and XML schema derivation for developing applications
US20050071805A1 (en) Developing applications using a metamodel
US6986123B2 (en) Extensible on-demand property system
US20050066338A1 (en) Exstensibility application programming interface and framework for meta-model objects
US20060242183A1 (en) Declaratively extended hierarchical configuration system and method
US7426521B2 (en) Property and object validation in a database system
US7120618B2 (en) System and method for defining and using subclasses declaratively within markup
US8001526B2 (en) Hierarchical property storage
US7562095B2 (en) Application programming interfaces for an on-demand property system
HK1060925B (en) System and method for associating properties with objects
Fisher et al. GORM and Grails

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051014

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060116

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060515

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20060516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060516

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060721

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20060915

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081212

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090618

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: 20090820

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120828

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: 20130828

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

LAPS Cancellation because of no payment of annual fees