オブジェクト指向

出典: 謎の百科事典もどき『エンペディア(Enpedia)』
ナビゲーションに移動 検索に移動

オブジェクト指向とは、オブジェクト・オリエンテッドの訳語であり、プログラミング・パラダイムのひとつである。
ただし、提唱者によれば「『メッセージング主導』とでもしておけばよかった orz」だそうである。現在のようにメジャーな概念になるとは思っておらず、「誰かがもうちょっとマシなネーミングをしてくれるだろう」と思っていたらしい。
「オリエンテッド」は「東方指向」あるいは「東方志向」であり、アレクサンドロス大王の東征に由来し、「オリエンテーション」などの語源となった。アレクサンドロスは西欧の西端であるマケドニアの領主であり、(現在は、「東洋」には分類されない)ギリシャ文化やメソポタミア文化に憧れたらしく、積極的に東方文化を取り入れた(「光は東方にあり」というスローガンが知られている)。その結果としてギリシャ文化が地中海地方からマケドニアに至るギリシャ文化を形成し、ヘレニズム文化圏が構築された。ヘレニズムに関しては、別項に譲る。
そのため、オブジェクト“志向”なのか“指向”なのかについては議論がある。

概要[編集]

「オブジェクト」とは、要するに「もの」「実在(実体)」であり、メッセージングはオブジェクト間の「やりとり」「通信」「相互作用」である。したがって、実在していない(実体のない)オブジェクトにはメッセージは投げられない。したがtって、静的な(スタティックな)オブジェクトとして定義するか、明示的(つまりnew)または暗示的にコンストラクトされて「参照」と結びつけられてからでないといけない。オブジェクトと結びついていない参照にはヌル(null)が入っており、そこにチョッカイを出す(メッセージを投げる)と「ぬるぽ」になっげガッされるのがJavaの(ネット社会での)お約束である。
古くは、日本語では「もの」は「鬼」と書いた。アプリケーションが起動するとそこには「名前空間」が構築され、そのとき名前空間内に棲んでいる鬼が静的なオブジェクトである。これに対して動的なオブジェクトの宣言は「鬼の設計図」みたいなものである。この「鬼の設計図」にマジナイをかける(new する)とオブジェクトが一匹沸いて出るダイナミックなオブジェクトがある。
スタティックなオブジェクトは実行環境にただ一つある(同時に一つしかない)ので、いわゆる大域変数などを渡すときには便利(「シングルトン実装」という)であり、数値演算パッケージなどもスタティックなオブジェクトとして実装される。ダイナミックなオブジェクトは new したら new しただけ(リソースが尽きなければ)沸いて出るので、それぞれのオブジェクトはそれぞれ独立に動作する。
オブジェクトとオブジェクトの間では、一方のオブジェクトが他方のオブジェクトにメッセージを投げることで通信し、「で、結局どうなった?」というメッセージを受けることで結果を受けとる。一般的にはスタティックなオブジェクトの場合はメソッド一発で片付くが、ダイナミックなオブジェクトの場合は new するときに引数を渡し、「getなんとか」というメソッドを呼んで結果を得るか、「setなんとか」してから「getなんとか」して結果を受けることになる。
この「setなんとか」「getなんとか」「isなんとか」をいちいち用意するのが面倒臭いからイヤだという人はいるが、職業的な Java プログラマの中には(Web 系のシステムを開発するさいには、「NetBeans」というものがあり、JSPとセットになって使われる)「いや、それがいい。落ちつく。」という人もいる。Java は応用範囲が広いため、JSP を用いない非・Web 系のJavaプログラマには、これを変態扱いする人もいる。

プログラミング言語[編集]

オブジェクト指向型のプログラミング言語は多数あるが、現在システム開発の現場で使われているものとしては Java がある。二十年前だったらオブジェクト指向というプログラミング・パラダイムとしては目新しかったが、現在ではフツーなので Java を使っていても「貧乏人」程度のイメージしかない。なにしろ開発環境(Eclipseなど)と実行環境が無料であり、大抵の用途には用が足りるからである。同時に思ったより遅くないし、実行環境も選ばないし、面倒臭い点としてはファイルの数が増えるのとドキュメントを整理しておかないと同じコードを何度も書くような恥ずかしいことになってしまうことである。