• 締切済み

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

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

みんなの回答

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.3

オブジェクト指向設計の特徴は以下の通りです。 (1) データとその処理方法(メソッド)をひとまとまりのものとして扱います。データは原則として   直接外部からアクセスされるのではなく、必ずメソッドを使って処理されます。   [情報隠蔽・カプセル化・抽象データ型] (2) 従来のやり方では、あるデータが他のデータを持っている、あるデータが他のデータに   含まれるという関係(HasA関係)に着目して構造化を図るのが普通でしたが、オブジェクト指向設計   では、それに加えて、あるデータというか概念が他の概念の一種特別な場合であるという関係   (IsA関係)に着目して構造化を図ります。特別な概念は一般的な概念の持っている性質を継承します。   [継承・導出クラス・フレーム理論] (3) 従来のやり方では、処理の一部分、共通な処理などをサブルーチンとして独立させることにより、   処理の構造化を図っていました。オブジェクト設計では、焦点が処理ではなくオブジェクトに   なりますから、ある処理(メソッド)の共通部分を独立させるというよりも、その中で他の   オブジェクトのデータの処理に関わる部分を他のオブジェクトに委託するという形になります。   (厳格なオブジェクト指向の考え方では、オブジェクトから他のオブジェクトに送られる   メッセージと、メッセージを送られたオブジェクトが実際に処理するメソッドを区別しますが、   最初はそこまで意識する必要はないかもしれません。)   [メッセージ・アクター理論] あまり分かりやすい説明になってないですね。[]内に関連するキーワードを挙げておきましたから、 参考にして下さい。

takenoaki
質問者

お礼

お答えありがとうございます(^^ 関連キーワードまであげていただいてありがとうございます。関連キーワードに注意し、キーワードについても改めて資料の読みなおし、調べなおしもしたいと思います。一応目的もあって、今勉強しているのですが、資料・概念の丸覚えよりもなるべく自分の中で理解していきたいので、キーワードはとても助かりました。

  • aton
  • ベストアンサー率47% (160/334)
回答No.2

 少なくとも単なるモジュール化には「継承」の概念はないと思います。  もっと重要な違いは,オブジェクト指向ではデータ構造(=クラス)とアルゴリズム(=メソッド,メッセージ)が密結合している点(これを「encapsulation」と呼ぶのかな?)でしょうか。単なるモジュール化では,分割を意識して作ることはできても強制することはできませんから。

takenoaki
質問者

お礼

お答えありがとうございます(^^ お礼が遅れてすみません。 おそらく、そんな意図はなかったと思いますが、、、ちょうど一番最初にお答え頂いたymmasayanさんの「いきいきとしている」という言葉とあいまってなんとなく自分の中で霧の奥の影が濃くなってきた気がします。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

> オブジェクト指向とモジュール設計のどちらも、システム(プログラム全体)を機能ごとに分割して各パーツごとにプログラム設計~テストまでを行ない、完成させたパーツを組み合わせてシステムを完成させると言う解釈をしています。 この解釈自体が間違っているのでしょうか? 表面的に見たらよく似ていますから、解釈が間違っているわけではありません。しかし大きな違いは、「オブジェクトの特性」にあります。 オブジェクトは、あくまでも自然界(人工界も可)に存在している個体に対応して定義されたものです。だから個々のオブジェクトが生き生きと活動できます。 ところがモジュールと言うのは、設計の都合上、人間の意思で分割されたに過ぎません。モジュールは自然界の「物:オブジェクト」に対応していないのです。 この「自然界に存在する個体を忠実に表現する」「それぞれのオブジェクトが生き生きと個人主義で活動出来る」と言うのが「オブジェクト指向」です。・・・私の勝手な思い込みです。済みません。

takenoaki
質問者

お礼

お答えありがとうございます(^^ 御礼が遅くなってすみません。 うーん・・・大きな違いは「オブジェクトの特性」ですか?生き生きとしている・・・オブジェクト指向型のプログラム言語といわれるjavaとかを勉強して簡単なプログラムを組む・・・とか経験をしてみたら、なんとなくわかるようになるかなぁ。。。机上の空論をやっている今現在、なかなか感覚的なトコロが追いつけないデス。私にもっと、経験さえあれば、きっと感覚的に言ってくださった分より飲みこみやすかったとは思えるのですが、何分私自身のレベルがまだ低くて。なんだか申し訳ないです。。。

関連するQ&A