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

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

matoro6173の回答

回答No.1

私がよく使う言語はC++なので、参考になるかどうか分かりませんがお答えします。 様々な本を読んできて、オブジェクト指向はオブジェクトを中心に考えるから云々と言われていますが 私にとっては意味のわからないうたい文句のように感じています。 結局何を言いたいのか要約しますと ・カプセル化をすることで変数やメソッドの隠ぺい ・クラス間の役割を、メッセージのやり取り(関数の呼び合い)で実現 ・クラス継承を利用して、能力の引き継ぎ だいたいこのくらいです。 あちらこちらで参照されるような値が本当に必要であれば、 値を取得するだけのグローバル関数を使うのが良いかもしれません。 単純にどこかでバグが起これば、バグが起こった場所を探すのに時間がかかりますよね。 (このような危険な手法を出来る限りしないのがカプセル化だからだとも言えます) この考え方による恩恵はすさまじいものがあります。 例えば、テレビのリモコンをクラス化するとしましょう。 扱う人(リモコンクラスを利用する人)にとっては、内部の電圧であったり 処理であったりはどうでもいいことなのは明白です。 これらを全て隠し、電源オンオフボタン、チャンネルを変えるボタン……と 限定したインターフェースを公開するだけで使いやすく分かりやすいクラスが出来るわけです。 そして、利用する人はカプセル化された情報を誤って操作することもありません。 また、リモコンとはチャンネルを変える方法を知るクラス(関数)などなどを 寄せ集めたクラスとも言えます。 このように機能を提供するクラスや、この寄せ集めて製品となったリモコンクラス それぞれにクラスとしての意味合いが変わってきます。 これらのクラスの意味を考え、パターン化したものがデザインパターンとなります。 つまり、「何故そのパターンが必要なのか」が分からないとデザインパターンを学んでも よく理解できるものではありません。 そしてデザインパターンを実現するためには、プログラム言語の仕様にも精通していないといけません。 どちらも満たすように学習していくには、質問者様がやられていますように 作ってはリファクタリングするのが王道だと思います。 知らずに自ずとデザインパターンを使っているものですしね。 個人的に理解の助けになったのは、javaになりますが 「java言語で学ぶデザインパターン入門」という書籍です。 もし必要があれば手に取ってみてください。

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