• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オブジェクト指向全般、及び、クラス設計について。)

オブジェクト指向全般、クラス設計についての質問です

lv4uの回答

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

質問者さんの質問への正面からの回答ではないのですが・・・ >>その中でも、特に戸惑ってしまうのが、「何をクラスにするのか」という最も基本的な部分です。 その疑問は私の読んだC++の本にも書かれていました。私は「ケースバイケースで、問題を分析して、それで決まる」なんて思っていました。 ただ、最近は、その疑問よりも前に、「クラスを作って、あるいはオブジェクト指向で開発効率はアップするのか?」というもっと基本的な疑問がくるべきでは?なんて思っています。 つまりクラスとかオブジェクト指向って、それらの最終目的は、開発工数の削減とバグを無くすことだと思います。 それは、住宅建設に例えるなら、注文主(施主)の希望に合わせた小さな部材で組み上げる注文住宅(ミスが発生しやすい)より、大きな単位の規格パーツの組み合わせで完成するプレハブ住宅のような、短納期で確実な仕上がりになる方向に向かうのと似ているように思います。 「責務」「単一責任の原則」「高凝集度」「疎結合」などの原則があるのはわかりますけど、先ほどの建築の事例で例えれば、「ノミやカンナの上手い使い方」「ノコで直線に合わせて板を切断するコツ十則」なんてものに相当するのかな?なんて思います。 現在の建築現場では、電動ドライバー、電動丸ノコなど、いろんな電動工具類が作業効率を飛躍的にアップさせています。電動工具で作業する人にとっては、そんな昔ながらの道具の使い方原則は「古いよ!それより新しい電動工具の使い方のノウハウを教えてくれ!」っていうことになりそうです。 上記のような考え方は、C#のバージョン3.5や4.0について記載された本を読んだときに、「クラスは単なる入れ物にすぎない」「新しく導入されたラムダ式は、クラスの原則を壊すもの」「動的プログラミング」なんて記述があり、「目から鱗」と感じたからです。 質問者さんは、幸いC++やJavaでなく、C#を選ばれていますから、C# 3.5以降のそんな機能を大いに教授できると思います。 お勧め本は、川俣 晶さんが書かれた「究極のC#プログラミング~新スタイルによる実践的コーディング」「C#実践ダイナミックプログラミング」「C#ショートコードプログラミング」などです。

Simula777
質問者

お礼

たしかに、手段が目的になってはいけない・・・と最近感じてます。 おすすめしていただいた書籍についは、機会があったら読んで見たいと思います。

関連するQ&A

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

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

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

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

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

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

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

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

  • オブジェクト指向の特徴

    プログラミングにおいて Java言語などのオブジェクト指向とは 「クラス(設計図)からインスタンス(実体)を量産できる。」がオブジェクト指向ではないプログラミング言語との決定的な違いなのでしょうか? またオブジェクト指向とオブジェクト指向ではない言語の決定的な違いや 実際に実務において経験した感覚的な違いなどがあれば教えてください。 インターネットに乗っていない些細なことでも構いません。

    • ベストアンサー
    • Java
  • オブジェクト指向の教え方

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

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

    プログラミングの用語を調べていて、「オブジェクト指向」という言葉を見つけたのですが、Googleで検索してみてもしっくりくるものが見つかりません。 誰かわかりやすい説明をお願いします。🙇

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

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

  • VB.NET,2005でのオブジェクト指向、クラス設計のポイント。

    VB6ユーザでした。 これから、VisualStudio2005で、VisualBasiの開発を 新規に行う所です。 VB6ユーザの悩み所として、クラス設計があるかと思います。 オブジェクト指向の概念は理解しているのですが、 クラス設計のポイントをアドバイス頂けないでしょうか。 みなさんの、VB.NET、VisualStudio2005等での オブジェクト指向プログラミングの勘所を教えて頂けると 助かります。 思いつく事では・・・ 例1) 顧客DBがあり、いろんな画面から操作する場合、 顧客クラスを用意し、DB操作は、顧客クラスを経由して 行うとか。 例2) 出来るかどうか分かりませんが、 画面で共通部品となる部分を、クラス化し、継承して いくとか。 参考になるHPでも良いので、アドバイスをお願い致します。

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

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

    • ベストアンサー
    • Perl