カプセル化・継承・多態性からUMLの読み方まで、オブジェクト指向を10問で確認します。各問を解いてから解説を開き、用語の違いを整理しましょう。学習用のオリジナル問題です。
解く前の確認
カプセル化は状態と操作をまとめて内部を隠すこと、継承は上位型の性質を引き継ぐこと、多態性は共通の操作で対象ごとの振る舞いを扱うことです。言語固有の機能は前提を明記して考えます。
第1問
クラス設計においてカプセル化の目的として最も適切なものはどれか。
A. クラスの再利用性を高めるために継承を利用する
B. データと処理を一体化し、外部からの直接アクセスを制限する
C. 同じ名前のメソッドで異なる処理を実現する
D. 複数のクラス間の依存関係を強める
第1問の解答・解説を見る
答え:B
👉 カプセル化=「隠す」+「まとめる」
外部から直接触らせないのが本質
第2問
次のうち継承の説明として正しいものはどれか。
A. クラス同士の横の関係を表す
B. 既存クラスの機能を引き継いで新しいクラスを作る
C. 同じクラスから複数のインスタンスを生成する
D. クラスの内部構造を隠す
第2問の解答・解説を見る
答え:B
👉 継承=既存クラスの再利用
is-a関係がキーワード
第3問
ポリモーフィズムの説明として最も適切なものはどれか。
A. クラスのデータを隠蔽すること
B. 同一の操作で異なる振る舞いを実現すること
C. クラスを階層構造にすること
D. 処理を高速化する仕組み
第3問の解答・解説を見る
答え:B
👉 多態性=同じ呼び出しで違う動作
例:draw()で円と四角が違う描画
第4問
オーバーライドの説明として正しいものはどれか。
A. 同名メソッドで引数を変えること
B. 親クラスのメソッドを子クラスで再定義すること
C. クラスの変数を隠蔽すること
D. 複数クラスで同じ名前の変数を持つこと
第4問の解答・解説を見る
正解:B。継承したインスタンスメソッドを子クラスで再定義します。親クラス自体の実装を書き換えるという意味ではありません。オーバーライドできる条件は言語の仕様に従います。
第5問
オーバーロードの説明として正しいものはどれか。
A. 親クラスのメソッドを変更すること
B. 同じ名前のメソッドで引数を変えて定義すること
C. クラスを分割すること
D. メソッドを削除すること
第5問の解答・解説を見る
正解:B。例えばJavaでは、同名でも引数の型や数・並びが異なるメソッドを定義できます。戻り値の型だけを変えてもオーバーロードにはなりません。
第6問
UMLクラス図で、関連端の多重度として「1個以上、上限なし」を表すものはどれか。
A. 1..1
B. 0..1
C. 1..*
D. *..1
第6問の解答・解説を見る
正解:C。1..*は1個以上です。1対多の関連を読むには両端の多重度を確認します。1..*という表記一つだけで、反対側の個数まで決まるわけではありません。
第7問
コンポジションの特徴として適切なものはどれか。
A. 部分は独立して存在できる
B. 部分と全体のライフサイクルが独立している
C. 部分は全体に強く依存し、全体が消えると部分も消える
D. 関係が一時的である
第7問の解答・解説を見る
正解:C。コンポジションは強い全体・部分関係で、全体の削除に伴って、その時点で含まれる部分も削除されるモデルです。部分が事前に切り離される場合まで一律に禁止する意味ではありません。
第8問
Javaの抽象クラスについて正しいものはどれか。
A. 抽象クラスを直接インスタンス化できる
B. 必ず抽象メソッドを1個以上含む
C. 直接インスタンス化できず、実装済みメソッドを含められる
D. 他のクラスから継承できない
第8問の解答・解説を見る
正解:C。抽象クラスは直接インスタンス化できません。実装済みメソッドを持てますし、抽象メソッドを一つも持たない抽象クラスも定義できます。
第9問
Javaのインタフェースについて正しいものはどれか。
A. 具体的なクラスの内部実装を必ず公開する
B. あらゆるメソッドが必ず実装済みである
C. 型として利用でき、defaultメソッドで実装を持つこともできる
D. 通常のクラスと同じインスタンス変数を宣言できる
第9問の解答・解説を見る
正解:C。インタフェースは利用側に操作の契約を示します。Javaではdefaultメソッドなど、実装を持つメソッドも定義できるため、「仕様だけで実装は一切持たない」と一律には言えません。
第10問
単一責任の原則として最も適切なものはどれか。
A. クラスは複数の機能を持つべき
B. クラスは1つの責任のみを持つべき
C. クラスは必ず継承を使うべき
D. クラスは他のクラスに依存すべき
第10問の解答・解説を見る
正解:B。単一責任の原則は、クラスを変更する理由を一つの責任にまとめる考え方です。メソッドを必ず1個にするという意味ではありません。
解いた後の復習
第1〜3問は基本概念、第4・5問はオーバーライドとオーバーロード、第6・7問はモデルの関係、第8・9問はJavaの型、第10問は設計責任を整理しましょう。
クラス・継承・カプセル化・多態性をまとめて復習するなら、対応するnote教材へ進めます。


コメント