• ベストアンサー

オブジェクト指向プログラミングはどのように使用(適用)する?

あるシステム、またはフリーソフトでもいいのですが、 オブジェクト指向によるプログラミングを行おうとするとき、 そのシステム(ソフトウェア)全体に使用(適用)するのでしょうか? 書籍で学んでいると、オブジェクト指向プログラミングをする場合には オブジェクトとオブジェクトを組み合わせてゆくように書かれています。 もちろん、仕組みはそうではあると思いますが、 無理にシステム全体でオブジェクト指向プログラミングをする必要はなく、 たとえばシステム内である処理を行おうとしたとき、 オブジェクト指向プログラミングの方がいい場合に適用すればいいのではないでしょか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ballville
  • ベストアンサー率47% (233/487)
回答No.1

OOPはその由来を考えても、大規模アプリケーションほど威力を発揮します。 部分的に使うより、全体の設計をOOPの手法で行ったほうが効果的ではないでしょうか。 ですから、部分的にOOPを使うより、部分部分は手続き的にプログラミングされていても、全体をひとつのアプリケーションとして組み上げる際に、OOP的手法を用いるほうが良いと思います。

sambarunba
質問者

お礼

だいぶ返事が遅くなりまして申し訳ありませんでした。 回答ありがとうございました。 まだまだ実感が湧いていませんが、少しづつ学んでいこうと思います。 ありがとうございました。

関連するQ&A

  • 本当にオブジェクト指向プログラミングっていいのでしょうか?

    いつもお世話になっております。 VC++初心者です。 現在、VC++6.0、MFCのソース修正で四苦八苦しています。 (コーディングするよりも。ソースを追うので苦労してます。) (初心者の私が言うのも難ですが、オブジェクト指向云々言う前に  ソースのif文節が異常に長かったり、3重以上ループが出てくると  とても嫌になります、、、) 一般的(?)に、プログラミングは 手続き型プログラミングよりオブジェクト指向プログラミングが 開発効率がよい、と重宝されているようですが、 どうも納得できていません。 (その手の書籍を2,3冊読みましたが消化不良に終わっています。) 個人的には、手続き型プログラミングの方が好きです。 というのも、慣れているからかもしれませんが、 ソースが追いやすいし、見やすいと思います。 逆にオブジェクト指向プログラミングでは、 ・継承されすぎると、基本クラスまで追うのが一苦労。 ・インスタンスをつくってから、関数を呼ぶのが面倒な気がする。  (手続き型なら関数呼び出しのみで済みます。) ・インスタンスをdeleteし忘れて、メモリを圧迫する危険がある。  (ガーベージコレクションというものもあるようですが、  どこで何を消しているか不安です。) ・ソースを追いにくい(慣れの問題なのでしょうか、、、) そこでですが、 「手続き型は~~で大変だけど、オブジェクト指向ならこんなにすばらしい」 というような対比的に具体例を挙げて説明されている 書籍、サイトの紹介、または、よい助言を頂けませんでしょうか。 また、上記に伴い、 ・手続き型で組んで失敗した例(オブジェクト指向型にすれば良かった例) ・オブジェクト指向型で組んで失敗した例(手続き型にすれば良かった例) も宜しければ教えて頂きたく、お願いします。 (成功例のみよりも、失敗からの成功例を教えて頂けると嬉しいです。) 長くなりましたが、宜しければご教授下さい。

  • オーバーロードはオブジェクト指向プログラミングの枠組みで語られるべきか

    一部の書籍やサイトでは、オーバーロードがオブジェクト指向プログラミングの特徴であるかのような記述が見受けられるのですが、私はそれに疑問を感じます。 オーバーライドはクラス・継承に関わるためOOP特有のものであると思うのですが、オーバーロードはクラスとは全く切り離して考えられるからです。 確かにオーバーロードはクラスを作るときに有用な技術ではありますが、例えばC言語のような非オブジェクト指向言語でオーバーロードが使えたとしても、それなりに機能するはずです。 ひょっとしたら 「オーバーロードもオーバーライドもポリモーフィズムだろう」 ↓ 「ポリモーフィズムといえばオブジェクト指向」 のような話の展開でしょうか(いや、さすがに無理があるか…)。 皆様はどうお考えでしょうか。 ご意見お聞かせ下さい。

  • オブジェクト指向プログラミング

    大学の情報システムの授業で、様々なパワーポイントを作って発表しています。 現在オブジェクト指向プログラミングについてのパワーポイントを作成中なのですが、私自身あまり良く理解出来ていないためなかなか進みません。 それに関連した例などが載っている分かりやすいサイト等がありましたら教えて下さい。 また、説明して下さる方もいましたら是非! よろしくお願いします。

  • オブジェクト指向プログラミング学習向けのサンプルプログラム

    「これは参考になるよ」というような、 オブジェクト指向プログラミング学習向けのサンプルプログラムを教えていただけませんか? 言語はDelphiです。 Delphiに限らず、他言語(Java、C#、C++あたり)でも結構です (移植しますので、出来ればCUI、GUIが少ないものが理想です) よろしくお願いいたします。 Delphiにてオブジェクト指向プログラミングを学んでいます。 書籍等で、基本的なことは学びました。 理解度およびスキルを上げるために、実際にプログラミングしたいと思います。 (入門書を利用してや、 自分で考えながらのテスト的なプログラミングには限界を感じてまして^^;)

  • オブジェクト指向とモジュール設計

    プログラミング設計の基礎について勉強しているのですが、どうしても、オブジェクト指向とモジュール設計の違いがわかりません。 どちらも、システム(プログラム全体)を機能ごとに分割して各パーツごとにプログラム設計~テストまでを行ない、完成させたパーツを組み合わせてシステムを完成させると言う解釈をしているのですが、オブジェクト指向とモジュール設計のちがいがみつけられません。 この解釈自体が間違っているのでしょうか?

  • AS3.0のオブジェクト指向プログラミング学習法について

    AS3.0のオブジェクト指向プログラミング学習法について これまでAS2.0でフルフラッシュのサイトを作ってきたのですが、 そろそろAS3.0を勉強しようかと思っております。 AS3.0ではオブジェクト指向プログラミングが重要らしいのですが、 どうやって勉強したらいいのでしょうか?いろいろ調べてみたのですが、 良い教材/WEBが見つかりません。 サイト構築を視野に入れたAS3.0のOOPの学習に参考になりそうな 書籍/WEBなどありましたら、教えて下さい! また、AS3.0に限らず、みなさんのOOP学習法も教えて頂ければ幸いです! よろしくお願いします!

  • オブジェクト指向の間違いと改善案について

    オブジェクト指向というより オブジェクト指向プログラミングについての間違いと改善案をブログに書いてみました。 http://chaosblogchaos.blog.fc2.com/?no=2 この考え方に間違いがあるでしょうか? 説明不足の点はないでしょうか? よろしくお願いします。 以下ブログの内容 ---------- ■カオス指向(仮) カオス指向(仮)とは、オブジェクトに処理を追加・削除することでオブジェクトの振る舞いに無限性を持たせる試みです。 カオス指向(仮)ではデータが主体となり、木構造で保持します。 (ファイルフォルダで例えると、フォルダがオブジェクト、ファイルがプロパティに当たるイメージです) 処理を追加・削除が可能なことからプロトタイプベースがもっとも近いですが、 オブジェクトが親子関係を持つことと オブジェクトの親子関係から処理が影響を受ける事が異なります。 ●オブジェクトの内容  ・配列か連想配列で子オブジェクトを保持できます。    オブジェクトどうしの強い関係を意味し、親が削除される場合、子も削除される関係にあります。    オブジェクトはルートからの木構造の中に必ず存在する事になります。  ・別途、変数領域を確保する。    処理で使用する値を保持します。    オブジェクトどうしの弱い関係を保持できます。  ・処理を持つ。    オブジェクトに処理を持たせることができるます。    プロトタイプベースと異なる点は、    オブジェクトが処理を持っていても、オブジェクトがその処理をするわけでは無く、自身と子オブジェクトに対して適用され、”認識タイプ”を持つ場合に処理します。  ・”認識タイプ”を持つ。    処理の実行を制御します。認識タイプを含むかどうかで処理を行うかどうかを決定します。    オブジェクトのクラスは”認識タイプ”で実現可能と考えて問題ありません。 ●”認識タイプ” オブジェクト指向なら、 人は歩く、話す、・・・。Aさんは人。Aさんは話す。 カオス指向なら、 歩けるなら歩く、話せるなら話す、・・・。Aさんは歩ける、話せる、・・・。Aさんは話す。(歩ける・話せるを認識するようにした場合) 人は歩く、人は話す、・・・。Aさんは人。Aさんは話す。(人を認識するようにした場合) のどちらでも作成が可能で、 話せるなら話す、・・・。の場合、ウサギAの”認識タイプ”に話せるを追加することで、ウサギAは話せるようになります。 話せるウサギは実用的ではありませんが、 特定ユーザーのアクセスログだけ出力したい場合は、 処理を用意し、対象ユーザーに”認識タイプ”を追加することでログ出力処理を追加することが出来ます。 ●木構造と処理 ユーザー   日本     Aさん     Bさん   アメリカ     Cさん とある場合、 全ユーザーの処理をユーザーに保持 日本用の処理がある場合、日本に アメリカ用の処理がある場合、アメリカに処理を追加します。 そうすることでAさんは日本の処理、Cさんはアメリカの処理が行われます。 ●同一処理による関係 処理には優先順位が存在し、その順番で処理します。 処理A、処理Bとある場合、処理Aの中で元処理として実行します。 処理Aの中で元処理を行わない場合、処理Bは行われません。 ■カオス指向(仮)でどうなるか? ・幾つかのデザインパターンが不要になります。   デコレータ・コンポジット・ステートパターン等 ・多重継承らしきものが出来るようになります。   ※根本から違うので、多重継承らしきものとします。 ・循環問題が発生しませんない   ファイルフォルダのような木構造では循環は起こりえない。 ■オブジェクト指向プログラミングの問題点 オブジェクトにつき1クラスという決め付けが オブジェクト指向プログラミングにはあったのではないかと考えております。 オブジェクト指向では、 オブジェクト:クラス:継承クラスは1:1:1で、1:1:*は条件により可能ですが原則不可能。 カオス指向では、 オブジェクト:クラスは1:*と頭からクラスを複数持たせることで多重継承らしき形が実現可能ということです。 クラスの継承がなくなっていますが、クラスを複数持たせる事とクラスに順番を持たせることで継承が可能です。 オブジェクト指向プログラミングでは、オブジェクトにつき1クラスという決め付けが継承というシステムを作り 多重継承を難しくしたのではないかと考えております。

  • オブジェクト指向プログラミングの多態性のメリット、目的は?

    オブジェクト指向プログラミングを学んでいます。 基本概念の多態性がどうも理解できません。 メリット、目的はなんなのでしょうか? 上位クラスを継承し、 その継承されたクラスのメソッドを上書きするということと何が違うのでしょうか? 学習の参考にしている書籍の中には ”多態性を使ったオブジェクト指向プログラミングの典型例”として、 異種リスト(=上位型に下位型を代入し、一族のオブジェクトを一括管理する)を紹介しています。 多態性はこのような使用のみを目的としているのでしょうか?

  • オブジェクト指向Perlの勉強の仕方について

    今までPerlで掲示板などを自作した事があるのですが、オブジェクト指向をまったく取り入れていません。 オブジェクト指向でないPerlプログラミングについてはおおよそ理解しているつもりなのですが、 オブジェクト指向Perlについては全く理解できていません。 書籍を探しても、Perlについての書籍は大抵が初心者向けのものか、私にとっては難解なもの(オライリーなど)ばかりで、ちょうどいい程度の書籍が見当たらないのですが、 何かオススメの書籍がありましたらご紹介ください。 ---参考:私が理解している範囲--- 1.Perlプログラミングの基礎 変数、配列、ハッシュなどのデータ型 ループやサブルーチン、ライブラリなどの構造 2.オブジェクト指向について MacromediaFlashのActionScriptがある程度 理解できていますので、 「オブジェクト指向とは何か」 は多少理解しているつもりでいます。 (錯覚かもしれませんが) 3.目的 PerlMagickなどのパッケージを利用したいのだが、 利用方法がわからないため ------------------ 以上、身勝手な質問で恐縮ですが、 よろしくお願いします。

    • ベストアンサー
    • Perl
  • オブジェクト指向の間違いを発見して得られるもの

    オブジェクト指向・オブジェクト指向プログラミングにおける間違いを発見等した場合、お金等なにか得られるものはあるのでしょうか? また、お金等にするには何をしたらいいのでしょうか? よろしくお願いします。

専門家に質問してみよう