平成28年秋期午後問8

なおさん  
(No.1)
https://www.ap-siken.com/kakomon/28_aki/pm08.html

いつも質問すみません。
設問4(2)について、④がデータ結合というのがわかりません。
利用者ごとの出力を行うために上位のモジュールから会員番号などを渡していると思うのですが、それを受けて会員情報の出力を行うのは制御結合ではないのでしょうか?
(引数を受け取って利用者ごとの情報を出力する制御をしている)

どうぞよろしくお願いします。
2024.01.23 18:54
jjon-comさん 
AP プラチナマイスター
(No.2)
リンク先の設問4(1)の次の解説文は、誤解を生む文だと考えます。
②の位置でモジュール分割する場合、上位のモジュールから下位のモジュールに対して<施設名>を受け渡し、下位モジュールでは指定された<施設名>をキーにして、施設利用実績データの集計を行うこととなります。パラメータを渡して、呼出し先モジュールの内部処理を制御するので制御結合となります。

--------
まず。
図2の施設利用レポートは
□ヘッダ情報
・店名:A
・対象月:2016年09月
・月間利用者数:1,200名
が示すように「ある店名のある対象月」単位に反復処理で作成されます。

図5のモジュール構造図は、図2のレポートの次の箇所の出力に対応しますから、
□プールの利用状況
・最大同時利用者数:40名
・最多利用者情報(上位5名)
|会員氏名|利用回数|総利用回数|

図4の
「f:店ごとの施設利用レポート出力処理」上位モジュール
から↓
「プール利用状況出力処理」下位モジュール
に渡すデータ
は、表1の
> 会員番号、会員氏名、利用開始時刻、利用終了時刻
だけさえあれば、図5で「□プールの利用状況」の集計結果を出力できます。
> 利用店、施設名、利用日
は図5に渡す必要のないデータです。ですから、
指定された<施設名>をキーにして、施設利用実績データの集計を行うこととなります。
という設問4(1)の解説文は、誤解を生む文だと考えます。

--------
しかし。
上記では触れなかった例外があります。

これは、図2の注記に書かれており、このサイトの設問3の解説文で正しく指摘されています。
利用者がいないときは(スタジオの利用状況欄のように)「※当月の<施設名>利用者なし」という文字列を出力します。つまり、利用者数によって出力処理が分岐します。
つまり「g:利用者なし表示出力処理」を呼び出す際のみ「施設名」データが必要になります。

--------
結論です。

図5の破線②の下部をまとめて1つのモジュールとして設計すると、
・「上位利用者出力処理」では「施設名」データは不要だが、
・「g:利用者なし表示出力処理」では「施設名」データが必要。
一方では不要だが他方では必要、そんなデータを渡すことになります。
それが
制御結合
もう1つのモジュールの制御要素(フラグなど)を受け渡している。
です。

> 会員番号を受けて会員情報の出力を行うのは制御結合ではないのでしょうか?
> (引数を受け取って利用者ごとの情報を出力する制御をしている)

制御結合の「制御」とは、分岐(選択)のことだと、私は理解しています。

破線④の下部では会員番号をキーとして集計処理をすることになりますが、
集計処理の反復の間、いつも同じデータを参照することになります。

「引数データが1なら、このデータが必要。2なら、別のこのデータが必要」
のような、分岐(選択)構造ではない。ですから、制御結合ではないです。
2024.01.23 23:40
なおさん  
(No.3)
分かりやすくご解説いただきありがとうございます。
理解出来ました。
また、本などで見ていても制御結合がなんなのかいまいちわからなかったのですが、こちらの説明がすごくしっくりきました。
ありがとうございました!
2024.01.25 14:13

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop