中小企業診断士 過去問
令和6年度(2024年)
問163 (経営情報システム 問3)

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。

問題

中小企業診断士試験 令和6年度(2024年) 問163(経営情報システム 問3) (訂正依頼・報告はこちら)

オブジェクト指向プログラミングに関する記述として、最も適切なものはどれか。

a  多相性は、プログラムの実行時に変数に値が代入されると、その値に基づいてデータの型が自動的に決定される仕組みである。
b  インスタンス化は、オブジェクトの属性と機能を外部から隠蔽する仕組みである。
c  継承は、下位クラスが上位クラスの属性と機能を引き継ぐ仕組みである。
d  カプセル化は、上位クラスで定義された機能を下位クラスの役割に応じて再定義する仕組みである。
  • a:正  b:正  c:誤  d:誤
  • a:正  b:誤  c:正  d:正
  • a:正  b:誤  c:正  d:誤
  • a:誤  b:正  c:誤  d:正
  • a:誤  b:誤  c:正  d:誤

次の問題へ

正解!素晴らしいです

残念...

この過去問の解説 (2件)

01

オブジェクト指向プログラミングに関する問題です。以下、誤りの解答群のみ解説します。

 

a.多相性は、プログラムの実行時に変数に値が代入されると、その値に基づいてデータの型が自動的に決定される仕組みである。

動的型付けの記述になります。


b.インスタンス化は、オブジェクトの属性と機能を外部から隠蔽する仕組みである。

カプセル化の記述になります。


d.カプセル化は、上位クラスで定義された機能を下位クラスの役割に応じて再定義する仕組みである。

オーバーライドの記述になります。

選択肢1. a:正  b:正  c:誤  d:誤

冒頭の解説より「a:誤、b:誤、c:正、d:誤」の組み合わせであるため、不適切な選択肢です。

選択肢2. a:正  b:誤  c:正  d:正

冒頭の解説より「a:誤、b:誤、c:正、d:誤」の組み合わせであるため、不適切な選択肢です。

選択肢3. a:正  b:誤  c:正  d:誤

冒頭の解説より「a:誤、b:誤、c:正、d:誤」の組み合わせであるため、不適切な選択肢です。

選択肢4. a:誤  b:正  c:誤  d:正

冒頭の解説より「a:誤、b:誤、c:正、d:誤」の組み合わせであるため、不適切な選択肢です。

選択肢5. a:誤  b:誤  c:正  d:誤

冒頭の解説より「a:誤、b:誤、c:正、d:誤」の組み合わせであるため、正解の選択肢となります。

まとめ

【補足】

 

過去問題に慣れている方であれば、本問は各選択群の用語を入れ替えることで、引っ掛け問題を作りやすいと気付くかも知れません。

 

なお、本問の解答群で誤って記述されている用語を、以下に解説します。(カプセル化については、冒頭の解説を参照してください)

 

・多相性(多様性、多態性とも表現されます)

同じメソッド名が、異なるクラスやデータ型に対して異なる動作をすること

→ゲームのコマンドに例えると、「攻撃する」というメソッド名は同じでも、武器を使って攻撃する、呪文を唱えて攻撃する、素手で攻撃するなどクラスやデータ型によって異なる動作をすることです。

 

・インスタンス

クラス(分類)に基づいて作られる実際のオブジェクト(実体)のことであり、それぞれが独自の属性を持つことができる

参考になった数7

02

本問は、オブジェクト指向プログラミングにおける基本的な概念についての理解を問う問題です。オブジェクト指向プログラミングとは、データと機能をオブジェクトという単位にまとめて扱うプログラミングの手法であり、ソフトウェア開発の効率化や再利用性の向上に大きく貢献してきました。ここでは、オブジェクト指向の重要な特性について、その正しい定義を確認していきます。

選択肢1. a:正  b:正  c:誤  d:誤

この選択肢は誤りです。記述aは多相性の説明として誤っており、記述bもインスタンス化の説明として誤っています。記述cは継承の説明として正しいですが、記述dはカプセル化の説明として誤っています。

選択肢2. a:正  b:誤  c:正  d:正

この選択肢は誤りです。記述aは多相性の説明として誤っていますが、記述cは継承の説明として正しいです。記述bはインスタンス化の説明として誤っており、記述dもカプセル化の説明として誤っています。

選択肢3. a:正  b:誤  c:正  d:誤

この選択肢は誤りです。記述aは多相性の説明として誤っており、記述bもインスタンス化の説明として誤っています。記述cは継承の説明として正しいですが、記述dはカプセル化の説明として誤っています。

選択肢4. a:誤  b:正  c:誤  d:正

この選択肢は誤りです。記述aは多相性の説明として誤っていますが、記述bもインスタンス化の説明として誤っています。記述cは継承の説明として誤っており、記述dもカプセル化の説明として誤っています。

選択肢5. a:誤  b:誤  c:正  d:誤

この選択肢は正しいです。記述aの「多相性は、プログラムの実行時に変数に値が代入されると、その値に基づいてデータの型が自動的に決定される仕組みである」は誤りです。これは「動的型付け(Dynamic Typing)」の説明であり、多相性(ポリモーフィズム)とは異なります。多相性とは、同じインターフェース(メソッド名)で異なるクラスのオブジェクトを操作できる仕組みのことを指します。

記述bの「インスタンス化は、オブジェクトの属性と機能を外部から隠蔽する仕組みである」も誤りです。これは「カプセル化(Encapsulation)」の説明であり、インスタンス化とは異なります。インスタンス化とは、クラス(設計図)からオブジェクト(実体)を生成することを指します。

記述cの「継承は、下位クラスが上位クラスの属性と機能を引き継ぐ仕組みである」は正しいです。継承によって、既存のクラス(親クラス・上位クラス)の特性を継承した新しいクラス(子クラス・下位クラス)を作成することができ、コードの再利用性を高めることができます。

記述dの「カプセル化は、上位クラスで定義された機能を下位クラスの役割に応じて再定義する仕組みである」は誤りです。これは「オーバーライド(Override)」の説明であり、カプセル化とは異なります。カプセル化とは、オブジェクトのデータ(属性)と機能(メソッド)を一つのユニットにまとめ、外部からのアクセスを制限する仕組みのことを指します。

以上から、「a:誤、b:誤、c:正、d:誤」の組み合わせである選択肢5が最も適切です。

まとめ

本問の正解は選択肢5です。オブジェクト指向プログラミングの重要な概念を整理すると以下のようになります:

多相性(Polymorphism)

同じインターフェース(メソッド名)で異なるクラスのオブジェクトを操作できる仕組み

例えば、異なる形状クラス(円、四角形など)に共通のメソッド名「面積計算」を持たせ、それぞれのクラスに応じた計算を行わせる

インスタンス化(Instantiation)

クラス(設計図)からオブジェクト(実体)を生成する操作

例えば、「自動車」クラスから「私の赤い車」というオブジェクトを生成する

継承(Inheritance)

下位クラスが上位クラスの属性と機能を引き継ぐ仕組み

例えば、「乗り物」クラスの特性を継承した「自動車」クラスを作成し、コードの再利用性を高める

カプセル化(Encapsulation)

オブジェクトのデータと機能を一つのユニットにまとめ、外部からのアクセスを制限する仕組み

例えば、オブジェクトの内部データを直接操作させず、メソッドを通してのみアクセスできるようにする

オブジェクト指向プログラミングの理解は、現代のソフトウェア開発において重要な基礎知識となっています。これらの概念は、単にプログラミング言語の特性というだけでなく、システム設計の考え方にも影響を与えています。

参考になった数2