• ベストアンサー

オブジェクト指向設計について

オブジェクト指向設計に興味を持って、いくつかオブジェクト指向の本を読んでみたのですが、 どうもオブジェクト指向に関する基礎知識の説明ばかりで、 オブジェクト指向でどのように設計するのか、どのように生かされるのか、 肝心な部分がいまいちピンときません。 オブジェクト指向による設計に重点を置いたお薦めの書籍などありましたら是非教えてください。

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

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.4

私も「オブジェクト指向のこころ」がお勧めです。 http://www.amazon.co.jp/dp/4894716844 通して読むと、オブジェクト指向の考え方が分かります。 他には下記のものもお勧めです。 「オブジェクト指向でなぜつくるのか」 http://www.amazon.co.jp/dp/4822281957/ 「アジャイルソフトウェア開発の奥義」 http://www.amazon.co.jp/dp/4797347783/ 「Code Complete第2版〈上〉」(6章にクラスの解説が有る) http://www.amazon.co.jp/dp/489100455X/

RabbitWrap
質問者

お礼

「オブジェクト指向のこころ」は、やはり良書のようですね。 「アジャイルソフトウェア開発の奥義」は第2版でC++からJavaに変更されてしまっているようで、少々残念ですが(自分はC++をよく使う者でして…)、デザインパターンの存在理由や設計の実践法をソースコードを通して説明されているようなので、大変良いと思います。 「Code Complete第2版〈上〉」は、レビューの内容からして、是非とも手元に置いておきたい一冊ですね。 書籍のご紹介、ありがとうございました。

その他の回答 (3)

  • bug_bug
  • ベストアンサー率78% (36/46)
回答No.3

私も良書に出会えるまではしばらくパラダイムチェンジができず、オブジェクト指向設計・開発のメリットがいまいちピンと来ませんでした。 手当たり次第に読んでた中で、確実に手ごたえを感じた2冊を紹介します。 「オブジェクト指向のこころ」 原書は洋本ですが、和訳が出ています。読み物として読んでるうちにパラダイムチェンジができました。 「オブジェクト指向における再利用のためのデザインパターン」 通称:GOF本 オブジェクト指向な設計の具体的なモデル例がてんこもり。 この2冊は読んだ後、書籍の価格を安いと感じました。 個人的には必読だと思っています。読破されていたらすいません。

RabbitWrap
質問者

お礼

「オブジェクト指向のこころ」 書籍レビューを見ると、この本でパラダイムチェンジできたという人が多いようですね。すごく良さそうです。 GOF本は難しそうですが、上の本と合わせて読むと、良いみたいですね。 書籍のご紹介、ありがとうございました。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

>>オブジェクト指向でどのように設計するのか、どのように生かされるのか、 肝心な部分がいまいちピンときません。 確かに、そういう面があると思います。それは、書籍や雑誌で、解っていない著者が誤った記述をしたり、出版社・セミナー主催者が一儲けしようと、味噌クソいっしょにしていろいろと売り込んだので、学習している人々がピンとこなかったり、開発現場の効率がかえって悪化したりしていたと思いますね。 実際に、C++を使ったプロジェクトで、継承を使いまくった開発があったのですが、2年と数億の開発予算を使った後、ボツになりました。途中からのプロジェクト参加でしたが、すごくわかりずらかったのを覚えています。(設計者がよく解っていなかったのだと思えます。) 私が解りやすいと思った説明は、「まつもとゆきひろコードの世界」に書かれていた以下の文章です。 現在のオブジェクト指向プログラミングを一番よく理解できる視点は、「オブジェクト指向プログラミングとは構造化プログラミングの延長だ」というとらえ方ではないかと思います。(P.42) なので、名著とされる「構造化分析とシステム仕様」とか複合設計の書籍等で解説されているメリットなど、構造化プログラミングをまず理解し、その上で、オブジェクト指向プログラミングを学ばれればいいのではないでしょうか?なお、Rubyの設計者である「まつもとゆきひろコードの世界」は、お薦めです。(でも、ある程度のオブジェクト指向プログラミングの経験がないと読みずらいと思います)

RabbitWrap
質問者

お礼

>「オブジェクト指向プログラミングとは構造化プログラミングの延長だ」 なるほど。多くの書籍がオブジェクト指向プログラミングと構造化プログラミングを比較し、別物として扱っている中で、この考え方は初めて聞きました。 構造化プログラミングは、ひと通り経験はあるのですが、さらに理解を深めてみようと思います。 「まつもとゆきひろコードの世界」は書籍レビューを見る限り、とても難しそうですが、参考にさせて頂きます。ありがとうございました。

  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.1

運用フロー全体の設計を行うオブジェクト指向デザインの事でしたらスミマセンわかりません。 プログラム作成におけるオブジェクト指向プログラミングの事でしたら オブジェクト指向をどのように生かすのかの前に、なぜオブジェクト指向が必要になったのかを理解したほうが良いと思います。 ※裏返すとオブジェクト指向プログラミング以前の方法論の欠陥とか欠点とかです。 実際問題、数Kライン程度の小規模なプログラムではオブジェクト指向でなくても全然困らなかったり、メリットがほとんど無かったりします。 ※Cで組んでもC++で組んでも大差ないような場合 技術的な方法論を説明している解説書はいくらでもあるので なぜオブジェクト指向が必要になったのかに焦点を当ててわかりやすく説明している本として 『オブジェクト指向でなぜつくるのか』ISBN0: 4822281957 出版:日経BP (初版:2004/6/3) をお勧めします。 多態性や多様性、隠蔽が必要な理由が分かれば使いどころも分かると思います。

RabbitWrap
質問者

お礼

>実際問題、数Kライン程度の小規模なプログラムではオブジェクト指向でなくても全然困らなかったり、メリットがほとんど無かったりします。 そうですよね。メリットが無いどころか、無駄にコストが掛かりそうな気がします。 確かに、必要性をよく理解していないのも、一つの原因かもしれません。 ご紹介して頂いた本、参考にさせて頂きます。ありがとうございました。

関連するQ&A

  • オブジェクト指向に関して。

    Javaの解説本を読んでオブジェクト指向プログラミングという物があることをしりました。その本には「オブジェクトはデータとそのデータを扱うための機能を持っている。この機能はメソッドと呼ぶ。クラスは設計図のような物で変数とメソッドから構成されている。設計図を実際に形にした物がインスタンスである。」と書いてありました。私はオブジェクト=クラスのような感じがしたのですが、実際のところオブジェクト=クラスでいいのでしょうか?  また、友人に話したところ、オブジェクト指向はサブルーチンに似ているといっていました。私はプログラミングの知識が全くないのでサブルーチンという物が何なのかわからないのですが、サブルーチンとオブジェクト指向の考え方は違うような気がするのです。友人に説明して納得させるにはどうしたら良いのでしょうか? ぜひ、力を課してください。

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

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

  • 実践的オブジェクト指向設計の本

    オブジェクト指向について勉強中です。 概念的なことを理解する本や、実際のプログラミングについて書かれた本は、割とあるのですが、設計時にどう生かすかがよくわかりません。 そういった内容の本でお勧めのものがありましたら教えてください。 よろしくお願いいたします。

  • オブジェクト指向設計の勉強(習得?)方法について

    現在Javaでのプログラミングを始めて3ヶ月ぐらいのプログラマです。 みなさんオブジェクト指向での設計はどのように勉強されていますか? 「10日UMLで覚えるUML」などの書籍で勉強して、一応UMLの表記は少しは覚えたのですが、 肝心のオブジェクト指向での設計というものがぜんぜん身についていません。(頭悪くて・・・) みなさんの勉強方法や、お勧めの講習会など ありましたら、ぜひおしえてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • オブジェクト指向とは

    オブジェクト指向の本をたくさん読んでみましたが 全部書いてあることが難しくていまいちピンときません。 要は簡単にいうと、クラスを作ってその中にメソッドを 作ってロジックの中でその中のクラスを使い分けていく という考え方がオブジェクト指向というのでしょうか? 簡単でいいのでわかりやすくオブジェクト指向というのを教えていただけないでしょうか?友人に聞くとオブジェクト指向を説明すると2時間はかかると言われてしまいました。

    • ベストアンサー
    • Java
  • オブジェクト指向全般、及び、クラス設計について。

    オブジェクト指向全般、クラス設計についての質問です。 当方、C#の日曜プログラマであり、数年まえから趣味のプログラミングを楽しんでおりました。 これまではあまりOOPに関する深い部分の理解をしないままなんとなくプログラミングをしてきましたが、このほど、そこらへんの理解を深めるべく名著と呼ばれる以下の書籍を買い漁って理解を深めようと模索しておりましたが、どうも、しっくりきません。 リファクタリング プログラミングの体質改善テクニック(マーチンファウラー) オブジェクト指向でなぜつくるのか(平澤章) デザインパターンとともに学ぶ オブジェクト指向のこころ(アラン・シャロウェイ) (これ以外に名前は失念してしまいましたが、UNLの書籍も読みました) それぞれの書籍を読んで「うん。なるほど。」というある程度の理解はできているつもりですが、如何せん、自分のコードで・・・となると、ちょうど作文の最初の一文が見つから無いときのような、そんな感覚に襲われてしまします。 これまでの自分のプログラミングというのは、「動けば良い」という部分が最優先であり、かつ、それのみにしかこだわって無かったことも原因としてはありそうです。 その中でも、特に戸惑ってしまうのが、「何をクラスにするのか」という最も基本的な部分です。 今習作として、2ch用ブラウザのコードを書いていますが クラス候補としていくつかのものを、確信の無い状態で挙げてはみますが ワード及び原則としての「責務」「単一責任の原則」「高凝集度」「疎結合」・・・ (それぞれの用語や原則の意味は、ある程度理解しているつもりですが) これらの用語の海で溺れてしまっている感覚で、何をクラスとすればよいのか?という部分で すでにアップアップしているような感じとなってしまいます。 また、個々のオブジェクトの関連において、あるオブジェクトを保持するのはどのオブジェクトである べきか?また、あるオブジェクトにメッセージパッシングするのはどのオブジェクトであるべきなのか?等など・・・このあたりについても、一向に頭の中の霧が晴れてくれません。 このような、悩みを解消する考え方、方法、その他おすすめの書籍でも構いませんが、ご助言いただけませんでしょうか? よろしくおねがいします。

  • オブジェクト指向で設計・プログラミングできるようになるために…

    どう勉強すればいいのでしょうか? 一応javaを少しずつ勉強していて、簡単なアプレットやウィンドウアプリケーションは作れるようになったと思うのですが、オブジェクト指向で設計?モデリング?となると、手が出ません…。 また、デザインパターンというもの(よくは知りません)を勉強するのとオブジェクト指向を勉強するのとは関係がありますか? よろしくお願いします。

  • オブジェクト指向の教え方

    新入社員にJavaを教えているところなのですが、オブジェクト指向プログラミングをどのように教えていいか困っています。 全員がC言語研修を受講済みで、さらにJava言語も、継承やオーバーロード、例外まで一通り教えて、一応理解しています。 そこで、次のレベルとして、C言語風のプログラミング(「プログラム=関数の集まり」の考え方)から、オブジェクト指向(「プログラム=オブジェクトの集まり」の考え方)に意識改革させたいところです。 問題領域をオブジェクトの集まりとしてとらえ、そこからクラスを抽出していく、という説明がよくありますが、 「何をオブジェクトにするのか」「どのようにクラスを抽出したらいいのか」の部分を詳しく教えたいのですが、どのように説明したらいいでしょうか。また、参考になるWebサイトなどありませんでしょうか? 自分が普段作るときは、ほぼ「勘」でクラス設計していますので、それでは教えられなくて困っています。よろしくお願いします。

    • ベストアンサー
    • Java
  • オブジェクト指向分析・設計(OOAD)の重要性

    オブジェクト指向を用いた開発工程について、分析・設計工程が重要だ、分析・設計モデリングについてよく学んでおくべきだとよく言われますが・・・どうしてなんでしょうか? 私個人としては、オブジェクト指向言語(JAVA)による実装の方がよっぽど重要のように思うのですが。。。 すごい基本的な質問かもしれませんが、OOADがどれぐらい、またなぜ重要なのか教えてください。

  • オブジェクト指向について

    オブジェクト指向について オブジェクト指向について、頭があまり良くない僕でもわかるような説明もしくはサイトを教えて頂けないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう