オブジェクト指向

出典: フリー教科書『ウィキブックス(Wikibooks)』
移動: 案内検索

メインページ > 工学 > 情報技術 > プログラミング > オブジェクト指向

Wikipedia
ウィキペディアオブジェクト指向の記事があります。
Wikipedia
ウィキペディアオブジェクト指向プログラミングの記事があります。

それは求められて登場した[編集]

オブジェクト指向、いまやプログラミングを語る上で欠かすことが出来ない程に知れ渡っているこの言葉に、厄介なイメージを抱いている人は少なくないのではないでしょうか。難しく面倒な物、と考えている人は少なくないのではないでしょうか。しかし、元来オブジェクト指向は開発をより楽にするための技術として、求められて登場したものなのです。ではなぜそれがかえって厄介な物として認識されているのでしょうか。オブジェクト指向が何を目指して、どのようにして楽に開発をしようと考えて作られた物なのか、という点が欠けていたからではないでしょうか。ここでは、個々の言語でのオブジェクト指向の実装についてではなく、そういった実装が何のために存在するのかを理解することで、オブジェクト指向を厄介な物から便利な物にすることを目指します。

考え方[編集]

オブジェクト指向の基本的な考え方は至って単純です。それは、

型から実体を作る

ということです。「クラス」と呼ばれる「設計図」から、本物のデータを作るのです。

この「本物のデータ」は、一般的には「オブジェクト」や、「インスタンス」と呼ばれています。

オブジェクト型[編集]

オブジェクト型は、一般的な値型とは考え方が違います。

値型では、

a = 2
b = 3
a = b
a = 4

とすると、a = 4、b = 3 になります。しかし、オブジェクト型では、a = 4、b = 4 となります。 こうなる理由は、値型とオブジェクト型の仕組みが違うからです。

値型では、変数自体が値を持っているという考え方をします。

値型の場合

しかし、オブジェクト型の場合は違い、メモリへのポインタという考え方です。

オブジェクト型の場合

メモリのどこかへオブジェクトが作られ、オブジェクト名というのはリファレンス名であり、メモリを参照しているだけである。

これがオブジェクト型と値型の違いです。これをしっかり抑えておかないと、後々混乱してしまうことになります。

カプセル化[編集]

Wikipedia
ウィキペディアカプセル化の記事があります。

大規模なソフトウェアであればあるほど、デバッグが大変で煩雑になります。

そのため、関数やデータの中身を秘匿し、コンパイラの静的なレベルでアクセスが不可能になるようにすることがカプセル化の目的です。

こうすると、クラスにバグがないと証明できれば、オブジェクトの使い方が間違っていると分かり、デバッグが楽にできるようになります。

クラスのデータ(変数)は極力全てを隠すか、書き込み不可にし、関数しか使えないようにするべきです。

継承[編集]

このページ「オブジェクト指向」は、書きかけです。加筆・訂正など、協力いただける皆様の編集を心からお待ちしております。また、ご意見などがありましたら、お気軽にノートへどうぞ。