データコンテキストの相互作用 – ウィキペディア

before-content-x4

データコンテキストインタラクション DCI 、 ドイツ人 データコンテキストインタラクション )は、複雑なオブジェクト指向ソフトウェアのプロフェッショナリズムをモデル化するためのアーキテクチャパターンです。 DCIはスペシャリストオブジェクトを分離します (データ) アプリケーションから (コンテクスト) そして役割 (交流) 。 DCIは、モデルビューコントローラーアーキテクチャパターンの発明者であるTrygve Reenskaugによって最初に説明されました。彼は後にジェームズ・O・コプリエンによって支援されました。

after-content-x4

データコンテキストの相互作用は、オブジェクト指向の分析と設計で通常どおり、モデリングクラスのアイデアに基づいていますが、オブジェクトを記述します。 DCIでは、オブジェクトがインスタンスされたクラスよりも、インスタンスが期間中のインスタンスについて考える必要があります。

このアプローチは、機能に過負荷になったクラスを約束するのではなく、単純な専門オブジェクトを約束します (データ) 異なる役割(すなわち機能)を満たす独自の専門的な機能がありませんが、それ自体 交流 – クラスはアウトソーシングされます。実際のプロフェッショナリズム(すなわち、アプリケーションケース)自体はSO -Calledにあります コンテクスト – 表示されているクラス。

データコンテキストの相互作用は、データの厳密な分離(データオブジェクト – スペシャリストオブジェクトにほぼ対応)、コンテキスト(コンテキスト – ユースケース、シナリオまたはアルゴリズムに対応)および相互作用(相互作用 – 異なるコンテキストでデータオブジェクトを知覚するロールに対応する)によって特徴付けられます。

データ(データオブジェクト) [ 編集 | ソーステキストを編集します ]

専門のオブジェクトと互いの関係について説明します。これらのデータオブジェクトには、技術的な機能が含まれなくなり、多かれ少なかれ単純なデータホルダーです。アプリケーションのデータに関するユーザーのメンタルモデルに準拠する必要があります。それらは、モデルビューコントローラーアーキテクチャパターンのモデルに対応しています。

データオブジェクトの例は、「銀行口座」です。アカウントの残高をクエリして変更できる簡単な方法がありますが、他のオブジェクトやユーザーインタラクションへのトランザクションやアクセスを必要とする機能はありません。このようなタスクは、コンテキストによってDCIで可能になります。

データ – クラスはに対応します エンティティ 値オブジェクト 集合体 IMドメイン駆動型デザイン。

コンテキスト(kontext) [ 編集 | ソーステキストを編集します ]

データオブジェクトが特定の役割で使用されるコンテキストを説明します。これらは、アプリケーションの技術タスクのアプリケーション、シナリオ、およびアルゴリズムです。

after-content-x4

コンテキストは、1つ以上のアプリケーションを表すオブジェクトであり、ユースケースの実行ごとにインスタンス化されます。彼らの主なタスクは、アプリケーションで特定の役割を果たすデータオブジェクトを特定し、それらをこの役割に関連付けることです。データオブジェクトの役割へのこの結合は、オブジェクト指向プログラミングの多型に匹敵します。

したがって、特定のアプリケーションの実装は、このアプリケーションで特定の役割を果たすデータクラスに基づくビジネス機能のコースです。

したがって、アプリケーションのビジネス機能全体は、さまざまな役割で分散化された方法のネットワークの合計です。

コンテキストの例は、2つのアカウント間の銀行振込です。この銀行転送は、役割「ソースアカウント」と「ターゲットアカウント」の「銀行口座」データオブジェクトを使用します。また、データオブジェクトと役割の分離により、たとえば、実際のデータオブジェクトを考慮せずに、他のアカウントタイプ(クレジットアカウントや普通預金口座など)間の銀行転送を実装することもできます。

相互作用(相互作用) [ 編集 | ソーステキストを編集します ]

相互作用とは、データオブジェクトを割り当てることができるデータコンテキストインタラクションでの役割を意味します。 DCIでは、役割はシステム内のオブジェクトの責任についてユーザーの提示に対応します。役割は責任のコレクションです。

オブジェクトまたはクラスの責任はオブジェクト方向に見られますが、これらはDCIでの相互作用、および役割に起因します。オブジェクトはアプリケーションで特定の役割を引き受けます。これは、アプリケーションからアプリケーションまでさまざまです。ある銀行口座は、「ソースアカウント」の役割、別の時間「ターゲットアカウント」、もう1つの時間は「転送勘定」の役割を引き受けます。

役割の例は、「銀行譲渡」金額で予約できるターゲットアカウントです。

オブジェクトオリエンテーション(OO)
データコンテキストの相互作用は、オブジェクト方向の原則に完全に合意することはできないアーキテクチャパターンです。したがって、DCIの相互作用の役割に完全に適合するオブジェクト方向に概念はありません。これは、オブジェクト指向のプログラミング言語を使用したDCIの実装のほとんどが慣れる必要がある理由でもあります。
さらに、DCIの代表者は、オブジェクトの方向は一般にクラスへの方向に基づいていることを批判しますが、DCIはプログラムの用語のオブジェクトにはるかに基づいています。
ドメイン駆動型デザイン(DDD)
データコンテキストの相互作用は、ドメイン駆動型の設計(エンティティ、バリューオブジェクト、集合体、サービスオブジェクト、プロフェッショナルイベント)のドメインモデルのコンポーネントを補完できるアーキテクチャパターンです。 DCIのデータオブジェクトは、エンティティ、値オブジェクト、DDDの集約によって洗練され、コンテキストオブジェクトはサービスオブジェクトやプロフェッショナルイベントによって反映されます。ただし、DCIの相互作用の役割は、ドメイン駆動型設計のコンポーネントを拡大します。
アスペクト指向プログラミング(AOP)
アスペクト指向プログラミングには、DCIの目標はアスペクト指向プログラミングの目標に匹敵するため、DCIを使用してDCIを使用して実装することもできます。側面とは対照的に、DCIの相互作用の役割は簡単に集約して要約できます。コンテキストは、役割の協力のためのフレームワークを提供しますが、側面は適用されるオブジェクトとのみ機能します。
複合指向プログラミング(COP)
複合指向のプログラミング(ドイツ語への翻訳の可能性は複合プログラミングになります)は、ここで言及されている概念の重複を表す概念に対応しています。これは、次の原則に基づいています。動作はコンテキストに応じてモデル化する必要があり、デカップリングは美徳であるため、絶えず維持する必要があります。ビジネスルールは、永続性やセキュリティなどのインフラストラクチャよりも重要です。 [初め]

現在、さまざまなプログラミング言語のデータコンテキストインタラクションの最初の実装がいくつかあります。ただし、DCIは別の新しいプログラミングパラダイムを表しているため、他のプログラミング言語での実装はしばしばでこぼこで面倒です。たとえば、ロールの実装には通常、注入方法が必要です。いくつかの言語は、他の言語、動的または静的注入またはプレコンパイルを使用してネイティブの役割をサポートしています。DCIをシミュレートします。現在、データコンテキストインタラクションのネイティブ実装はありません。

DCIの実装は、アスペクト指向のプログラミング、データコンテキストインタラクション、ドメイン駆動型設計などの概念に基づいて、ドメイン中心のアプリケーション開発のためのJavaフレームワークであるApache Zest(以前のQI4J)です。 SO -Caledの特性により、Scalaにはロールをネイティブに実装できる音声構成があります [2] 、PHP(WAXフレームワーク)、SmallTalk、C ++、C#、Ruby、JavaScript、Pythonを使用した実装に対する最初のアプローチもあります。

  • Trygve Reenskaug、James O. Coplien: DCIアーキテクチャ。オブジェクト指向プログラミングの新しいビジョン 。編:アルティマ。 2009年3月20日( artima.com [2010年2月14日にアクセス])。
  • Trygve Reenskaug: オブジェクト指向プログラミングの常識 。編:ノルウェーのオスロ大学コンピューターサイエンス学科。 2009年4月13日( uio.no [PDF; 2010年2月14日にアクセス])。
  • オブジェクトコンポジション – さまざまなプログラミング言語のDCIのディスカッションと最初の実装を備えたGoogleグループ
  • リチャードÖberg: QI4J – コード、例、デモ Qi4jに関するØredev2008での講義、データコンテキストインタラクションとドメインドライブデザイン
  • ジェームズ・O・コプリエン: DCIアーキテクチャ:コードレベルでリーンとアジャイル 2010年6月30日QCONに関する講義
  1. 複合指向プログラミング 記念 2010年12月16日から インターネットアーカイブ ))
  2. Trygve Reenskaug、James O. Coplien: DCIアーキテクチャ:オブジェクト指向プログラミングの新しいビジョン 記念 2017年9月29日から インターネットアーカイブ )2009年3月20日
after-content-x4