問題1
関連する属性、操作を一つのクラスにまとめること
カプセル化が正解です
カプセルはボールのようなケ-スに小さなおもちゃが入っているものを想定するとイメージしやすいです。
これらの形状は、内部で完結しており、かつ外部からはケ-スで隔離されていることが特徴とされており、プログラムを作成する際にもそれらの特徴を持つものを作成すると、プログラムの保守、修正がしやすくなることからプログラムの作成の目安の一つとされています。
問題2
クラスをまとめたスーパークラスを持つことで複数クラスから継承すること
多重継承が正解です
オブジェクト指向のプログラミングではクラスと呼ばれるデ-タと関数の組み合わせがよく使われます。
この作成したクラスは子クラスと呼ばれるものを用いてカスタマイズでき、子クラスのカスタマイズ元のクラスを前提とする仕組みはクラスを継承すると呼ばれています。
カスタマイズ元がたくさんあるクラス(ス-パ-クラス)は2重に、3重にと継承が起こるので多重継承と呼ばれています。
また、他の選択肢のインヘリタンスは継承の別名を指していて、多重継承とは異なります。
また、カプセル化は関連する属性、操作を一つのクラスにまとめることです。
問題3
オブジェクト作成時に呼ばれる特殊な関数
コンストラクタが正解です
コンストラクタをアルファベットで表記するとConstructureとなります。
Conは「一緒に」という意味を表す接頭辞、Structureは「構造」という意味を表す英単語です。
クラスはデ-タと関数がひとまとまりになった構造であり、その構造が作成される時に一緒に実行されるのでコンストラクタと呼ばれています。
問題4
オブジェクト削除時に呼ばれる特殊な関数
デストラクタが正解です
デストラクタをアルファベットで表記するとdenstructureとなります。
Deは「離れる」という意味を表す接頭辞、Structureは「構造」という意味を表す英単語です。
オブジェクトを削除するとオブジェクト内の構造のデ-タもなくなってしまうのでデストラクタと呼ばれています。
問題5
他のオブジェクト内や普通の関数からアクセスすることが出来る関数
パブリックが正解です
Public(パブリック)は「公開されている」という意味を持つ英単語です。
プログラムにおいては、他の関数内や他のプログラムファイル内でも自由に使うことの出来るプログラムのことを指しています。
パプリックの関数を使用することで、関数の汎用性を高めたり、プログラムを作成しやすくはなるメリットがある代わりに、修正をする際に見る部分が増えるため、修正は大変になります。
プロテクテドは同じオブジェクト、または派生クラス内の関数からのみアクセス出来る関数、プライベートは同じオブジェクト内からの関数からのみアクセスすることが出来る関数です。
問題6
同じオブジェクト内からの関数からのみアクセスすることが出来る関数
プライベートが正解です
Private(プライベート)は「私的な」という意味を持ち、公開されていないという意味に近い感覚で使わます。
プログラムでも、これを適応して、作成した関数を呼び出せる場所を制限出来る機能を使うことができます。そして、この機能を使っている状態のことをPrivate(プライベート)といいます。
プライベート状態の関数は使用出来る範囲が限定されている分、プログラムの改修がしやすくなるメリットがある分、使用するには工夫が必要になるという特徴があります。
他の選択肢であるプロテクテドは同じオブジェクト、または派生クラス内の関数からのみアクセス出来る関数、プライベートは同じオブジェクト内からの関数からのみアクセスすることが出来る関数です。
問題7
同じオブジェクト、または派生クラス内の関数からのみアクセス出来る関数
プロテクテドが正解です
Protect(プロテクト)は「保護する」という意味を持つ英単語です。
プログラム上のプロテクトと呼ばれる参照の設定は、他のプログラム上でも使えるようにはなっているのですが、プログラムの保守上、安全とされている互いに関連している部分からのみ参照できるようになっています。
イメージとしては、子供が見ず知らずのものに接触しないようにするフィルタリングのようなものと考えると分かりやすいです。
問題8
コンパイル時に関数を全て展開して呼び出すこと
インライン関数が正解です
In(イン)は「~の中に」、Line(ライン)は「行」という意味を持つ英単語です。
メ-ルにおいてインラインとは、相手から送られてきた文章を引用して、相手の文章が書かれている行の中に自分の回答を書く方式です。
メ-ルのインラインと同様に、既に読み込まれているものを全て引用した上で間に追記されたものも一緒に読み込むことをインライン関数といいます。
オーバーライドは派生したクラスの中で基底クラスの中の関数を再定義すること、オーバーロードは引数の個数がや型が違っていれば別関数に同じ名前を与えられること
問題9
同じ名前を付けてしまうと名前からどちらか判断出来なくなってしまう場所のこと
名前空間が正解です
名前というものはコミュニティで個体を識別するものの一つです。そして、名前だけでは識別できない場合は○○の△△さんというような形で呼ばれます。
そのため、名前だけで個体を識別出来るコミュニティの幅を名前空間といいます。
名前空間とスコ-プの具体的な違いはややこしいですが。スコープは変数、関数を使おうとした場合に使うことが出来る有効範囲のことを示しています。
問題10
引数の個数がや型が違っていれば別関数に同じ名前を与えられること
オ-バ-ロ-ドが正解です
Over(オ-バ-は)「~を超える」という意味を持ち、Load(ロード)は「読み込む」という意味を持つ英単語です。
プログラム上の関数は引数(入力される数字)の数が異なっていたら本来動かないのですが、入力された数字が本来より多かった場合に読み込む関数を別に定義しておき、同じ関数によっても入力辺陬の数によって複数パターンの処理ができるようにする技術です。
これは、最初の入力変数が少ないパターンから見たら、変数を過剰に読み込んだ上で読み込みを行っているため、オ-バ-ロードと呼ばれています。
オーバーランはオブジェクト指向に関する用語ではなく、C言語系統で配列の指定のミスによって本来割り当てていないメモリ領域まで変数を書き換えてしまうことです。
問題11
派生したクラスの中で基底クラスの中の関数を再定義すること
オ-バ-ライドが正解です
Over(オ-バ-)は「超えて」、ride(ライド)は「乗る」という意味を表した英単語です。
オ-バ-ライドはクラス(という関数のパ-ツ)を子クラスと呼ばれるものでカスタマイズして使うときに、カスタマイズ元のクラスをカスタマイズ内で再定義することで、カスタマイズ元の関数を上書きすることです。
これがカスタマイズ元の機能に被さって、乗っているように見えることからオ-バ-ライドと呼ばれています。
また、他の選択肢のオーバーランはオブジェクト指向に関する用語ではなく、C言語系統で配列の指定のミスによって本来割り当てていないメモリ領域まで変数を書き換えてしまうことです。
問題12
オブジェクト指向における継承の別名
インヘリタンスが正解です
inheritance(インヘリタンス)は「相続」という意味を持つ英単語です。
オブジェクト指向のプログラムにおいては親クラスと呼ばれる汎用的なデ-タとプログラムの組み合わせがありますが、細かくカスタマイズしたいとなった時に「親クラスのこの部分を子クラスでは~のように上書きする」というようなことをプログラムで書くことが出来ます。
このことが、親から貰っているように見えることからインヘリタンスと呼ばれています。
問題13
オブジェクト、クラスの構造を記述したもの
デザインパターンが正解です
Design(デザイン)には「設計する、下図を作る」という意味が、pattern(パターン)には「(繰り返される)様式」という意味があります。
オブジェクトはプログラムの目的物を表しており、それをコ-ド化したものがクラスと呼ばれているので、オブジェクトとクラスの構造さえ分かれば設計は完成しているといえます。
クラス構造が一つ完成してしまえば、あとは同じものの繰り返しに近いことからデザインパターンとなっていると私は理解しています。
問題14
中に入るものによって同じ関数でもことなる処理を行えること
ポリモーフィズムが正解です
polimo(ポリモ)は古代ギリシアの「ポリス」が基になっており、「多様な」という意味を示しています。
また、~ism(~イズム)は「考え方」を示す接尾辞です。
機械やプログラムで多様性は意識しにくいですが、動物が入力しうるプログラムでは入った動物に応じて処理を変える(犬なら犬の処理、猫なら猫の処理)ように入ったものに応じて適切な処理を行えるようにするプログラムの考え方をポリモーフィズムといいます。