クラスまたはコンテキストのアクティベーションの動的な変更 - 既存のオブジェクトを一貫した方法で処理する方法は?

cs.stackexchange https://cs.stackexchange.com/questions/3156

質問

私は次のトピックに関する参考文献と論文を探しています。

  1. 全般的, 、一部のプログラミング言語では、クラスの動的な変更が可能になります。例として、新しいインスタンス変数「重量」をクラスに追加できます Edge (グラフの重み付けされていないエッジのクラス)。しかし、既存のエッジオブジェクトで何が起こるべきですか?

    アップグレードして、デフォルト値、おそらく重量の新しいインスタンス変数を含めることができます 0, 、エッジの例。または既存のオブジェクトは同じままです。

  2. コンテキスト指向 プログラミングは、実行時にコンテキストが動的にアクティブ化されると、同様の状況が発生する可能性があります。これは、現在実行されているメソッドの変更に影響を与える可能性があります(ただし、現時点では単一のスレッド実行に関心があります)。

  3. 検討してください デザインパターン, 、プロキシオブジェクトが別のオブジェクトをラップすると、古いオブジェクトへの参照は、プロキシオブジェクトが順守しない特定の不変剤を期待する場合があります。また、オブジェクトがプロキシオブジェクトでラップ/「更新」される場合、これは矛盾につながる可能性があります。

動的な変更/アクティベーションの場合に問題を治療する可能性のある方法をリストする参照はありますか?状態を一貫性に保つオプションのように?

私は主に、ダイナミックソフトウェアの進化、コンテキスト指向のプログラミング、ソフトウェアコンポーネントのコミュニティを見ました。参照を見つけるために検索できる他の重要なコミュニティはありますか?

役に立ちましたか?

解決

私がつまずいたこのトピックに関する最近の論文はファーストクラスのコンテキストを備えた増分動的更新 Erwann Wernli、Mircea Lungu、およびOscar Nierstrasz。論文で採用されたアプローチは、グローバルな更新に基づいていません。むしろ、システムの複数のバージョンが同時に実行されるもので同時に実行されます コンテクスト. 。オブジェクトは、あるコンテキストから別のコンテキストに徐々に移行され、その時点で更新が実行されます。双方向変換は、古いコンテキスト間の一貫性を維持するために使用されます。

一般的に、更新には更新機能のペアが必要であると思います。クラスを更新するための1つは、オブジェクトを更新するためにもう1つは必要だと思います。本当の問題は、いつ/どのように更新関数をオブジェクトに適用するかです。いずれにせよ、多くの場合、同時にクラスの複数のバージョンがあります。 upgradej (Biermann、Parkinson、Nobleによる)は、クラスの複数のバージョンをタイプの安全な方法で扱うプログラミング言語の1つです。

これらの論文の書誌は、あなたが従うことができるいくつかのリードを提供します。また、Google Scholarを見て、これらにどのような論文が構築されているかを確認してください。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top