<?xml version='1.0' encoding='Shift_JIS' ?>
<doc xml:lang='ja'>
	<head>
	</head>
	<body>
		<subsection title="プレゼンテーションコンポーネントとは">
			<p>
				プレゼンテーションコンポーネントとは、シミュレーション状況を出力する、またはシミュレーションの設定などを操作するためのコンポーネントです。</p>
			<p>
				プレゼンテーションコンポーネント作成者はJava言語に仕様とBESPプレゼンテーションコンポーネントフレームワークに基づき、プレゼンテーションコンポーネントを作成し、BESPに配置できるようにします。</p>
			<p>
				シミュレーションをモデルによって様々な種類のプレゼンテーションコンポーネントが作成されることが考えられます。例えば、特定のエージェントを追跡して表示するためのウインドウや、GDPや失業率など経済社会モデルのマクロ集計量を表示するためのグラフウインドウなどです。これらのコンポーネントを効率的に作成するために、プレゼンテーションコンポーネントには、モデルの変更を知るためのイベントの受信機能とシミュレーションを操作するためのコマンドが、プレゼンテーションコンテナから提供されます。これらの機構を知っていれば、モデルがどのように実装されているかをほとんど考えずに、ユーザーインターフェースなどに特化してプレゼンテーションコンポーネントを作成することができます。</p>
			<p>
				ここで紹介するプレゼンテーションコンポーネントは画面に情報を表示するためのプレゼンテーションコンポーネントです。これは、出力の形式によって以下の２種類に分類されます。</p>
			<dl>
				<dt>ウィンドウ型プレゼンテーションコンポーネント</dt>
				<dd>通常利用されるプレゼンテーションコンポーネントです。BESPメインウィンドウ内に展開されます。</dd>
				<dt>グラフ用プレゼンテーションコンポーネント</dt>
				<dd>グラフ表示データであるプレゼンテーションコンポーネントです。画面には何も表示ませんが、グラフモデルを持ちます。</dd>
			</dl>
		</subsection>
		<subsection title="プレゼンテーションコンポーネントの仕組み">
			<p>
				プレゼンテーションコンポーネントは概ね以下の図のような仕組みによってBESPに配置されて、モデルの状況を受け取りながら画面に情報を表示します。</p>
			<figure id="fig:lastyear1" src="image/pcimage"
				title="プレゼンテーションコンポーネントの仕組み" />
			<p>
				プレゼンテーションコンポーネント（図ではグラデーションの円で示しています。ここでは以下PCと表記します）はグラフであれ、通常のプレゼンテーションコンポーネントであれ、BESPのメインウィンドウの機構を利用してBESPに配置（あるいは活性化）されます。</p>
			<p>
				グラフPCはメインウィンドウのグラフの機構（具体的にはグラフウィンドウ）を利用してグラフを画面上に表示させますが、通常のPCはそのまま画面に表示されます。このため、PC実装時にはJava言語のGUIフレームワークであるSwingの機能をそのまま利用できますが、ここではその詳細は割愛します。ただし、サンプルのソースコードはこのSwingの機能をそのまま利用しています。</p>
			<p>
				PCに向けてモデル及びBESPから太い矢印が接続されていますが、これが「イベント」です。BESP上では、モデル及びBESPに何らかの変化（例えばモデルであれば時間が経過した、BESPであればモデルが読み込まれたなど）があったときにその時配置されているPCへ向けてイベントが送られます。PCではこのイベントを受け取ることによって、リアルタイムにモデル及びBESPの状態を監視することができます。</p>
			<p>イベントの種類や送られるタイミングは後述しますが、このような仕組みによってプレゼンテーションコンポーネントは動いています。</p>
		</subsection>
	</body>
</doc>
