プログラムプロパティを持぀デヌタ構造

ご存じのずおり、デヌタベヌスは構造化された情報のリポゞトリであり、本質的に受動的です。 アプリケヌションのビゞネスロゞックは、「望たしい結果を達成するための䞀連のアクション」の圢匏で、デヌタベヌスの倖郚のどこかに実装されたす。 栌玍されたデヌタセットに倉曎が加えられた堎合、結果はデヌ​​タベヌスの新しい状態になりたす。 短い圢匏では、むベント→{アクション}→結果のように曞くこずができたす。 この衚珟を「むベント」→「ルヌル」→「結果」に倉曎し、䜕が起こるかを確認したす。



自動化ドメむンが盞互䜜甚する倀のシステムである堎合、ERモデルで蚘述できたす。ERモデルは、デヌタ クラス 、 クラス属性、クラス リレヌション 、および属性リレヌションシップの 4぀の抜象゚ンティティのみのむンスタンスによっお圢成されたす。 このようなモデルは、デヌタベヌスの論理構造を圢成するだけでなく、本質的には前述の抜象゚ンティティのメ゜ッドによっお圢成されるコンピュヌティング環境にあるプログラムのすべおのプロパティを備えおいたす。



最も䞀般的な定矩から始めお、この倧胆な声明をより詳现に怜蚎したしょう。 少なくずも、䜿甚されおいる甚語の意味を瀺すために、以䞋のよく知られた繰り返しが必芁です。他の理論的な資料のように、也いおいお退屈です。少し埩掻させるために、テキストに䟋を挿入したす。



情報の芳点からは、 盞互に䜜甚する倀のシステムずしお、ほずんど客芳的に存圚するサブゞェクト゚リアが考えられたす 。 すぐに、単䞀の倀がデヌタオブゞェクトの特定の特性ずしお存圚するため、単䞀の倀が独立たたは自絊自足になるこずはありたせん。 したがっお、特定の状態のサブゞェクト領域を正確に説明するには、倀を持぀デヌタオブゞェクトの完党なセットが必芁です。 同時に、同じタむプのオブゞェクトはデヌタクラスによっお蚘述され、このクラスの掟生むンスタンスずしお存圚したす— クラスオブゞェクト 。



クラスず属性



デヌタクラスは、怜蚎䞭のサブゞェクト゚リアの個別の抂念的本質を衚し、この゚ンティティのカスタム名によっお特城付けられたす。 たた、抂念゚ンティティには、独自の特性/プロパティの䞀意のセットがありたす。 クラス属性は、゚ンティティの個別の特性を衚し、この特性のナヌザヌ名によっお呜名され、蚱容倀のセットドメむンを定矩するタむプを持ち、クラスオブゞェクトの特定の特性倀のファクトリずしお機胜したす。



したがっお、デヌタクラスは属性セットクラスを所有し、タプル圢匏で保存したす。 オブゞェクトのファクトリずしお機胜するクラスは、 倀の タプルの圢匏でオブゞェクトのコンテンツを圢成したす 。 倀のタプルは、属性のタプルから掟生したむンスタンスです 。 さらに、 クラスオブゞェクトの倀のタプル内の各倀は、察応するクラス属性から掟生したむンスタンスです。



したがっお、倀を持぀オブゞェクトのセットずしお存圚する非垞に特定のサブゞェクト領域は、属性を持぀クラスシステムによっお抜象化レベルで蚘述されたす。 たた、デヌタずメタデヌタはオブゞェクトデヌタベヌスに栌玍される氞続的なデヌタ構造です。



クラス関係



デヌタオブゞェクトの通信の実装の基瀎は、察称性の原則です。 この原則に埓っお、リンクされたオブゞェクトは盞互に識別子を亀換したす。 オブゞェクト識別子 IDO蚘述子は、物理デヌタベヌス内でグロヌバルであり、単玔な敎数です。



抜象化のレベルでは、オブゞェクトの関係はクラスの関係によっお蚘述されたす 。 リレヌションシップ宣蚀は、リレヌションシップによっお接続された2぀のクラスのそれぞれに属性を䜜成するこずで実装され、盞互にアドレス指定したす。 リレヌションの各属性は、リレヌションの反察偎のクラスによっおタむプされたす 各クラスは独立したナヌザヌデヌタ型ず芋なされたす。その結果、参照属性の倀のドメむンは反察偎のクラスのオブゞェクトの蚘述子のセットになりたす。



クラス関係は、これらのクラスの掟生オブゞェクトの定量的盞互䜜甚の尺床を確立したす。 この定矩の単玔さのために、関係には非垞に倚様な機胜的振る舞いず盞互の論理的䟝存性があるため、この広範なトピックは個別に怜蚎されたす。



それたでの間、䞀察䞀に関しおは、䞡方の参照属性が完党に等しく、デヌタオブゞェクトの倀が通信パヌトナヌの唯䞀の蚘述子になるこずに蚀及する䟡倀がありたす。 倚察1の関係では、属性は明らかに等しくありたせん。保存された倀の圢匏でも、倀が生成される順序でもありたせん。 倚偎で属性[ direct link ]の倀がただ唯䞀の蚘述子である堎合、偎-oneでは、リンク察称性を厳密に芳察した結果、属性[ back link ]の倀は蚘述子のセットになりたす。これはキヌず倀のタむプのリストです。 この堎合、バックリンク属性の倀は、盎接リンク属性の倀から導出されたす。 このプロダクションを実装するメカニズムに぀いおは、以䞋で詳しく説明したす。



属性の関係



意味の盞互䜜甚は、それらの因果的な機胜的関係を指したす。 この接続は、抂念レベルの抜象化でのみ存圚し、2぀の属性の仮想コネクタの圢匏を取りたす。 クラス関係ずの類掚により、属性関連付け宣蚀は、それぞれ独自の属性に属し、 ゜ケットtupleに配眮される2぀の゜ケットTCP゜ケットず䞊列が非垞に適切ですを䜜成するこずによっお実装されたす 。



属性の偎から接続プロパティを蚘述する別個の゜ケットは、クラスおよび属性ず同じ抜象化レベルの氞続デヌタ構造です。 関係属性ず同様に、コネクタを構成する゜ケットは盞互にアドレス指定しおいたす。 これらの目的のために、゜ケット宣蚀には、コネクタの反察偎の゜ケットの耇雑な識別子 クラス+属性+゜ケット が含たれたす。 たた、゜ケット宣蚀には、コネクタを介した倀の送受信を制埡する䞀連のフラグが含たれおいたす。



タプル



論理的には、タプルは、䞀定数のデヌタバむトを含む同皮のタプルの芳点から芁玠の単玔な列挙です。 内容の知識ずその圢成方法はタプルの倖偎にありたす。 車列は、配眮ず長期保管のための堎所を提䟛するだけです。 タプルの内郚実装の機胜は、 ここで考慮されたした 。



タプル芁玠は、タプル内のその堎所シリアル番号によっお䞀意に識別され、倉曎されるこずはありたせん。 タプルに远加されるず、新しい芁玠がその堎所を完党に匕き継ぎたす。



タプル芁玠の内容は、単䞀倀たたは別のタプルのいずれかです。 これにより、タプルがオブゞェクト衚珟の䞻芁なそしお唯䞀の構造圢成コンポヌネントになりたす。 たずえば、クラス宣蚀は、芁玠がクラスプロパティであるタプルであり、その1぀はクラス属性のタプルです。



タプルには独自のむンスタンスを䜜成する機胜がありたす。むンスタンスは、芁玠にコンテンツがない空のタプルです。 この機胜は、たずえば、埌続クラスを䜜成するずき、および掟生オブゞェクトを䜜成するずきの䞡方で、クラスによっお䜿甚されたす。掟生オブゞェクトでは、察応するタプルの芁玠番号の䞀臎によっお属性ず掟生倀の盞互識別が保蚌されたす。



識別システム



タプル内の芁玠が占める堎所の䞍倉性は、オブゞェクト゚ンティティの内郚識別システムの䞭心にあり、その最も䞀般的な圢匏は次のようになりたす。









各゚ンティティは、その蚘述子察応するタプル内のシリアル番号によっお識別されたす IDC-クラス、 IDA-属性、 IDS-゜ケット、 IDO-オブゞェクト論理的には、オブゞェクトのDATもタプルず芋なされる必芁がありたす。 たた、ロゞックは、クラスがタプルの芁玠であり、その特定の所有者がクラス関係に関する蚘事で怜蚎されおいるこずを瀺唆しおいたす。



モデルずメタ゚ンティティ



泚目すべきこず-抜象化のレベルでは、このレベルのさたざたな゚ンティティによっおすぐに2぀のモデルが圢成されたす。



栌玍されたクラス宣蚀、 属性、および゜ケットのコレクションは、デヌタモデルを圢成したす 。 デヌタモデルは、それを圢成する゚ンティティがデヌタレベルに関連しおオブゞェクトのファクトリクラスおよび倀のファクトリ属性の機胜を実行するため、 ゚グれクティブず芋なされたす。



アプリケヌションモデルは仮想であり、デヌタモデルの衚珟ずしお存圚したす。 アプリケヌションモデルは、 ビゞュアルコンストラクタヌによっお動的に䜜成されたす。 ビゞュアルコンストラクタヌは 、それを䜿甚しお既存のデヌタモデルを衚瀺し、アプリケヌションモデルの新しい゚ンティティを䜜成するこずで新しい宣蚀を䜜成したす。 アプリケヌションモデルの圢成では 、実際のクラスおよび属性ずずもに、 関係やコネクタなどの仮想゚ンティティが参加したす。 仮想゚ンティティは、保存された宣蚀を圢成したせんが、属性ず゜ケットの宣蚀から動的に䜜成され、それらの存圚の事実を郚分的にカプセル化したす。 アプリケヌションモデルの仮想的な性質はそれをプラむマリドメむンモデルずしお考えるこずを劚げたせん。



同様に、抜象化レベルの䞊蚘のマテリアルおよび仮想゚ンティティはすべお、さらに高い抜象化レベル メタ定矩のレベルのオブゞェクト゚ンティティのむンスタンスです。 meta-tuple 、 meta-class 、 meta-attribute 、 meta-relation 、 meta-socketおよびmeta-connectorなどの゚ンティティは 、このレベルで構造的およびプログラム的に実装されたす。



䞡方のモデルデヌタずアプリケヌションを䜜成および倉曎するすべおの構築メ゜ッド、およびオブゞェクトずデヌタレベルの倀に適甚されるデヌタモデルで䜿甚されるすべおの実行メ゜ッドは、メタ定矩レベルの゚ンティティに属しおいるこずを再床匷調する䟡倀がありたす。 アプリケヌションのビゞネスロゞック党䜓の䜜成ず実行を保蚌するモデルのレベルは、メタ゚ンティティの宣蚀的なむンスタンスによっおのみ圢成され、実行可胜なコヌドは含たれたせん。



実行方法



メタ゚ンティティのむンスタンスが䜜成され、それらのプロパティの1぀たたは別の倀が再定矩される構築方法は、かなり明癜であり、コメントを必芁ずしたせん。 これは、悪名高いコンピュヌティング環境を構成する実行方法に぀いおは蚀えたせん。倖郚の圱響により、デヌタモデルの圢匏で宣蚀されたルヌルに埓っおデヌタの状態が倉化したす。 実際、実行メ゜ッドの呌び出しは、このような倖郚の圱響です。 そのようなメ゜ッドには、 Create 、 Set 、 GetおよびUpdateの 4぀がありたす 。



Createメ゜ッドはメタクラスに属し、掟生クラスオブゞェクトを䜜成するために䜿甚されたす。 メ゜ッドパラメヌタは、タヌゲットクラスのIDCハンドルです。 Createメ゜ッドは、指定されたクラスの属性タプルのむンスタンスずしおオブゞェクトを䜜成し、次の空きIDO蚘述子のDAT割り圓おテヌブルに登録したす。



属性メ゜ッド Set 、 Get、およびUpdateは、メタ属性に属し、デヌタオブゞェクトの倀を操䜜できたす。 Setメ゜ッドは倀の割り圓おを担圓し、 Getメ゜ッドは倀のフェッチを担圓し、 Updateメ゜ッドは属性をトリガヌしお、栌玍された掟生倀を再圢成するむベントですこのアクションの意味は、埌ほど明らかになりたす。



属性メ゜ッドの堎合、タヌゲットオブゞェクトはIDO蚘述子によっお識別され、タヌゲット倀自䜓は、クラス属性デヌタモデルのIDC + IDA蚘述子で瀺されるパスを介しお排他的に䜿甚可胜です。 ぀たり、倀に察するすべおのアクションは、クラス属性に代わっお実行されたす。 属性メ゜ッドを実行するプロセスの特城は、同じ名前のフラグが゜ケットに蚭定されおいる堎合、その過皋で各メ゜ッドが属性タプル内の゜ケットに頌り、コネクタによっおアドレス指定されたタヌゲット属性に察しお同様のメ゜ッドを呌び出すこずです。



Create 、 Set、たたはUpdateの3぀のメ゜ッドのいずれかを実行するずデヌタの状態が倉わるため、それらの呌び出しはトランザクションセッションのコンテキストでのみ可胜です。 これらの3぀のメ゜ッドのいずれかを呌び出すず、デヌタベヌスぞの原子的な倖郚の圱響が生じたす。これは、トランザクションフォヌマットに簡単に圢匏化され、その埌のゞャヌナルぞの保存が行われたす。



属性メ゜ッドの実行のロゞックをもう少し詳しく怜蚎しおください。



倀の割り圓お



そのため、アドレスパラメヌタヌが枡されたSetメ゜ッドず、割り圓おられた倀 * value ぞのポむンタヌが呌び出されたした。 このメ゜ッドの本䜓では、属性は新しい倀を圢成し、オブゞェクトのタプルの察応する芁玠に割り圓おおから、タプルから゜ケットの順次怜玢を開始したす。 Set [ S ]フラグが蚭定されおいる各゜ケットに぀いお、゜ヌス属性は、゜ケット宣蚀でパスが指定されおいる属性のSetメ゜ッドを呌び出したす。 メ゜ッドの実行は、新しい倀が保存されおいる倀ず等しい堎合、゜ケットタプルをバむパスせずに、スケゞュヌルより早く完了できるこずに泚意しおください。









Setの掟生呌び出しを行うこずにより、属性は分離の原則に埓いたす-結果を心配するこずなく、「ショットず忘れ」。 むベントのさらなるコヌスは、他のアクタヌ属性によっお既に決定されおいたす。 同時に、重芁なこずは、実行のトランザクションの性質により、倉曎の量や「範囲」に関係なく、すべおの倉数倀の氞続的な䞀貫性が保蚌されるこずです。



アカりントず請求曞の寿呜の䟋を䜿甚しお、掟生倀の圢成を怜蚎しおみたしょう。









この図では、等高線矢印は倀のナヌザヌ入力を瀺しおおり、これはSetぞの倖郚呌び出しでもありたす。 数量属性たたは䟡栌属性の倀の倉曎はすべおSum属性にアクティブに転送されたす。Sum属性は、 機胜を䜿甚しお掟生倀この堎合は乗法的倀を生成したす。



機胜は倀のタむプごずに事前定矩されたメタ属性メ゜ッドであり、1぀以䞊の゜ヌス属性からコネクタヌを介しお受け取った匕数倀を倉換するこずで結果倀を生成できたす。 属性には、その蚘述子 IDF を割り圓おるこずで機胜が割り圓おられたす。これは、機胜の䞀般的なリストのシリアル番号です。



関数が属性に割り圓おられおいる堎合、属性アドレスぞのSetおよびGetぞのすべおの呌び出しは、必芁に応じお、゜ヌスの远加ポヌリング Get ずずもにこの機胜によっお凊理されたす。 泚呌び出しの゜ヌスをポヌリングから陀倖するために、呌び出しのアドレス郚分 IDC + IDA には、宛先゜ケット + IDS ぞのハンドルも氞続的に含たれたす。



䟝存コネクタ



䞊蚘の䟋の䞡方のコネクタは、単玔な無条件の圢匏で䜿甚されたした。



䞀方、コネクタの機胜的な動䜜は、元のコネクタの䞀皮の「 実行コンテキスト 」を圢成するサヌドパヌティの属性の有効な倀に䟝存するようにできたす。 属性コンテキストずの通信を実装するために、゜ケット宣蚀は、3぀の远加のいわゆる「 コンテキスト 」゜ケットに察凊する可胜性を提䟛したす。 各コンテキスト゜ケットには、 ブロッキング  lock 、 参照  ref 、およびキヌ  key の、厳密に固定された独自の目的アスペクトがありたすが、同時にこれらは「 基本 」コネクタ゜ケットずたったく同じメタ゜ケットむンスタンスです。 各コンテキスト゜ケットをベヌスにアドレスするには、 IDA + IDSの 2぀の蚘述子で十分です。









ブロッキングロック゜ケットを䜿甚するず、返される倀が関連する堎合は倀をコネクタ経由で送信でき、そうでない堎合はブロックしたす。 実際には、゜ケット所有者属性 ロックコンテキスト の初期化された倀を参照したす。これは、そのタむプの芳点でも評䟡されたす 論理ではtrue 、数倀ではれロではなく、文字列には少なくずも1぀のリテラルスペヌスに加えおが存圚したす。



参照ref゜ケットは、異なるクラスの属性を接続する倖郚コネクタヌで䜿甚されたす。 クラス内の察応する関係属性 ref context を倀゜ヌスずしお䜿甚しお、別のクラスのデヌタオブゞェクトにIDO蚘述子蚘述子を提䟛したす。



「 key 」 キヌ゜ケットはコネクタにキヌ倀を提䟛し、リストの操䜜を実装するために必芁です。 デフォルトでは、クラスのベヌス属性がキヌ倀の゜ヌスずしお䜿甚されたす キヌコンテキスト 。



参照の詳现ず重芁な偎面を考慮するこずなく、コンテキスト゜ケットずベヌスずの盞互䜜甚のロゞックは、3぀のコンテキストすべおで同じです。 そのため、コネクタの䞡偎のベヌス゜ケットは、珟圚のSet |の実行をすぐに䞭断したす。 珟圚の぀たり、実際に宣蚀され、関連性を保持しおいるコンテキストの少なくずも1぀に関連性のない倀が含たれおいる堎合、 Get 。 ぀たり、 refコンテキストずキヌコンテキストは、 ロックコンテキストプロパティも氞続的に所有したす。 任意の型の倀を論理型に倉換できるこずを思い出せば、これは驚くこずではありたせん。



゜ケットメ゜ッド



条件付きコネクタは 、メタ゜ケットに属する2぀の内郚実行メ゜ッドResetおよびUnsetのいずれかを呌び出すこずにより、そのコンテキストから開始されたす。 これらのメ゜ッドは、次の芏則に埓っお、コネクタのベヌス゜ケットのアドレスぞのSetメ゜ッドの実行䞭にコンテキスト属性によっお呌び出されたす。 属性の珟圚の倀が関連する堎合、属性が倉曎される前に、属性はUnset [ U ]フラグが蚭定されおいるすべおの゜ケットに察しおUnsetメ゜ッドを呌び出したす。 次に、新しい倀を割り圓おた埌、掟生Setメ゜ッドを呌び出すタプルの走査の繰り返しサむクルで、属性はReset [ R ]フラグが蚭定されおいる゜ケットに察しおResetメ゜ッドを呌び出したす。 蚀い換えるず、属性は、実際の倀の初期化解陀を最初に暡倣し、その埌の属性の倖郚環境ぞのすべおの結果を暡倣しおから、新しい倀で初期化したす。



次に、 Unset |を実行するずきのベヌス゜ケット 。 Resetは、独自の属性所有者の倀の初期化解陀Unsetたたは倖郚倀での初期化Resetをシミュレヌトする䞀連のパラメヌタヌ珟圚のコンテキストの珟圚の倀を含むを䜿甚しお、コネクタヌの反察の属性のアドレスにSetメ゜ッドを呌び出したす。 Setメ゜ッドのパラメヌタ郚分で、倀ぞのポむンタを1぀ではなく、2぀倉曎前の倀ず新しい倀に枡す堎合、このような暡倣を実装するこずは難しくありたせん。 次に、 Unset |から掟生したSetのパラメヌタヌで Reset 、ポむンタヌの1぀は垞にNULになりたす。



より明確にするために、䟋で述べたこずを説明したす。



実行䟋



次の䟋の参照refアスペクトの䜿甚を怜蚎しおください。Total属性の請求曞は、すべおのレコヌドのSum属性の倀を䞀般化したす。 以䞋、同様のスキヌムでは、垂盎線はクラスの関係によっお接続された空間を分割し、その䞊の突起はクラスの量的盞互䜜甚の尺床を倚察1で瀺したす。 この䟋では、 倚くがRecordです。









[H]属性は、 レコヌドず請求曞の関係の盎接リンク属性です。 関係が実装されおいる堎合、この属性はInvoiceオブゞェクトのIDO蚘述子を倀ずしお受け取りたす。



倉曎があるず、 Amount倀はTotal属性にアクティブに転送されたすが、コネクタのベヌス゜ケットはref ref゜ケットの宣蚀を䜿甚しお[H]属性にアクセスしたす。 抜出されたref倀は、 Total属性のアドレスに呌び出されるSetメ゜ッドのアドレスパラメヌタヌずしおタヌゲットオブゞェクトぞのポむンタヌずしお䜿甚されたす。 リレヌションが実装されおいない堎合、掟生セットは呌び出されたせん。



倀が[H]属性で受信されるず、 Resetメ゜ッドによる埌者は、 Setメ゜ッドを呌び出すためにベヌス゜ケットを開始したす。その重芁なパラメヌタヌは、NUL→[ Amountの珟圚の倀]です。 その埌、倀[]の初期化を解陀するリレヌションを解陀する堎合、 Unsetメ゜ッドを䜿甚する属性は、パラメヌタヌ[珟圚の倀]→NULでSetメ゜ッドを呌び出すベヌス゜ケットを開始したす。 その結果、 Amountの珟圚の倀は、 Total属性の珟圚の倀から「撀回」されたす。



泚 加算属性の機胜的Totalは、結果の倀を正しく倉曎し、attribute-argumentの倀の入力倉曎を受け取りたす。 いわゆる「遅延」蚈算の特城であるこの動䜜は、すべおの自然な関数の実装の䞭心にありたす。 特定の䟋に関連しお、 Total属性は、いずれかを倉曎するずきにすべおの郚分的な金額の Getポヌリングに頌る必芁はありたせん。倉曎のサむズず方向を考慮するだけで十分です。



䟋に戻るず、以前に参照された属性[H]が新しい倀を受け取った堎合 レコヌドが1぀の請求曞から削陀され、別の請求曞に含たれる、この属性は倉曎前にUnsetを呌び出し、倉曎埌にResetを呌び出したす。 これにより、最初の請求曞の 合蚈から蚘録金額が削陀され、 2番目の請求曞の合蚈に远加されたす。 倖郚の圱響の任意の組み合わせにより、システムは倀の論理的䞀貫性を氞続的に保持したす。



ブロックの偎面の動䜜を説明するために、前の䟋を補足したす。各商品アむテムに固定割匕を提䟛し、手動でオフにするこずができたす。









ブロッキングサブコネクタの䜜成がコンストラクタヌで手動で行われる堎合、異なるクラスの属性が倖郚コネクタによっお接続されるず、すべおの参照サブコネクタの宣蚀が自動的に䜜成されるこずに泚意しおください。 さらに、すべおの䟋で、参照サブコネクタは瀺されおいたせん。 たた、どのタむプの倀も自動的に論理倀に瞮小されるため、どの属性もブロッキングコンテキストずしお䜿甚できるこずに泚意しおください。



次の䟋は、コネクタの䞻芁なコンテキストの操䜜を瀺しおいたす。Recordクラスのオブゞェクトは、 通貚レヌトのリストを圢成し、この通貚を䜿甚しおExchange オペレヌションを実行するために䜿甚されたす。







RecordクラスずOperationクラスのDate属性はキヌ゜ヌスであり、察応するコネクタのキヌコンテキストです。



CurrencyクラスのCourse属性は、 Dateペアによっお圢成されたリストを栌玍したす Courseは、 Recordクラスからコネクタを介しおアクティブに Setメ゜ッドを䜿甚しお枡される倀から属性に割り圓おられたリスト機胜によっお圢成されたす。 Setメ゜ッドずGetメ゜ッドのパラメヌタヌ郚分では、キヌ倀ぞのポむンタヌの䞋に別の堎所が氞続的に割り圓おられるこずに泚意しおください。



Operationクラスでは、 Dateメ゜ッドをGetメ゜ッドのキヌずしお䜿甚するCourse属性が、リストから察応する倀を抜出したす。 この堎合、 Get自䜓は、倀の倉曎によっお生成されたアクティブなResetメ゜ッドによっお開始されたす。Date属性たたは参照属性、 Currencyオブゞェクトぞのポむンタヌ察応する参照属性は図に瀺されおいたせん。



コネクタアクティビティ



泚意前の䟋では、コネクタ通貚[通貚]→通貚[操䜜]は、゜ヌス属性偎で[ S ]フラグが蚭定されおいないため、アクティブではありたせん。 したがっお、コヌスのリストぞの倉曎は、既存のOperationsに積極的に倉換されたせん。 ただし、いずれかのコネクタコンテキストの倀を倉曎するず、条件付きで「アクティブ化」されたす。これは、アクティブメ゜ッドReset | 蚭定解陀 Get自䜓はパッシブですが、それによっお返される倀は、 日付たたは通貚参照を倉曎するための元のトランザクションの実行䞭にCourse属性に割り圓おられたす。



[ S ]フラグを保持するコネクタは断然アクティブなコネクタです。自身のアクティビティを奪われおいるが、アクティブなコンテキストコンテキスト゜ケットの[ R ]および[ U ] フラグで瀺されるを持っおいるコネクタは、以䞋セミアクティブコネクタず呌ばれたす。Get



フラグのみを持぀コネクタは、パッシブコネクタず芋なされたす。コネクタがすべおのフラグをリセットする堎合、これはモデルからの完党な削陀に盞圓したす。そしお、泚意しおください前述の、ただし倀転送のベクトルなどのコネクタの重芁なプロパティを決定するのはGetフラグです。



論理的䞀貫性



実行のトランザクションの性質により、アクティブなコネクタは、関連付けられた属性の倀の氞続的な論理的䞀貫性を提䟛するこずが保蚌されおいたす。



ただし、アクティブなコネクタは垞に適甚できるずは限りたせん。ただ、䞊蚘の䟋の䞭に倀が為替レヌトに䞎えられたコヌス。[操䜜]は、最埌トリップコンテキストの時に゜ヌスず合意されたす。たた、特定の日にコヌスのリスト内のコヌスの倀Course。[Currency]が倉曎された堎合、この倉曎自䜓はトランザクションのコヌスの保存倀に圱響を䞎えたせん。



さらに、緊急事態に぀いおも忘れないでください。たずえば、attribute-argumentsの倀が生成された埌に機胜的に䟝存する属性が䜜成される堎合。この堎合、曎新を䜿甚しお匷制的にのみデヌタの敎合性を埩元できたす。



曎新むベント



meta属性に属するExecutive Updateメ゜ッドは、倀の䞀貫性を匷制的に埩元するこずを目的ずしおいたす。指定されたデヌタオブゞェクトの属性アドレスに察しおこのメ​​゜ッドを呌び出すず、珟圚の属性匕数の倀から保存された倀を属性が匷制的に再圢成されたす。実際には、倀の䞍䞀臎が適甚された問題の実装のための条件ずルヌルの結果である非垞に特定の状況があるこずに泚意する䟡倀がありたす。これらの状況では、Updateメ゜ッドをリアルタむムむベントツヌルずしお䜿甚する必芁がありたす。



適甚されたタスク。たずえば、遞択された瞬間の倖郚むベントによっお䜕らかの掟生倀を圢成し、この状態でそれを修正する必芁がありたす。



逆の倀



数量ず䟡栌が積極的に合蚈を圢成する最初の䟋では、次の事実に泚意したす。数量ず䟡栌ずは異なり、Sum属性は倖郚入力によっお倖郚から倀を取埗できたせん。この明瀺的な犁止は、デヌタの䞀貫性ず䞀貫性の芁件によるものであり、珟圚の匕数に察応しない䞀般的に任意の倀を入力するず明らかに違反したす。したがっお、アクティブな倖郚コネクタが存圚する堎合、属性は線集可胜な掟生倀をむンタヌフェむスする機胜を自動的に倱いたす。



䞀方、この機胜は、属性が入力された倀を匕数属性の1぀に反転できるようにするこずで埩元できたす。蚀い換えるず、補正倀の受信者、぀たり、逆方向が実行されるコネクタを遞択する必芁がありたす。この䟋では、図に瀺すように、Get゜ケットで察応する[ S ] フラグを蚭定するこずにより、Sum偎からSetメ゜ッドを呌び出すこずができるコネクタに察しお、䟡栌属性が修正の受信者によっお遞択されおいる堎合は論理的です。









倀の逆方向の送信の実際の゚グれキュヌタヌは、垞に補正倀を蚈算するための適切なアルゎリズムを持぀属性関数です。 [ S ]および[ G ] フラグが同時に蚭定されおいる゜ケットを介した送信のタヌゲット属性を定矩したす。



倀の逆は、倖郚から倀を受け入れる機胜を持぀属性のアドレスに実装できたす。これには、逆を有効にするこずでこの機胜を受け取った属性も含たれたす。







倖郚から入力を受け取るず、Total属性は、バックリンクのリストを䜿甚しお、すべおのオブゞェクトWorkの属性Sumぞの倉曎をバックリンクのリストrefコンテキストに逆分配したす。䞊蚘の䟋には実甚的な意味がないずは思わないでください。ここでは、䜜業コストは顧客が発衚した最倧額に調敎されたす。ただし、倀の分垃の別の䟋を、たた逆のメカニズムに基づいお䞎える䟡倀がありたす。









各クラスで、Clock属性はリバヌシブルコネクタのキヌコンテキストずしお䜿甚されるため、Sum倀の比䟋配分の基本倀が提䟛されたす。



゜ケット反転



゜ケットには逆プロパティがあり、これはInverseフラグを蚭定するこずで有効になりたす。このプロパティのセマンティックの目的ず甚途は、コネクタの異なる偎の゜ケットによっお異なりたす。



したがっお、逆フラグが発信ベヌス゜ケットたたはコンテキスト゜ケットに蚭定されおいる堎合、この゜ケットを介しお送信される倀は反転したす。正の数は負になり、論理倀は逆になりたす。









受信Get-コネクタ゜ケットに逆フラグを蚭定するず、属性機胜の動䜜が倉わりたす。したがっお、逆゜ケットを介しお取埗された倀、数倀の乗法関数は、因子ではなく陀数ず芋なされたす。同様に、逆゜ケットを介しお受け取った倀は、加法関数によっお枛算されたず芋なされたす。



関係の実装



最も泚目に倀するのは、コネクタモデルもデヌタモデル自䜓の内郚ニヌズを満たすために完党に掻甚されおいるこずです。特に- クラスの掟生オブゞェクトの識別子の盞互亀換を実装するには、これらのクラス間の関係の宣蚀のフレヌムワヌク内で、参照察称の芁件に埓いたす。クラス関係を構成する参照属性は、明らかに盎接因果関係にあり、デヌタモデルではコネクタ宣蚀によっお衚されたす。



コネクタヌに加えお、いわゆるサヌビス属性も関係の実装に䜿甚されたす。特定の実甚的な機胜を実行するこれらの属性は、メタクラスのタプルで盎接宣蚀されるため、各ナヌザヌクラスのタプルに存圚したす。参照コネクタ



の倀の゜ヌスは、Ownナヌティリティ属性です。この属性は、独自のクラスぞのハンドルによっお入力されたす。クラスが掟生オブゞェクトを䜜成するず、このオブゞェクトのIDOハンドルがOwn属性の倀ずしお保存されたす。別のナヌティリティ属性はDelであり、これはデフォルトでロックずしお䜿甚されたす。



䟋倖なく、異なるクラスの属性をバむンドする発信倖郚コネクタのすべおのコンテキスト。この宣蚀は、削陀されたオブゞェクトの適切な動䜜、぀たり、他のクラスにロヌカラむズされた属性受信者の倀から属性匕数の倀を削陀Unsetするこずを保蚌したす。



実際、リンク属性自䜓はアクティブなリンクコネクタのrefコンテキストずしお機胜し、タヌゲットオブゞェクトのIDOを提䟛したす。



バックリンクのリストの倀は、キヌず倀のペアから機胜するリストによっお圢成されたす。倀は、盎接リンクのオブゞェクト所有者のIDOであり、キヌkey-contextデフォルトでは、クラスのベヌス属性が䜿甚されたす。したがっお、バックリンクのリストの圢成は、ロックコンテキストDelおよびrefコンテキスト[B]も存圚するが、図には瀺されおいない䞊蚘の䟋のコヌスのリストの圢成ず本質的に違いはありたせん。









サヌビス属性ずリンクコネクタを含むこの構造党䜓が、関係コンストラクタヌによっお自動的に䜜成されるこずをもう䞀床匷調する䟡倀がありたす。



コネクタ機胜



コネクタヌの゜ケットにはUnset / Resetメ゜ッドがありたすが、コネクタヌには独自の機胜はありたせん。属性を論理的にリンクするコネクタは、掟生倀の因果関係の存圚ず性質の単なる宣蚀です。この非垞に䟝存性の実装は、属性メ゜ッドによっおのみ実行されたす。したがっお、コネクタの機胜は、コネクタによっお蚘述された䟝存関係の耇雑な宣蚀プロパティずしお理解される必芁がありたす。



玔粋な仮想゚ンティティであるコネクタは、メタ゜ケットむンスタンスで構成されおいたす盞互アドレス指定によっお論理的に盞互接続されおいたす。したがっお、宣蚀された属性の䟝存関係の性質は、コネクタを構成する゜ケットの組み合わせず、単䞀むンスタンスのフラグの蚭定の䞡方によっお決定されたす。個別の゜ケットを4぀の他の゜ケットに接続できたす。各゜ケットは、基本反察ベヌス -、ブロッキングロック -、参照ref-および远加キヌ -ずいう厳密に明確な機胜的偎面を持っおいたす。埓っお、メタ゜ケットの特性のアドレス郚分は、の点で3぀のルヌトを含むIDA + IDE + IDS蚘述子意味IDEをそのポむンタに埌で明らかになる、塩基゜ケットにはIDC蚘述子が远加されたす。プロパティメタは、その䌝達関数を定矩する5぀のフラグ含む゜ケットSら、Gら、R ESET、U NSETを、I nverse。



前に蚀及しおいたせんが、メタ゜ケット宣蚀にはIDF機胜蚘述子も含たれおいたす。この属性により、唯䞀の方法で倀を圢成できるため、着信゜ケットGet-このプロパティは䜿甚されたせん。ただし、出力゜ケットは、耇雑なコネクタのコンテキスト゜ケットず同様に、属性の保存された倀だけでなく、機胜を通じお受け取った倉換倀も䜿甚できたす。



倀の遞択



前述のすべおの䟋で、クラス属性は、クラスオブゞェクトのタプルでデヌタベヌスに栌玍されおいる氞続的な倀で動䜜するこずがデフォルトで想定されおいたした。掟生倀の長期保存の事実により、そのような属性をstaticずしお特城付けるこずができたす。静的属性の堎合、属性に着信コネクタがあるかどうかなど、他のすべおの条件に関係なく、Getメ゜ッドの実行によっお実装されるデヌタサンプリングは、栌玍された倀を取埗しお返すだけになりたす。



この芏則には小さな䟋倖が1぀ありたす。この䟋倖は、保存された倀が䜕らかの理由で初期化されおいない静的属性に適甚されたすたずえば、「バックデヌト」ず呌ばれる属性が䜜成された堎合。この堎合、この方法は、取埗由来ポヌリング受信コネクタによっお返された倀を生成する詊みを取埗したす。さらに、そのような倀が取埗されおも、定矩による遞択ではデヌタベヌスの状態を倉曎できないため、倀は保存されたせん。䞊蚘ずは少し異なる状況が考慮されたした。セミアクティブなGetコネクタでは、アクティブなUnset / Resetが生成され、それによっお返される倀は自然に保存されたす。



動的属性



特定の条件䞋で、䟋倖が予期せずルヌルになる堎合がありたす。匕数属性ぞの着信コネクタに基づいお動的に生成できる堎合、保存された倀を䜿甚するこずは完党にオプションです。このような動䜜を属性に䞎えるには、プロパティで察応するフラグを蚭定するだけで十分です。



サンプリング時、動的属性は、デヌタオブゞェクトに存圚する堎合でも、保存された倀を無芖し、倀を圢成するために専甚にコネクタヌによっお衚珟された関数および因果関係を䜿甚したす。ポヌリング時に、Get [ G ] フラグが蚭定されおいるタプルからの゜ケットに察しおのみ、掟生Get呌び出しが行われたす。









受信コネクタを䜿甚しおも、すべおの属性を動的な圢匏に倉換できるわけではないこずに泚意しおください。゚ンティティの基本的な特性、参照倀、およびすべおのリストは、静的にのみ存圚できたす。そしお、それを盎接たたは間接的に忘れないでください。しかし、動的属性の倀は保存された倀から圢成されたす。



動的属性は保存された倀を圢成しないため、Set |をリセットするこずにより、すべおの着信コネクタは匷制的に非アクティブなフォヌムになりたす。蚭定解陀 | リセットするすべおの゜ケットで。これにより、動的属性のアドレスに察するアクティブなメ゜ッドの䞍必芁な呌び出しを自動的に排陀できたす。他のすべおの点で、動的属性の動䜜は前述のすべおのルヌルず䟋に察応し、基本的に重芁であり、デヌタの無条件の論理的䞀貫性を保蚌したす。



パフォヌマンスバランス



動的属性を䜿甚するず、圓然、保存されるデヌタの量が枛りたすが、アプリケヌションのポむントはこれではありたせん。ディスク操䜜を考慮から陀倖する堎合、静的属性のみで圢成されたデヌタモデルでは、サンプル倀の実行時間はアトミックトランザクションの実行時間よりも桁違いに短く、その期間は埌続の䟝存関係のボリュヌムにも䟝存したす。この䞍均衡は、サンプルずトランザクションの定量的比率によっお郚分的に補償されたす。通垞、サンプルは1桁倧きくなりたす。



動的属性を䜿甚するず、アプリケヌション開発者は、トランザクション期間を短瞮するこずにより、実行時間のバランスをサンプル期間の延長にシフトできたす。実際、特定の属性が他の属性の特定の倀セットの倀を䞀般化する堎合、このセットを倉曎するすべおのトランザクションでそれを行いたす。たた、この属性が非垞にたれなレポヌトで䜿甚される堎合、それを動的な圢匏に倉換するすべおの理由がありたす。



倀の配列



掟生属性倀は、単䞀アトミック倀たたはタプル圢匏の類䌌した倀のセットのいずれかで、単玔配列列挙ず芋なされたす。抂念゚ンティティの特性の倀ずしおの倀の配列の抂念が最初に存圚したこずに泚意しおください。これは、その䜿甚がタヌゲットドメむンのデヌタモデルのより正確な察応にすぎないこずを意味したす。



属性プロパティでの配列の宣蚀ずその実装もタプルの圢匏を取り、その芁玠には配列の芁玠のカスタム名が含たれたす。名前のタプルが初期化されおいない堎合、これは属性が単䞀の倀で動䜜し、アトミックず芋なされるこずを意味したす。それ以倖の堎合、属性は列挙型ず芋なされたす。属性を䜜成するずき、最初に遞択され蚭定されるのは、掟生プロパティの存圚の圢匏を決定するこのプロパティです。列挙されたフォヌムを遞択するず、2぀の芁玠がすぐに䜜成され、デフォルトでは単玔か぀単玔に「1」ず「2」ずいう名前が付けられおいるず仮定するのは論理的です。



属性宣蚀ず倀の配列の䞡方で配列の単䞀の芁玠を識別するために、芁玠のシリアル番号IDE蚘述子が䜿甚されたす。この蚘述子では、統䞀するために、完党なルヌトの圢匏で別の堎所が予玄されおいたす。これにより、この圢匏はIDC + IDA + IDE + IDSになりたす。ルヌトがアトミックに適甚される堎合属性の堎合、IDE倀は単に無芖されたす。IDEの倀が0であるが、ルヌトが列挙された属性によっおアドレス指定されおいる堎合、配列の各倀はそのスコヌプに連続しお分類されたす。



アプリケヌションモデルを䜜成するずき、属性の列挙圢匏を䜿甚するず特定の利点がありたす。そのため、新しい属性を䜜成する手順は、配列に芁玠を远加するよりも倚少耇雑です。しかし、さらに重芁なこずは、コネクタテクノロゞヌにより、アレむを䜿甚したいわゆるグルヌプ操䜜が可胜になるこずです。IDE蚘述子が配列属性のタプルの゜ケットプロパティで蚭定されおいない堎合 、それを配列の特定の芁玠に「バむンド」するず、この゜ケットのアクションは配列のすべおの芁玠に等しく適甚されたす。このルヌルにより、特に、1぀のコネクタで配列から配列に倀を転送できたす。



倀のリスト



リストはキヌず倀のペアで構成されたすが、キヌ倀のタむプず倀自䜓はリストのすべおの芁玠で同じです。これは、backlinksリストずCurrencyの䟋でその圢成のメカニズムを思い出すず驚くこずではありたせん。名目䞊、キヌたたは倀自䜓ずしおの倀型の䜿甚に盎接的な制限はありたせん。そのため、バックリンク属性の堎合、倀はクラスオブゞェクトのIDOハンドルです。論理的な衚珟の芳点では、リストは線圢で同皮であり、キヌ倀が増加する順に䞊べられおいたす。



すべおのリストは別のむンスタンスであり、前述のメタ定矩レベルのメンバヌではありたせん-meta-list。メタリストには、リストを管理するためのメ゜ッドの完党なセットがあり、リストの䜜成、芁玠の挿入ず削陀、デヌタの遞択、リストの数倀特性の取埗を提䟛したす。物理的には、リストはBツリヌの圢匏で実装され、そのルヌト、ノヌド、およびリヌフはメタタプルのむンスタンスであり、これらはデヌタオブゞェクトに栌玍されたす。



デヌタモデルレベルでは、メタリストは掟生むンスタンスを䜜成したせん。代わりに、クラス属性には、リスト機胜のファミリヌからさたざたな機胜が割り圓おられたす。実際には、メタリストメ゜ッドを䜿甚しおリストを盎接凊理したす。。リストの機胜は、キヌのタむプず倀のペアごずに個別に定矩されたす。これにより、タむプの詳现を考慮するだけでなく、リスト内の倀を管理するメ゜ッドのパレットを拡匵できたす。



倀を入力する



倀型システムは、祖先型ドメむンにそのすべおの子孫の倀ドメむンが含たれる自然な階局を圢成したす。蚀い換えるず、祖先によっお型指定された属性は、必芁に応じお埌続型の任意の倀を取り、その型を衚す内郚圢匏に導くこずができたす。









普遍的な祖先は䞍定型[ U ]です。実際、これは䞀時的な型であり、倀の存圚の圢匏ずしおのみ属性を䜜成できたすアトミックたたは列挙型、遅延型の割り圓お。型の䞍確実性は、任意の長い時間持続する可胜性がありたすが、そのような属性ぞの着信コネクタを䜜成するず、モデルコンストラクタヌはUndefined Typeを自動的に属性匕数の型に倉曎したす。次の芳点から考えるず、どの倀も



論理型[ L ]に倉換できたす。倀は実際に存圚する-true、たたは初期化されおいない-false。 2番目のケヌスには、数字のれロ、文字列のスペヌスを陀く他のリテラルの欠劂などの詳现も含たれたす。



タむプString [ S ]の堎合、倀は任意の長さのリテラルのシヌケンスです。この堎合、゚ンコヌドのタむプASCIIたたはUTFはデヌタベヌス党䜓で同じであり、生成時に蚭定されたす。ただし、必芁に応じお、異なる゚ンコヌディングのサブドメむンサブタむプを䜜成できたす。これは、文字列倀の栌玍順序には圱響したせん。



タむプ数倀 [ N ]は小数点蚈算浮動たたは固定小数点から芋た、党おの実数倀を組み合わせたす。タむプInteger [ そこから遞択されたすI ]-正の敎数のセット党䜓。Date [ D ] タむプは、カレンダヌシステムの敎数です。



入力錯䜓 [ Cずしおも知られる]、タむプナヌザヌ定矩 [ UDTは、これらのクラス-ナヌザのタむプによっお生成された耇玠倀を耇数組み合わせ、抜象ドメむンのプロトタむプです。クラス倀ドメむンには、このクラスからの継承によっお生成されたすべおのクラスの倀ドメむンが含たれたす。クラスによっお圢成されるドメむンの倀は、クラス自䜓から掟生したデヌタオブゞェクトずしお、たたはそのポむンタヌIDO蚘述子ずしお同等に考えるこずができたす。このオブゞェクト。



入力倖郚 [ EXは党お耇数の倀ではなく、解釈オブゞェクトデヌタモデル、および既知の長さのバむトの連続配列ずしお栌玍され、埓っお、埓来考えられお䞍定型の倀を含みたす。倖郚タむプの属性は、トランザクションによる割り圓お、長期保存、およびそのような倀の遞択を実装したす。これらの倀は、コネクタを介した倉換および送信の可胜性がありたせん。Externalドメむンの䞍可欠な郚分はImageドメむンであり、その倀はモデルコンストラクタヌのビゞュアルむンタヌフェむスやアプリケヌションむンタヌフェむスで䜿甚されたす。



タむプメトリック



タむプNumeric [ N ]およびDate [ D ]の堎合、メトリックは倀の存圚ストレヌゞ/プレれンテヌションの粟床を決定したす。 数倀型の堎合、粟床は小数点以䞋の桁数です。 日付タむプの堎合、粟床は、結果の倀が敎列される結果の属性テンプレヌトを構成するCYMDhmsテンプレヌトの文字数です。



プリミティブ関数



既に述べたように、機胜はIDF蚘述子によっお識別される事前定矩されたメ゜ッドです。 機胜の初期セットには、最も基本的ですが、最も頻繁に䜿甚される倀の圢成方法が含たれおいたすが、新しい機胜を远加するこずでこのセットを簡単に拡匵できたす。 倀の各タむプには、固有の機胜のセットがありたす。

- 論理 -加法論理ORおよび乗法論理AND。

- 文字列の堎合 -加算連結;

- 数倀の堎合 -加算、乗算、最小、最倧。

- 敎数の堎合 -加算、乗算、最小、最倧。

- 日付の堎合 -加算シフト、最小、最倧。

- 耇雑な -加算割り圓お、オヌトセット。



これらのすべおの機胜により、さたざたな゜ヌスコネクタから倀を取埗できたす。 単䞀の゜ヌスからの倀割り圓お機胜の圹割は、デフォルトで远加機胜によっお果たされたす。 LogicalおよびExternalを陀くすべおのタむプに察しお、 リスト関数がありたす 。 それずは別に、間隔倀の圢成を保蚌し、それによっお間隔を圢成する倀の内郚䟝存性ず間隔倀の操䜜の䞡方が実珟される間隔汎関数に぀いおも簡単に蚀及する䟡倀がありたす。 間隔倀が耇雑で、列挙可胜な圢匏であるず想定するのは論理的です。



リスト機胜



各リスト機胜は、 メタリストをカプセル化し、 メタリストメ゜ッドを䜿甚するラッパヌ関数です。 メタリストメ゜ッドの䞀郚は、機胜が独自の目暙ず目的のために再定矩したす。 リスト機胜のファミリヌ党䜓には、いく぀かのグルヌプが含たれおいたす。



リストを䜜成および倉曎する機胜は、リスト自䜓、より正確には機胜タむプで識別されたす。 「 単玔な 」リストに加えお、このグルヌプには「 䞀意の 」リスト重耇キヌ倀を持぀こずは犁止されおいたす、および数倀で動䜜する2぀の論理倉曎「合蚈」リスト同じキヌを持぀倀が合蚈されたすずその埌の倉曎- 「 æ•Žæ•° 」同じキヌを持぀倀は、前の芁玠の倀を加算しお合蚈されたす。 これらの機胜は、着信機胜ずしお属性に盎接割り圓おられるため、属性はリスト単䜍で䜜成されたす。 このグルヌプの機胜が実際のリストを圢成するためには、少なくずも1぀の着信アクティブコネクタが必芁です-キヌず倀の゜ヌス。



リストから倀を返すフェッチ関数は、垞にコネクタの発信゜ケットに割り圓おられ、リスト属性のタプルでロヌカラむズされたす。 同時に、受信者属性に察するこのような機胜の「添え字」がシミュレヌトされたす。 実際、 キヌコンテキスト自䜓キヌ゜ヌスは、このコネクタのベヌス゜ケットのいずれかに察しお宣蚀できたす。



キヌによっお倀を遞択する機胜は、配眮条件に関しお異なりたす「 等しい 」正確な配眮、「 少ない 」論理的な先行芁玠に配眮、「 より倚く 」同様に、埌続のもののみ、「 等しいかより小さい 」、および「 等しい 」 以䞊 正確でない堎合は、前たたは次。 条件を満たす芁玠が存圚しない堎合、関数は「 空の 」倀に盞圓するものを返したす。 倀の代わりに、それらに類䌌した機胜のサブグルヌプは、芁玠の䜍眮-リスト内のシリアル番号を返したす。 機胜の別のサブグルヌプ " first / last / N "-" key / value "は、リストの最初、最埌、たたは指定されたN芁玠からク゚リを返したす。



゜フトりェア挿入



プリミティブな機胜を組み合わせおすべおのタスクを解決できるわけではありたせん。 属性プロパティに耇雑なアルゎリズムを実装するために、属性の特定のむンスタンスのプラむベヌト関数ずしお任意のスクリプトPythonなどを配眮できるスクリプトコンテナが提䟛されたす。 さたざたなアプリケヌションを䜜成するこずで、このツヌルを䜿甚する必芁はほずんどないこずが予想倖に瀺されたした。 静的属性スクリプトの本文で、クラス Create たたはクラス属性 SetたたはUpdate に察応するアクティブなメ゜ッドを䜿甚できるこずに泚意しおください。 動的属性スクリプトの堎合、 Getメ゜ッドの呌び出しのみが蚱可されたす。



属性機胜



クラス属性は、 メタ属性のむンスタンスです 。 この属性は、独自のクラス内で䞀意のカスタム名 Name 、倀タむプ Type 、メトリックタむプ Metric 、および動的フラグによっお特城付けられたす。 さらに、この属性はIDF機胜蚘述子、 スクリプトコンテナヌ、および2぀のタプル配列芁玠 Item list ず゜ケット Socket list を所有しおいたす。 独自のクラスのタプルでは、​​属性はIDA蚘述子によっお識別されたす。



デヌタモデルでは 、属性は倀のファクトリの機胜を実行し、この芳点から、オブゞェクトデヌタ管理のコンピュヌティング環境の䞭心的なアクタヌです。 倀で操䜜を実行するために、属性はSet 、 Get、およびUpdateメ゜ッドず、タむプに䟝存する機胜のセットを䜿甚したす。



コネクタで接続された属性は、ニュヌラルネットワヌクトポロゞに䌌たトポロゞを圢成したす。 出発点を思い出しおください-サブゞェクト領域は、盞互䜜甚する倀のシステムず芋なされたす。 したがっお、このようなネットワヌクの理想的なハヌドりェアプラットフォヌムは、シリアルチャネルで盞互接続された倚くの独立したプリミティブプロセッサのように芋えたす。 このようなハヌドりェア環境では、さたざたなプロセスをシミュレヌトできたす。



サヌビス属性



サヌビス属性は、クラスのタプルに氞続的に存圚し、厳密に固定された䜍眮を占めたす。 これらの属性は、デヌタモデルが独自の問題を解決するために䜿甚されたす。 したがっお、前述の属性DelおよびOwnは 、クラスオブゞェクトの察称接続の実装を提䟛したす。 前述されおいない別のサヌビス属性はTypeで、オブゞェクトの構造タむプをクラスオブゞェクトに栌玍したす。これは、ファクトリクラスのIDCハンドルです。



クラス機胜



デヌタクラスは、このむンスタンスの受信方法に関係なく、 メタクラスのむンスタンスです 。 クラスは、クラスの完党なセットで䞀意のカスタム名 Name 、芖芚むメヌゞ Image 、および属性のタプル Attribute list によっお特城付けられたす。 クラスの完党なセットでは、 IDC蚘述子によっお単䞀のクラスが識別されたす。 クラスが別の祖先クラスから継承するこずによっお䜜成された堎合、クラスはParentプロパティに祖先クラスのIDCを栌玍したす。



オブゞェクト管理のコンピュヌティング環境では、クラスは、このためのメタクラスの䜜成メ゜ッドを䜿甚しお、オブゞェクトのファクトリの機胜を実行したす。 クラスオブゞェクトは、クラス属性のタプルのむンスタンスずしお䜜成されたす。



オブゞェクトの削陀は、クラスのドメむンではありたせん。 オブゞェクトは、 Delサヌビス属性の倀を初期化するこずにより論理的に削陀されたす。これは、論理的な敎合性を確保するために、すべおの倖郚コネクタにロックコンテキストずしお自動的に存圚したす。 Delの初期化では、オブゞェクトの既存のすべおの関係の初期化を解陀し、オブゞェクトを分離状態にしたす。 その埌、論理的に分離されたオブゞェクトは、ガベヌゞコレクタヌによっお物理的に削陀されたす。



クラス継承



デヌタクラスは、メタクラスのむンスタンスずしおだけでなく、別のクラスから継承するこずによっおも䜜成できたす。 継承の察象は、先祖クラスの属性の完党なタプルです。これは、継承クラスの属性のタプルに氞続的に存圚したす。 これにより、祖先クラスは、継承の深さに関係なく、盎接および間接の䞡方の子孫によっお生成されたオブゞェクトを䟋倖なくすべおそのドメむンに含めるこずができたす。 継承されたタプルは、先祖クラスのドメむン内のすべおのオブゞェクトぞの自然なむンタヌフェヌスです。



属性タプルの継承を実装するメカニズムは非垞に単玔です。先祖属性タプルのむンスタンスが埌続クラスに䜜成されたす。 定矩によっおこのむンスタンスには倀が含たれたせん。属性宣蚀を耇補する必芁がないためです。必芁な宣蚀は、先祖クラスのタプルを参照するこずで取埗できたす。 埌続クラスは、独自のプラむベヌト倉曎を行った堎合、たたは独自の新しい属性を䜜成した堎合にのみ、完党な属性宣蚀を生成したす。 祖先クラスで新しい属性が䜜成されるず、その子孫の完党なセットで事前に属性タプルの最倧サむズが決定され、その埌、䜜成された属性にはこのサむズ以倖の祖先タプルの芁玠が割り圓おられたす。 したがっお、祖先の新しい属性は、すべおの継承者が自動的に䜿甚可胜になりたす。 この堎合、タプルで圢成された初期化されおいない芁玠は、実際には堎所を占有しないため、無芖できたす。



盞続人のポリモヌフィズムは、継承された属性の倀を取埗するためのルヌルを再定矩し、そのタむプを保持するこずによっお実装されたす。 継承されたコネクタを倉曎するこずは犁じられおおり、必芁に応じお非アクティブ化し、新しいコネクタを䜜成する必芁がありたす。



将来を考えるず、耇雑な゚ンティティであるナヌザヌデヌタクラスには、さたざたな圢匏のむンタヌフェむス芖芚的衚珟を含むが含たれおいるこずに泚意しおください。 䞋䜍クラスは、祖先の衚珟圢匏を完党に継承し、それらをオヌバヌラむドする可胜性がありたす。 倚型ず倚型の自然な組み合わせは、匷力なアプリケヌション開発ツヌルです。



基本属性ずクラスのプロトタむプ



クラス属性の総質量では、クラスCounterpartyの Name属性など、このクラスの特定のオブゞェクトのナヌザヌ識別に䜿甚される倀を持぀ものをい぀でも遞択できたす。 このような属性は、クラスの基本属性ずしお機胜したす 。



バックリンクリストを含む機胜を䞀芧衚瀺するためのコネクタのキヌコンテキストずしお自動的に䜿甚されるのは基本属性であるず想定するのは論理的です。 これを行うには、ベヌス属性のクラスのタプル内の䜍眮が固定されおいる必芁がありたす。぀たり、サヌビス属性の盎埌に配眮されおいる必芁がありたす。



既存のすべおの倀タむプのうち、䜜成時にベヌス属性に有意に割り圓おるこずができるのは、 文字列ず日付の 2぀のタむプのみです。 これらの2぀のタむプの型は、2぀のプロトタむプクラスの存圚を事前に決定したす NamedクラスずEvent クラス 、および察応する基本的な属性。



開発者がカスタムクラスを䜜成する際に、プロトタむプクラスをテンプレヌトずしお䜿甚するず䟿利です。これは論理的に芋えるだけでなく、少しのメリットもありたす。䜜成されたクラスには、必芁な名前の目的のタむプのベヌス属性がすぐに含たれたす。



モデルコンストラクタヌ



既に繰り返しテストされおいたす-マりスで通垞のプログラムを䜜成するこずはできたせん。 アプリケヌション/デヌタモデルを䜿甚する堎合、逆のこずが蚀えたす。テキスト衚蚘は、単調で、ほずんど情報のない宣蚀のリストのように芋えたす。 しかし、芖芚環境では、同じ宣蚀は自然で非垞に明癜に芋えたすリレヌションによっお接続されたクラスの党䜓たたは郚分的に衚瀺された共通スペヌスがあり、クラスの芖芚スペヌスぞの移行は、その接続で倚くの属性を開きたす。 ただし、むンタヌフェむス衚珟の原則ずその実装のメカニズムは、別の蚘事のトピックでもありたす。



゚グれクティブデヌタモデルは、そのプレれンテヌションフォヌムアプリケヌションモデルを介しお䜜成および倉曎されたす。 このモデルの゚ディタヌは、モデル゚ンティティの画像を操䜜するビゞュアルデザむナヌです。 アプリケヌションのナヌザヌむンタヌフェむスからデザむナヌのビゞュアル環境に切り替えお、むンタヌフェむスの珟圚の状態を維持しながらアプリケヌションランタむムに戻るこずは、ホットキヌず同時に実行されたす。 さらに、デザむナヌが行ったすべおの倉曎はすぐに有効になりたす。 䜕かが間違っおいるず、すぐに明らかになりたす。アプリケヌションを䞭断するこずなく、誀った結果やむンタヌフェむスむベントぞの反応がないずいう圢で。



コンストラクタヌは、掟生したむンスタンスの実際の蚘述子を完党に隠しながら、メタ゚ンティティの宣蚀的なむンスタンスずしお新しいモデルコンポヌネントを䜜成したす。 基本的なメタ゚ンティティの初期セットは小さく、競合する゚ディタヌツヌルたたは構築コンポヌネントをアクセスから陀倖するだけで、モデルに既に存圚する新しく䜜成された宣蚀の論理的な䞀貫性を簡単に制埡できたす。



珟圚のデヌタモデルは、゚ンティティプロパティの圢匏の単玔な宣蚀です。぀たり、テキスト圢匏XML、JSON、たたはコンポヌネントを䜜成するための䞀連のトランザクションの圢匏に゚クスポヌトできたす。 内郚蚘述子はテキスト衚珟に゚クスポヌトされず、代わりにカスタムクラスず属性名が䜿甚されたす。



応甚分野



デヌタモデルは状態がある情報 システムを説明したす 。 したがっお、たずえば、ドラむバの実装には䜿甚できたせん。



たた、その助けを借りお、別個のアルゎリズムたたはサブルヌチンを実装するこずはできたせん。デヌタモデルは、サブゞェクト゚リア党䜓を蚘述するだけです。



適切なハヌドりェアがないためパフォヌマンス䞊の理由により、デヌタモデルを䜿甚しお物理プロセスをリアルタむムで盎接シミュレヌトするこずはできたせん。 そのような可胜性はありたすが。



「䞖界のすべお」の普遍的なモデルを䜜成する詊みは無意味であるようです。 アプリケヌションプログラムは、厳密に定矩された芳点から、特定の境界内でのみ垞にサブゞェクト゚リアを反映したす。 たた、別の芳点では、同じサブゞェクト領域が異なっお芋える堎合がありたす。



他のすべおの点で、デヌタモデルに基づくコンピュヌティング環境は、他のすべおのデヌタベヌスに基づいお解決される同じ問題を解決するように蚭蚈されおいたす。 ただし、いく぀かの䟿利なプロパティが異なりたす。



同意したす。アプリケヌションの芖芚モデルは、ビゞネスロゞックをより芖芚的に認識したす。



リンク察称性により、デヌタずメタデヌタの䞡方で、自然なナビゲヌション方法のすべおの機胜を䜿甚できたす。



アプリケヌションを圢成する゚グれクティブデヌタモデルは、デヌタベヌスに栌玍された単なる宣蚀であり、プロセッサアヌキテクチャたたはオペレヌティングシステムのいずれからも完党に独立しおいたす。



開発速床、アルゎリズムの信頌性、厳栌な参照敎合性、氞続的な䞀貫性-これらはすべお、ビゞネスロゞックをデヌタベヌスの論理構造に盎接統合した盎接的な結果です。 同時に、アプリケヌションむンタヌフェむスの実装ぞのアプロヌチは根本的に倉化しおおり、個別の詳现な怜蚎が必芁です。



たずめ



自然は、䞀般的に非垞に小さな基本セットDNAに向かっおうなずくの芁玠の無限の組み合わせによっお埗られる無限の倚様性を私たちに瀺しおいたす。 これは圌女の奜きなテクニックです。



4぀の抜象゚ンティティのみが基瀎を圢成したす。これは、サブゞェクト゚リアを非公匏に蚘述するのに十分です。 この蚘述をデヌタモデルの圢匏で圢匏化するには、3぀のメタ゚ンティティのみの宣蚀的なむンスタンスで十分です。 たた、メタ゚ンティティの6぀の実行方法によっお圢成されるオブゞェクト衚珟のコンピュヌティング環境では、モデルはプログラムのように動䜜し、望たしい結果をもたらしたす。



䞊蚘はすべお、 E.F。Coddのリレヌショナルモデルず、 K。Dataのリレヌショナルテクノロゞヌずオブゞェクトテクノロゞヌの統合に関するアむデアをさらに発展させたものです。 リレヌショナルモデルの本質は倉わりたせん。テヌブル、列、テヌブルの関係です。 ずおも自然な4番目の芁玠を远加しただけですが、䜕らかの理由でCoddが蚀及しおいない、぀たりテヌブル内の列の接続です。



All Articles