SAシステムアーキテクト試験 午前Ⅱ

令和5年度春期 システムアーキテクト 午前Ⅱ 問5

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

Java サーブレットを用いた Webアプリケーションソフトウェアの開発では,例えば,doGet や doPost などのメソッドを,シグネチャ(メソッド名,引数の型・個数・順序)は変えずに,目的とする機能を実現するための処理に置き換える。このメソッドの置き換えを何と呼ぶか。

選択肢

  1. ア
    オーバーライド
  2. イ
    オーバーロード
  3. ウ
    カプセル化
  4. エ
    継承
解き方のヒントを見る

メソッド関連用語の区別の観点

オブジェクト指向のメソッドに関する用語は、名前が似ていても指している事柄が異なります。各用語について、何が共通のまま保たれ何が変化するのかを自分の言葉で整理し、その観点で問われている内容と照らし合わせて検討しましょう。

この問題で問われていること

この問題で押さえたいのは、用語ごとに「何が同じで何が異なる状況を指しているのか」という一点です。記憶した名称の響きではなく、その用語が成り立つための前提条件に着目し、問われている場面がその前提を満たすかを確かめてください。

視点

似た用語は、共通点よりも相違点を一つ言葉にできたときに区別しやすくなります。各用語について学んだ定義を思い出し、その定義に含まれる条件を自分で書き出してから比べると、名称の印象だけで判断するのを避けられます。

確認ポイント

  • 各用語の定義を、成り立つ条件の形で一文ずつ書き出せるか確認する
  • 書き出した条件のうち、他の用語と共通する部分と異なる部分を分けて考える
  • 問われている場面が、書き出した条件を過不足なく満たしているか照合する
正解と解説を見る

正解

ア

解説

Javaでは、継承したメソッドと同じシグネチャを保ち、サブクラスで目的に応じた処理内容を定義し直すことをオーバーライドという。

理由

設問は、doGetやdoPostのメソッド名と引数の型・個数・順序を変えずに、処理内容だけを目的に合わせて置き換える操作を問うている。この操作は、継承元のメソッドをサブクラスで再定義するオーバーライドに該当する。

比較

オーバーロードは同じメソッド名で引数の型や個数などを変えること、カプセル化はデータと処理をまとめて外部から隠すこと、継承は既存クラスの属性やメソッドを引き継ぐことを指します。設問の条件とは異なる。

選択肢ア(正解)

これは正解だよ。オーバーライドは、継承関係にあるクラスで、親クラスなどに定義されたメソッドと同じシグネチャを保ちながら、サブクラス側で処理内容を再定義する仕組みである。設問の条件に一致する。

選択肢イ

これは不正解だよ。オーバーロードは、同じメソッド名を使いながら、引数の型・個数・順序などを変えて複数のメソッドを定義することを指す。設問ではシグネチャを変えないため、該当しない。

選択肢ウ

これは不正解だよ。カプセル化は、データとそれを扱う処理を一つにまとめ、内部の実装詳細を外部から直接操作されにくくする考え方である。既存メソッドを同じシグネチャで置き換える操作そのものではない。

選択肢エ

これは不正解だよ。継承は、既存クラスの属性やメソッドを新しいクラスが引き継ぎ、再利用できるようにする仕組みである。設問が説明しているのは、継承したメソッドの処理内容を再定義する操作であり、継承そのものではない。

学習のポイント

オーバーライドとオーバーロードの条件の違いを、シグネチャに注目して整理する。

出典:独立行政法人 情報処理推進機構(IPA)令和5年度春期 システムアーキテクト試験 午前Ⅱ 問5(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針