ハマっている「お菓子」を教えて!

「オブジェクト指向のプログラム」という言葉を
プログラミングの話をしているときに聞きますが
よくわかりません。
どなたか素人でもわかるように教えて下さい。

A 回答 (4件)

こんなとこで説明すると長くなります。



下記URLでもゆっくり読み込んでください。

参考URL:http://www.atmarkit.co.jp/fjava/devs/object01/ob …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
こんないいサイトがあるのですね。

お礼日時:2003/11/18 21:44

こんにちは。

お使いの言語は 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/ob …
http://www.amy.hi-ho.ne.jp/~lepton/program/p3/pr …

ここからはセールスマンモードになりますが、
個人ベースで OOP をするなら、Ruby を猛烈に推薦させていただきます。
(Python でもいいけれど。Perl はやめておきましょう)

騙されたと思って Ruby をインストールし、文字列やファイルをいじる
スクリプトを書きまくってみてください。
自らクラスを作らなければならないことは初めはないと思います。
組み込みのクラス・メソッドだけでも十分に仕事はこなせますから。
あなたが Ruby にすっかり馴染んだ頃、OOP 解説書を開いてみると
「なーんだ、こんなことが言いたかったのか!」と目から鱗が落ちることは請け合い。
少なくとも、何が書いてあるかとっかかりすらつかめない、
ということはなくなっているはずです。
http://www.ruby-lang.org/ja/

以上、ヘボスクリプタのたわ言でした。
さらにお聞きになりたいことなどございましたら、
ご遠慮なくリクエストを。お返事お待ちしております。
プロフェッショナルの方々、間違っていたら遠慮なく突っ込んでください^^

参考URL:http://www.rubyist.net/~matz/?year=2003;month=3Q …
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
返事が遅れてすみませんでした。
参考にさせてもらいます。

お礼日時:2004/01/19 12:34

オブジェクト指向は哲学的な面と、プログラム的な面と両方あって、市販本の説明は、両者はしっくり来ない。


我流での理解。なんのことはない、突き詰めると
(1)プログラムコードでXXX.YYYの表現を可能にし、徹底する。
(2)XXXがオブジェクトで、YYYはプロパティやメソッドである。
オブジェクトも階層SSS.TTTを考える(構成の1部であると言うこと)。
(3)詰まるところ、メモリに実装された時の、入り口(番地に名を付けたもの)であり、機能の1塊(データ付きプログラム)をオブジェクトといっている。エントリポイントのようなもの。
(4)昔のプログラムはモジュールの先頭しか入り口がなかったが、プロパティやメソッドを設ける方式により、入り口が多(点)様化する(細切れ的になる)ので、使いまわしが効くし修正も範囲限定で出来る。
なにを言っているか判らないかも知れませんが、思い当たるふしがあれば幸いです。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
返事が遅れてすみませんでした。

お礼日時:2004/01/19 12:30

構造化プログラミングはご存知ですか?

    • good
    • 0
この回答へのお礼

昔にプログラミングの経験がありますのでその辺
は分かりますが・・・。

お礼日時:2003/11/18 21:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!