• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オブジェクト指向の勉強にちょうど良いソースコードはありませんか?)

オブジェクト指向の勉強にちょうど良いソースコードは?

matoro6173の回答

回答No.2

再度投稿させて頂きます。 グローバル変数の問題は、ほとんどのオブジェクト指向のプログラミング言語での問題でもあります。 ある設定用のグローバルな変数がどうしても必要な場合は、 大域になる順に決めるとすれば ・グローバル関数に共用変数を持たせそれを返すメソッドを用意する ・シングルトンパターンを代用し、直接の参照をさせないようにする ・基底クラス(継承元のクラス)に共用変数を持たせ、カプセル化する  これにより継承したクラスのみが扱える変数にする ・引数として扱う ※共用変数とはC++で言うstatic変数です。  C++ではクラスのstaticメンバ変数は共用となり、  継承先の、どのクラスでも一つの変数を参照します。 となります。 下に行くほど結合度は低くなります。 上の二つはグローバル変数とほとんど同じですが、 アクセスの制限や特殊なメソッドを設けると変更があった場合に比較的楽に書きなおせます。 もしグローバル変数を直接使用していたら、使用していた箇所全てを書きなおさなければなりませんね。 ここら辺の設計は、オブジェクトとして収まりが良い方法を取り可読性を考えるか 実用性を考え結合度を低くするかを決めなければなりません。 (この問題こそがオブジェクト指向はオブジェクトで考える云々と矛盾しています。) フレームワーク等を作成したり、単体テストを行うような大規模なプロジェクトであれば 結合度は低い方が後に問題は少なくなります。 ただし記述量は増えますけど。

msx68000
質問者

お礼

回答ありがとうございます。 ご紹介いただいた本は近所の書店にありまして、 見たところよさそうだったので購入しました。 グローバル変数は引数にできないか見直します。 でも、設計が適切でなかったりすると、 アクセスできない変数等がでてきて、グローバル だったら楽なのに・・・と思うことがよくあります。

関連するQ&A

  • オブジェクト指向とは?

    お世話になります。 VB.NETはオブジェクト指向言語であると聞きました。しかし、VB6.0はそうではないという話を耳にしました。 一部では、6.0もオブジェクト指向言語であるとも聞いたのですが、実際のところどうなのでしょう? どうであれば、オブジェクト指向言語と言えるのでしょうか?

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

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

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

    【オブジェクト指向について】 こんにちは。初めて質問をさせていただきます。 さて、ただいまVBを勉強中なのですが、オブジェクト指向のところで躓いてしまいました。 質問したい事は以下の点です。 (1) オブジェクト指向の理解について   オブジェクト指向とは、プログラミングをするときに変数や機能などをクラスというものに格納しておくことで、プログラミングを円滑にすすめるための概念であると理解していますが、この理解は正しいのでしょうか? ご回答お待ちしております。よろしくお願いいたします。

  • ASP.NETで開発するのですが、オブジェクト指向の考え方が・・・

    今度、仕事でASP.NET(VB.NET)で開発することになりました。 勉強の意味も含めて、前に知り合いがASP.NETで開発した ソースをファイルを見せてもらったのですが、 やはりクラス(オブジェクト)のところで挫折してしまいました。 ASP.NETではサーバオブジェクトやら色々と新しいことを 覚えなければいけないですが、 まずはオブジェクト指向について勉強したいと思っています。 皆さんが知っている本・サイトでオブジェクト指向について 詳しく書かれているのがありましたら、ご紹介ください。

  • オブジェクト指向

    Javaプログラミングを少し勉強し始めました。 そこで、オブジェクト指向という言葉が出てきました。 オブジェクトを作る利点というか意味はどのようなところにあるのでしょうか? 比較的簡単なプログラムなら、変数とメソッドで表示できると思うのですが・・。 ・コードが読みやすくなる ・実行速度が速くなる などの利点があるのでしょうか? なるべく分かりやすく解説してもらえればと思います。

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

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

  • オブジェクト指向の解説ページ?

    オブジェクト指向のプログラミングについて 分かりやすく解説してるページをご紹介願います。 Javaのソースコードなどで解説してるページが希望です。 ソースコードもそれほど難しいものではなく、簡単な ソースで解説しているページが一番うれしいです。 よろしくお願いします

  • オブジェクト指向、クラスの有効利用方

    delphiを独学しています。 今までphpを勉強していたせいもあり、クラスやオブジェクト指向は知識としてはわかるのですが、うまい利用方法がわかりません。 具体的には、どうやって利用するのでしょうか? たとえば拡張ですが、 マウスで線を引くクラスを作ります。 それに色がつくように拡張させるのはわかります。 コアになるものを作って、ラッピングを変えることで見せ方を変えていくのはわかります。 しかし、そのコアになるもののパターンがわかりません。 もちろん、いろいろなパターンがあるとは思うのですが、最近見たクラスやオブジェクト指向で、わかりやすいものをあげてください。

  • オブジェクト指向の用語

    IT関連の資格試験の勉強をしてるのですが、オブジェクト指向の用語でわからないのがあるので 教えてください。 コントロールクラスの意味がわかりません。 ネットでや持っている本で調べてみたのですが、本には載っておらず、ネットでは理解できませんでした。 詳しい解説をお願いします。

  • ソースコードをダウンロードして勉強したい

    ソースコードをダウンロードして勉強したい 現在独学でJAVAの勉強をしているのですがもっと実践に近い 勉強をしたいと考えていてネットショッピングとか 会計、人事、生産、とか、家計簿とかのソフトのソースコード をダウンロード出来るサイトを探しています。 この様なソースコードをダウンロードできるサイトをご存知の方 がいらっしゃいましたら是非教えて下さい。

    • ベストアンサー
    • Java