- ベストアンサー
オブジェクト指向のプログラム??
「オブジェクト指向のプログラム」という言葉を プログラミングの話をしているときに聞きますが よくわかりません。 どなたか素人でもわかるように教えて下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんなとこで説明すると長くなります。 下記URLでもゆっくり読み込んでください。
その他の回答 (3)
- nightowl
- ベストアンサー率44% (490/1101)
こんにちは。お使いの言語は Java ですか、それとも C++ ですか? (Ruby だと私的には嬉しい) オブジェクト指向(OOP, Object-Oriented Programming) の三本柱と世に言われるのは以下のものです。 1)継承 2)カプセル化 3)多態性(polymorphism. ポリモ(ー)フィズム、ポリモルフィズムとも) それぞれの説明は No.1 の方の参考 URL を読んでいただくとして、 あとは「クラスライブラリ」も入りますか。 逆説的になりますが、別にオブジェクト指向言語でなくとも OOP はできるのですよ。 (また、オブジェクト指向言語であってもこの全部を兼備しているとは限りません) ベテランのプログラマなら、C 言語でもこれらをある程度意識し、 自作のライブラリを蓄積して「差分プログラミング」を実現したり、 構造体を活用しカプセル化を図ったりしていました。 オブジェクト指向言語とは、現場で活躍するベテランプログラマの そうした暗黙の経験知を言語仕様として結実させたものです。 「ソフトウェアパターン(デザインパターン)」も、 SE の経験知をルール化したものといえましょう。 システム設計の上でよく現れるパターン、いわば定石を分類したものですね。 巷の OOP 解説書には難しいことがいっぱい書いてありますが、 そのような本の多くはエンタープライズ企業を対象にした 大規模プログラミングの手法を説くもので、 個人プログラマには直接適用できません。 プログラミングにおいて最も大切なものは何かといえば、 それは「データ」です。プログラムが解決すべき問題に対して 適切なデータ構造を決定することができれば、プログラムの半分は成ったも同然。 「アルゴリズム+データ構造=プログラム」(ニクラウス・ヴィルト)なのですから。 そして、これまではアルゴリズムの裏方に隠れがちだった 「データ」というものを舞台の上に引き出し、主役に抜擢した、 それがオブジェクト指向なのだと私は考えています。 参考 URL はオブジェクト指向スクリプト言語 Ruby の生みの親、 まつもとゆきひろさんの日記で、彼のとらえた OOP 観が語られています。 なお、「箱モデル」の題のあるものは Ruby 言語独特の仕様について 論じたものですので、今は読む必要はありません。 私には、「オブジェクトとはアイデンティティを有するもの」 というあたりが面白かった。 前橋和弥さんの「OOP の本質はマルチプルインスタンスだ」、 すなわちインスタンスや付随するメソッドは複数生成して持ち歩けるものだ という主張にも重なり合うかもしれません。 だって、アイデンティティが危機に晒されるのは同様のものが複数存在し、 本来の自分が分身と区別がつかなくなることですものね。 http://member.nifty.ne.jp/maebashi/programmer/object/index.html http://www.amy.hi-ho.ne.jp/~lepton/program/p3/prog303.html ここからはセールスマンモードになりますが、 個人ベースで OOP をするなら、Ruby を猛烈に推薦させていただきます。 (Python でもいいけれど。Perl はやめておきましょう) 騙されたと思って Ruby をインストールし、文字列やファイルをいじる スクリプトを書きまくってみてください。 自らクラスを作らなければならないことは初めはないと思います。 組み込みのクラス・メソッドだけでも十分に仕事はこなせますから。 あなたが Ruby にすっかり馴染んだ頃、OOP 解説書を開いてみると 「なーんだ、こんなことが言いたかったのか!」と目から鱗が落ちることは請け合い。 少なくとも、何が書いてあるかとっかかりすらつかめない、 ということはなくなっているはずです。 http://www.ruby-lang.org/ja/ 以上、ヘボスクリプタのたわ言でした。 さらにお聞きになりたいことなどございましたら、 ご遠慮なくリクエストを。お返事お待ちしております。 プロフェッショナルの方々、間違っていたら遠慮なく突っ込んでください^^
お礼
回答ありがとうございました。 返事が遅れてすみませんでした。 参考にさせてもらいます。
- imogasi
- ベストアンサー率27% (4737/17069)
オブジェクト指向は哲学的な面と、プログラム的な面と両方あって、市販本の説明は、両者はしっくり来ない。 我流での理解。なんのことはない、突き詰めると (1)プログラムコードでXXX.YYYの表現を可能にし、徹底する。 (2)XXXがオブジェクトで、YYYはプロパティやメソッドである。 オブジェクトも階層SSS.TTTを考える(構成の1部であると言うこと)。 (3)詰まるところ、メモリに実装された時の、入り口(番地に名を付けたもの)であり、機能の1塊(データ付きプログラム)をオブジェクトといっている。エントリポイントのようなもの。 (4)昔のプログラムはモジュールの先頭しか入り口がなかったが、プロパティやメソッドを設ける方式により、入り口が多(点)様化する(細切れ的になる)ので、使いまわしが効くし修正も範囲限定で出来る。 なにを言っているか判らないかも知れませんが、思い当たるふしがあれば幸いです。
お礼
回答ありがとうございました。 返事が遅れてすみませんでした。
- trozky
- ベストアンサー率9% (32/341)
構造化プログラミングはご存知ですか?
お礼
昔にプログラミングの経験がありますのでその辺 は分かりますが・・・。
お礼
回答ありがとうございます。 こんないいサイトがあるのですね。