戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

応用情報技術者 2014年 春期 午後08


地図を利用するアプリケーションプログラムの設計に関する次の記述を読んで、設問1〜3に答えよ。

 K社は、インターネット上でグループウェアを提供しているソフトウェア開発会社である。このグループウェアに利用者同士の待合せを支援する機能(以下、待合せ機能という)を追加することになった。待合せ機能は、タブレットやスマートフォンなど各種の端末で利用する。待合せ機能の画面イメージを図1に、各構成要素の概要を表1に示す。
応用情報技術者試験(平成26年度 午後 問08 図01)
応用情報技術者試験(平成26年度 午後 問08 表01)
〔クラス図の検討〕  まず、表1の各要素をクラスにすることを考える。次に、クラス間の関連について検討していく。図1から、地図クラスにその他の要素をもたせるように考える。利用者、待合せ場所及び目的については、アイコンクラスとの類似性に着目し、アイコンクラスの派生クラスとする。検討したクラス図の抜粋を図2に示す。ただし、システム設定値などのクラスは省略している。
応用情報技術者試験(平成26年度 午後 問08 図02)
 図2のレビューを実施したところ、次のような指摘を受けた。  “属性の型に基本データ型を用いて、その値に暗黙のルールをもたせるような使い方は好ましくない。例えば、地図クラス及びアイコンクラスの幾つかの属性は、その値が正常な範囲の値かどうかのチェックを含め、複数の関連し合う属性を一まとめにした①クラスを用意し、そのクラスに置き換えるとよい。”   〔アイコンクラス及び派生クラスの実装に関する検討〕  アイコンクラスの操作“選択する”は、その派生クラスを実装する際、同じ名称の操作“選択する”を実装することによって、同じ操作でも派生クラスごとに振る舞いが変わるようにする。派生クラスには、振る舞いごとにクラス内部からだけアクセス可能な操作を用意し、派生クラスに実装する操作“選択する”の中からその操作を呼び出すように実装する。  例えば、目印クラスの操作“選択する”の中から呼び出される操作を実装すると、“―写真を表示する”となる。同様に、利用者クラスの操作“選択する”の中から呼び出される操作を実装すると、d及び“―電話を掛ける画面へ”となる。  なお、アイコンクラスの三つの派生クラスそれぞれの操作“選択する”は振る舞いが異なり、共通する処理はないので、それぞれの操作“選択する”からアイコンクラスの操作“選択する”は呼び出さない。   〔描画処理の検討〕  地図上の操作盤から拡大ボタン(“+”)が押されると、地図の表示領域が再計算され、全ての要素が再描画される。拡大ボタンが押されてから地図の再描画が終わるまでの処理の流れを、シーケンス図として図3に示す。  なお、操作盤クラスの操作“拡大”はシステムから呼び出される。その結果をシステムが受け、拡大した地図を再描画するために、システムから地図クラスの操作“地図を描く”が呼び出される。地図クラスの操作“地図を描く”の中では、操作“背景を描く”を呼び出した後、地図上の各要素の描画処理を行う。
応用情報技術者試験(平成26年度 午後 問08 図03)

設問1〔クラス図の検討〕について、(1)〜(3)に答えよ。

(1)図2中のabに入れる適切な多重度を答えよ。

模範解答

a:1 b:1

解説

解答の論理構成

  1. まず多重度 b について確認します。問題文には
    “操作盤は、常に画面の一番手前に、一つだけ表示される。
    と明記されています。この一文は「地図」上に存在できる「操作盤」は常に 1 個であることを示しています。図2でも「地図」クラスが「操作盤」クラスを保持する形(コンポジション)で描かれており、したがって b には “1” が入ります。
  2. 次に多重度 a を考えます。図2の関係は「地図」クラスと「アイコン」クラスとの間にあります。図2には既に “1 ──── 0..*” と記されており、片側(アイコン側)は 0 以上の任意個、もう片側(地図側)が a です。
    問題文 “図1から、地図クラスにその他の要素をもたせるように考える。” は各種アイコン類が「地図」1 つに内包される設計方針を示しています。地図が複数のアイコンを持つことはあっても、1 個のアイコンが複数の地図に属することはあり得ません(同じ画面に複数の地図は描かれない想定)。よって地図側の多重度は “1” となります。
  3. 以上より
    a = 1
    b = 1
となることが導かれます。模範解答 “a:1、b:1” と一致します。

誤りやすいポイント

  • 「操作盤は一つだけ表示」の記述を見落とし、0..1 としてしまう。実際には必ず表示される仕様なので 1 でなければなりません。
  • 図2に既に書かれている “1 ──── 0..*” の左側が a であることに気付かず、アイコン側の多重度と混同する。
  • “地図クラスにその他の要素をもたせる” という説明を「包含」ではなく「参照」と誤解し、0..* / 0..1 のように可変にしてしまう。

FAQ

Q: 操作盤が必ず 1 個というのは端末を横向きにした場合でも変わりませんか?
A: はい、問題文で “常に画面の一番手前に、一つだけ表示される。” と限定しているため、画面の向きやモードに関係なく 1 個です。
Q: 「アイコン」は複数の種類がありますが、多重度 a = 1 でよいのですか?
A: 多重度は「アイコン」個々ではなく「地図」対「アイコン集合」の関係を表します。1 つの地図が 0 個以上(0..*)のアイコンを保持し、1 個のアイコンは 1 つの地図にのみ属するので地図側は 1 です。
Q: なぜコンポジションで表しているのですか?
A: 操作盤は地図が破棄されれば共に消えるライフサイクルを持ちますし、アイコン群も地図に強く所有されています。このように部品の生存が親クラスに依存する場合はコンポジションが適切と判断できます。

関連キーワード: 多重度, コンポジション, クラス図, 内包関係, オブジェクト指向

設問1〔クラス図の検討〕について、(1)〜(3)に答えよ。

(2)図2中のcに入れる適切な属性名を答えよ。

模範解答

c:住所

解説

解答の論理構成

  1. 必要な属性の洗い出し
    【問題文】表1「待合せ場所」の概要に
    “名称や住所、URL、待合せ日時を登録する。”
    と明記されています。したがって待合せ場所クラスには少なくとも「名称」「住所」「URL」「待合せ日時」の四つが必要です。
  2. 既存クラスとの重複確認
    図2より待合せ場所クラスはアイコンクラスの派生クラスです。アイコンクラスには
    “-名称:文字列”
    が既に定義されています。よって派生クラス側で改めて「名称」を持つ必要はありません。
  3. 図2の属性不足の特定
    図2中の待合せ場所クラスには
    “-URL:文字列”
    “-待合せ日時:日時”
    が記載済みで、残り一つの空欄 c が存在します。
  4. 結論
    表1で必要だがまだ図2に記載されていない属性は「住所」のみです。したがって
    c:住所

誤りやすいポイント

  • 派生クラスが親クラスの属性を継承していることを忘れ、c を「名称」と誤記してしまう。
  • 表1の説明を読み飛ばして、URL や日時との関係だけで推測してしまう。
  • “名称や住所、URL、待合せ日時を登録” という順序に引きずられて、前から二番目=住所である点を見逃す。

FAQ

Q: 親クラスに定義されている属性を派生クラスで再度宣言しても構いませんか?
A: 同一内容を重複して持つと冗長になり、設計上好ましくありません。継承で使い回せるものは派生クラスには持たせないのが原則です。
Q: 「住所」は数値型でも表せますか?
A: 住所は文字列として扱うのが一般的です。緯度・経度は数値型で保持し、表示用に住所を別途保持することで可読性を確保します。
Q: URL があるなら住所はいらないのでは?
A: オフライン閲覧や検索の利便性を考慮すると、URL と住所は用途が異なります。表1に明記されている以上、設計上は両方保持する必要があります。

関連キーワード: クラス図, 継承, 属性, オブジェクト指向, 概念モデリング

設問1〔クラス図の検討〕について、(1)〜(3)に答えよ。

(3)本文中の下線①のクラスの名称を答え、その属性として適切な名称を列挙せよ。

模範解答

クラス:位置 属性:位置緯度、位置経度

解説

解答の論理構成

  1. 指摘文の確認
    問題文では、レビュー指摘として
    “地図クラス及びアイコンクラスの幾つかの属性は、その値が正常な範囲の値かどうかのチェックを含め、複数の関連し合う属性を一まとめにした①クラスを用意し、そのクラスに置き換えるとよい。”
    とあります。ここで「複数の関連し合う属性」とは、緯度・経度のように常にペアで扱われる座標情報を指していると読み取れます。
  2. 対象属性の抽出
    ①クラスにまとめる候補を図2から探すと、
    ・地図クラス
    “-画面左上の位置緯度:実数”
    “-画面左上の位置経度:実数”
    “-画面右下の位置緯度:実数”
    “-画面右下の位置経度:実数”
    ・アイコンクラス
    “-位置緯度:実数”
    “-位置経度:実数”
    が該当します。いずれも「緯度」と「経度」が対になっています。
  3. まとまりとしての意味づけ
    緯度・経度を単独で使うことは少なく、常に「どこを示す座標か」という意味でセット運用されます。従って、このペアを一つの概念クラスにすることで
    ・妥当性チェック(緯度 、経度 など)
    ・再利用性(地図以外でも位置表現に流用可能)
    が向上します。
  4. クラス名と属性名の決定
    ペアで表現される概念は「位置」そのものです。従って①クラスの名称は「位置」。
    属性はペアをそのまま保持するので
    “位置緯度”、“位置経度”
    が自然な命名となります。これにより、元のクラスの該当属性は「位置」型の単一属性に置換できます。

誤りやすいポイント

  • 緯度・経度を個別に「緯度」「経度」だけで答えると、クラス名を問う設問の趣旨を外し失点します。
  • 「範囲チェックを含む複数の関連属性」というキーワードを読み落とし、他の属性(例:縮尺)をまとめようとしてしまうケースがあります。
  • クラス名を「座標」など別名称で書くと、原文の意図とずれるため減点されやすいです。問題文では「位置」を示す語が複数箇所で使われている点に注意が必要です。

FAQ

Q: 位置クラスに高度(標高)を入れたほうが汎用的では?
A: 要件上、高度を扱うシーンが示されていないため、本問題では緯度・経度だけをまとめれば十分です。拡張が必要になった際に属性を追加する設計で問題ありません。
Q: 緯度・経度を文字列で保持してもよいのでは?
A: 表示用途なら文字列でも構いませんが、計算や範囲チェックを行うので数値(実数)が適切です。問題文にも“実数”と明示されています。
Q: 位置クラスを導入した場合、地図クラスの“画面左上の位置”と“画面右下の位置”はどう表現する?
A: “画面左上の位置:位置”のように、位置型を二つ持たせる形に変更します。これでペア属性を安全に管理できます。

関連キーワード: オブジェクト指向, クラス設計, モデリング, カプセル化, 再利用性

設問2〔アイコンクラス及び派生クラスの実装に関する検討〕について、(1)、(2)に答えよ。

(1)図2及び本文中のdに入れる適切な字句を、図2の凡例に倣って答えよ。

模範解答

d:-メールを作成する画面へ

解説

解答の論理構成

  1. 派生クラスの実装方針
    本文には
    “派生クラスには、振る舞いごとにクラス内部からだけアクセス可能な操作を用意し、派生クラスに実装する操作“選択する”の中からその操作を呼び出す”
    とあります。この記述から、-(非公開)で始まる操作名をクラス図に追記する必要があると分かります。
  2. 目印クラスの具体例
    同じ段落に
    “例えば、目印クラスの操作“選択する”の中から呼び出される操作を実装すると、“―写真を表示する”となる。”
    と示されており、-写真を表示する が非公開操作になることが確認できます。
  3. 利用者クラスで必要な二つの操作
    同じ文の後半で
    “利用者クラスの操作“選択する”の中から呼び出される操作を実装すると、d及び“―電話を掛ける画面へ”となる。”
    と記載されています。“―電話を掛ける画面へ” は既に図2に存在します。従って d は、もう一方の非公開操作名を補うだけです。
  4. システム設定値による遷移先
    表1「利用者」の概要には
    “利用者を選択すると、システム設定値によって、メールを作成する画面又は電話を掛ける画面へ遷移する。”
    と明言されています。ここで “メールを作成する画面” への遷移が求められていることが分かります。
  5. クラス図表記に合わせた最終形
    クラス図ではアクセス修飾子を - で表現しているので、答えは
    -メールを作成する画面へ
    となります。

誤りやすいポイント

  • “メールを作成” ではなく “メールを作成する画面へ” までを正確に書かないと減点対象です。
  • 先頭の修飾子を + にしてしまうミスが多発します。本文の「クラス内部からだけアクセス可能」という条件は - に対応します。
  • 目印クラスの例と混同し “写真を表示する” を重複記入してしまうケースがあります。利用者クラスで求められるのはメール・電話の二つです。

FAQ

Q: なぜ“メールを作成する画面へ”は非公開 (-) なのですか?
A: 本文が「クラス内部からだけアクセス可能な操作」と述べているためです。外部から直接呼ぶのではなく、公開操作“選択する”の内部で呼び出されます。
Q: 「画面へ」を省略して“メールを作成する”ではダメですか?
A: ダメです。表1に“メールを作成する画面”と明示されているので、操作名も同じ表現を使う必要があります。
Q: 同様の理由で“電話を掛ける画面へ”も非公開操作ですか?
A: そのとおりです。図2には既に +電話を掛ける画面へ とありますが、公開・非公開の設定は設計者の判断により変えてもよい場面です。問題文では電話用は公開、メール用は非公開という仕様になっています。

関連キーワード: クラス図, アクセス修飾子, 派生クラス, 非公開操作, 画面遷移

設問2〔アイコンクラス及び派生クラスの実装に関する検討〕について、(1)、(2)に答えよ。

(2)アイコンクラスの操作“選択する”は、アイコンクラスの派生クラスの操作“選択する”とは実装が異なる。その違いについて、30字以内で述べよ。

模範解答

操作の定義だけ行われ、実装は行われない。

解説

解答の論理構成

  1. 【問題文】には
    “アイコンクラスの操作“選択する”は、その派生クラスを実装する際、同じ名称の操作“選択する”を実装することによって、同じ操作でも派生クラスごとに振る舞いが変わるようにする。”
    とあります。ここで「振る舞いが変わる」=オーバライドを示唆しています。
  2. さらに
    “なお、アイコンクラスの三つの派生クラスそれぞれの操作“選択する”は振る舞いが異なり、共通する処理はないので、それぞれの操作“選択する”からアイコンクラスの操作“選択する”は呼び出さない。”
    と明記されています。共通処理が無いので基底クラス側にロジックを置く必然性はありません。
  3. よってアイコンクラス側の“選択する”は「メソッドシグネチャだけを定義し、処理本体は書かない(抽象メソッド相当)」という設計が導かれ、模範解答の
    “操作の定義だけ行われ、実装は行われない。”
    が成立します。

誤りやすいポイント

  • 「共通処理がない」と述べられているのに、基底クラスにデフォルト実装を書いてしまう。
  • オーバロード(同名異引数)とオーバライド(同名同引数)を混同し、別シグネチャで実装してしまう。
  • 基底クラスのメソッドを空実装ではなく「例外スロー」などと誤解し、設計意図から外れる。

FAQ

Q: 抽象クラスにしなければならないのですか?
A: 【問題文】では抽象クラスとは明言していませんが、「呼び出さない」「共通処理がない」とあるため、抽象メソッド相当の設計が自然です。
Q: 基底クラスの“選択する”をあえて空実装にすることはNGですか?
A: ロジックが無いなら動作上は問題ありませんが、「派生クラスでの実装忘れ」を静的に検出できる抽象メソッドの方が品質面で優れます。
Q: インタフェースを使う設計でも良いのでしょうか?
A: 設計方針としては可能です。ただし図2が示す「アイコンクラスと派生クラス」の継承関係を維持するなら抽象クラスの方が読みやすいでしょう。

関連キーワード: オーバライド, 抽象メソッド, 継承, ポリモーフィズム, デザインパターン

設問3〔描画処理の検討〕について、(1)、(2)に答えよ。

(1)図3中のeに入れる適切な字句を答えよ。

模範解答

e:アイコンリストの大きさ

解説

解答の論理構成

  1. 図3の説明では「地図ライフライン上に『loop[ 1, e ]』のフレームで囲まれ、内部に『アイコンを描く』を含む」とあります。
  2. 同じ図3の序文には「地図クラスの操作“地図を描く”の中では、操作“背景を描く”を呼び出した後、地図上の各要素の描画処理を行う」と記載されています。
  3. 図2を見ると、地図クラスは属性「-アイコンリスト:アイコン[]」を保有し、「1 ──── 0..*」でアイコンクラスと関連しています。つまり地図が保持する複数個(0 個以上)のアイコンを順次描画する責務を負います。
  4. したがってループフレームは「アイコンリスト」を 1 から最後の要素まで走査する構造であり、上限値を表す e には「アイコンリストの大きさ」が入ります。

誤りやすいポイント

  • 「多重度 0..*」を読み違え、固定回数と誤解する。動的に保持している要素数なので固定値にはなりません。
  • アイコンの数そのものではなく「最後に描画したインデックス」など別概念を書いてしまう。ループ条件の上限はコレクションのサイズです。
  • 待合せ場所や利用者もアイコンの派生クラスなので、地図→アイコンの描画はこれらも含む点を見落としがちです。

FAQ

Q: 「背景を描く」と「アイコンを描く」の順序は採点に影響しますか?
A: 今回の設問はループ条件のみが問われていますが、シーケンス図としては背景→アイコンの順序を維持する必要があります。
Q: 「アイコン配列の長さ」と書くのは減点対象ですか?
A: 意味は通じますが、原文の属性名「アイコンリスト」をそのまま用いるのが望ましいです。
Q: ループの下限が 1 になっている理由は?
A: 描画対象が 0 個ならループ本体に入らないためです。上限だけが可変で、本設問の焦点はその上限値でした。

関連キーワード: シーケンス図, ループフレーム, クラス間関連, コレクション操作, 多重度

設問3〔描画処理の検討〕について、(1)、(2)に答えよ。

(2)図3中のfの領域を埋めて、シーケンス図を完成させよ。

模範解答

f: 応用情報技術者試験(平成26年度 午後 問08 設問3-2)

解説

解答の論理構成

  1. 地図が描画を担当するタイミング
    • 問題文には「システムから地図クラスの操作“地図を描く”が呼び出される」とあり、描画処理の主導権は地図クラスにある。
  2. 地図が持つ構成要素の洗い出し
    • クラス図(図2)の記述より
      「-操作盤:操作盤」
      とあるため、地図クラスは操作盤クラスを 1 つ保持している。
  3. 地図が行う具体的な描画手順
    • 問題文の指示
      「地図クラスの操作“地図を描く”の中では、操作“背景を描く”を呼び出した後、地図上の各要素の描画処理を行う。」
      ここで“各要素”には操作盤も含まれる。
  4. 操作盤側に実装されている描画操作
    • クラス定義に
      「+操作盤を描く:結果」
      が用意されている。
      よって地図クラスから操作盤クラスのこの操作を呼び出す必要がある。
  5. シーケンス図で表すべきメッセージ
    • 呼び出し元:地図ライフライン
    • 呼び出し先:操作盤ライフライン
    • メッセージ名:操作盤を描く
    • 戻り値:結果(破線矢印で記載)
      これが f の領域に描くべき唯一のインタラクションとなる。

誤りやすいポイント

  • 地図が「操作盤を直接描く」と誤認し、地図ライフラインだけで完結させてしまう。実際は操作盤クラスの責務であり、メッセージ呼出しが必要。
  • 描画順序の混同。背景→操作盤→アイコンの順を守らず、アイコン描画の loop 内に操作盤を入れてしまうケース。
  • 戻り値(破線矢印)を描き忘れる。シーケンス図では呼出しと対応する戻り値の表現が採点対象になる。

FAQ

Q: ループフレームの外に「操作盤を描く」を配置する理由は?
A: ループは「アイコンを描く」を要素数分繰り返すためのものです。操作盤は 1 つしか存在しないのでループの外側で 1 回だけ描画します。
Q: 地図が操作盤を保持しているなら、操作盤側から地図を描くこともできるのでは?
A: 機能分担の観点から描画制御は地図クラスに集約されています。操作盤は自分自身をどう描くかだけを知り、地図全体を描く責務は持ちません。
Q: 戻り値の型「結果」は具体的に何を表しますか?
A: 成功/失敗や描画完了通知など、UI 描画で必要なステータスを抽象化したものです。設計段階では汎用的な戻り値名で構いません。

関連キーワード: シーケンス図, メッセージ呼出し, 集約関係, UI描画, オブジェクト指向
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について