SAシステムアーキテクト試験 午前Ⅱ
令和3年度春期 システムアーキテクト 午前Ⅱ 問6
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- アあるクラスを基に,これに幾つかの性質を付加することによって,新しいクラスを定義する。
- イ幾つかのクラスに共通する性質をもつクラスを定義する。
- ウオブジェクトのデータ構造から所有の関係を見つける。
- エ同一名称のメソッドをもつオブジェクトを抽象化してクラスを定義する。
解き方のヒントを見る
クラス間関係の説明を見極める視点
クラス間の関係を表す用語は、二つのクラスがどのような意味で結び付いているかを表現するものです。用語の名前から受ける印象だけで判断せず、記述されている結び付きの中身と用語が本来表す意味とが整合しているかという観点に絞って確かめましょう。
この問題で問われていること
この問題で問われているのは、クラス同士の関係について述べた内容が、その関係を指す用語の意味と対応しているかどうかです。どちらのクラスが主体で、相手とどう関わるのかを自分の言葉で言い直してから照合すると判断しやすくなります。
視点
クラス間の関係を表す用語は、名前が似ていたり日常語の印象が強かったりするため、言葉の響きで判断すると誤りやすい分野です。学習時は、各用語について『どちらのクラスが何に対してどう関わるのか』を教科書の定義に戻って自分で説明できるかを確かめ、述べられている内容をその説明と突き合わせる習慣をつけると判断が安定します。
確認ポイント
- 述べられている関係の両端にあたる二つのクラスが、それぞれ何を指しているかを特定できているか
- 述べられている結び付きの中身を、用語の名前に頼らず自分の言葉で言い換えられるか
- 言い換えた内容と用語が本来表す意味とを照らし合わせ、主従や向きに食い違いがないか確認したか
正解と解説を見る
正解
イ
解説
オブジェクト指向における汎化とは、複数のクラスに共通する属性や操作などの性質を抽象化し、それらを表す上位のクラスを定義することです。したがって、共通性をもつクラスを定義する説明が適切です。
理由
汎化では、複数のクラスに共通する性質を取り出して、より一般的なクラスとして定義する。個々のクラスを基に新しい性質を加えるのは、一般化とは逆方向の特化に当たる。
比較
所有の関係はクラスやオブジェクト間の構造的な関係を示し、同一名称のメソッドをもつことは、それだけで共通の上位クラスを定義する根拠にはならない。共通する性質の抽象化が汎化の要点です。
選択肢ア
これは不正解だよ。あるクラスを基にして性質を追加し、新しいクラスを定義する説明は、既存の一般的なクラスから、より具体的なクラスを作る考え方である。複数クラスに共通する性質を抽象化して上位クラスを定義する汎化とは、操作の方向が異なる。
選択肢イ(正解)
これは正解だよ。幾つかのクラスに共通する性質を取り出し、それらを表すクラスを定義することは、複数の具体的なクラスを共通の上位概念としてまとめる汎化そのものである。汎化では、共通する属性や操作などを抽象化して扱う。
選択肢ウ
これは不正解だよ。オブジェクトのデータ構造から所有の関係を見つける説明は、オブジェクトやクラスの間にある構造的な関係を扱うものである。複数クラスに共通する性質を抽出して上位クラスを定義する汎化の説明にはなっていない。
選択肢エ
これは不正解だよ。同一名称のメソッドをもつオブジェクトを抽象化するという説明だけでは、複数のクラスに共通する性質を上位クラスとして定義する汎化を表していない。メソッド名の一致だけから、汎化の関係を判断することはできない。
学習のポイント
汎化は複数クラスの共通性を上位概念へまとめる関係として理解する。
出典:独立行政法人 情報処理推進機構(IPA)令和3年度春期 システムアーキテクト試験 午前Ⅱ 問6(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針