関数をクラス化するメリットとは?

このQ&Aのポイント
  • 関数をクラス化することにより、関連する機能をまとめて管理できます。
  • クラス化する場合としない場合の選び方はありますが、一般的には機能の関連性や再利用性を考慮して判断します。
  • 関数が点在することは可読性や保守性の低下につながることがありますが、必ずしもクラス化する必要はありません。
回答を見る
  • ベストアンサー

関数をクラス化する目安とは・・?

C++ビギナーです。 見よう見まねですが、おおまかな機能毎に1ヘッダー1ソースを作り オブジェクト指向の真似事をやっているのですが、 新たにクラスを作るとなると、 1つの関数を作るのに定義やコンストラクタを一々作らなければならないのに対して、 クラスにせず、関数単体ならぱっと書けて 使うときも直に呼び出すだけでとても楽なのですが、 1.関数をクラス化するメリットはどのような場合に有るのでしょうか? 2.クラス化すべき場合、すべきでない場合 というのが有るのでしょうか? 3.クラス化していない関数が点在するのは良くないのでしょうか? おおまかな事で構いませんので、目安を教えて頂けると幸いです。

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

  • ベストアンサー
  • bkbkb
  • ベストアンサー率33% (97/289)
回答No.1

>1.関数をクラス化するメリットはどのような場合に有るのでしょうか? >2.クラス化すべき場合、すべきでない場合 というのが有るのでしょうか? >3.クラス化していない関数が点在するのは良くないのでしょうか? オブジェクト指向じゃ、まず全部クラス化しますね。 オブジェクト指向を特に積極的に採用しないのであればクラス化しなくても良いです。 逆にオブジェクト指向じゃないからクラス化してはいけない、なんてわけでもありませんけどね。 オブジェクト指向の勉強をすればクラス化の意味がちょっとはわかります。 クラス化は目的じゃなくて手段なんです。 オブジェクト指向を達成するためのものなんです。 余談。 個人的にはオブジェクト指向やるならC++よりC#のが好きですね。 C++は未だよーわかりません(滅

zaxs5968
質問者

お礼

全てはオブジェクト指向 次第なのですね。 疑問点は一応払拭できました。 いずれオブジェクト指向の勉強をちゃんとやってみたいと思います。 ありがとうございました。

関連するQ&A

  • 宣言と定義 通用範囲やインスタンス

    C++ビギナーの者です。 オブジェクト指向プログラムを見よう見まねでやって壁にぶつかっています。 わからない事が3つ程あります。 1. 「ヘッダーファイル中」と「ソースファイルの、関数・クラスの外側」と「その中」 この3箇所での、宣言や定義にはどんな制限等が存在するのでしょうか? ヘッダーに書くとダメなものが、ソースでならOKだったり混乱しています。 2. ClassAというクラスのインスタンスを、「複数の関数」で使いたい場合に  「ソースファイルの、関数・クラスの外側」 で ClassA classa; 等として、ソース内の複数の関数で利用するのは大間違いなのでしょうか? グローバル変数が何度も初期化されるトラブル等が起きています。 3. ソースファイルA側でデータを入れたvectorを ソースファイルB側で使うにはexternを付けるだけで良いのでしょうか? 手元にある参考資料から、見よう見まねでやってしまってるのですが、 C++の解説サイトにはあまり、こういった情報が載ってないのか見つけられません。 やはり書籍を買って勉強すべきだと痛感し始めたのですが、 解説のあるWebサイト、おすすめの書籍などが有りましたら それらも教えて頂けると幸いです。 よろしくお願いします っ_ _)っ

  • pythonのクラスのメンバー関数の呼び出し

    pythonの教科書を見ながら実習しているのですが、1つ不明なことがあり、お尋ねします。 クラスに属するメソッドについてです。以下の3つのパターンが出てきました。 1 __init__ 2 __xxx 3 __で始まらないもの。 この3つのうちで、 1はコンストラクタのようで、オブジェクトを定義したときの初期値設定みたいで、 3は普通のメソッドであり、オブジェクト.メソッド()で呼び出すようです。 2はマングリング機能でオブジェクトから呼び出すことができないということでした。 では、いつ呼び出されるのかという疑問があります。 オブジェクトのメンバー関数が呼ばれるたびにその都度実行されるということでしょうか。 本に明記されていないので、解説をよろしくお願いします。

  • クラスとは何?と聞かれたら

    お世話になります。 「オブジェクト指向におけるクラスとは何ですか?」 という質問に対して、 「任意に定義できる新しい型のことです。そして基本型とは違って、任意の数の属性、任意の数のふるまいを持つことができます。」 という答えは、 1. 間違いになるでしょうか? 2. そう尋ねられた場合はどう答えますか? よろしくご教授ください。

    • ベストアンサー
    • Java
  • インターフェイスと抽象クラスについて

    オブジェクト指向について学んでいます。 下記のように、単体でクラスを定義して各メソッドの実行する方法などは理解しているつもりです。 class Test { public function __construct() { // コンストラクタ } public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } $test = new Test(); $test->setName('太郎'); echo $test->getName(); // 太郎 ここまではいいのですが、インターフェイスと抽象クラスってどんな時に使うべきなのでしょうか? 簡単な例で使い方を紹介しているサイトはいくつかあるのですが実用性がないものばかりで、これらは本当に必要なものなのか?という疑問があります。。。 具体的に実用性がある例で使い方とメリットをおしえていただけませんでしょうか?

    • ベストアンサー
    • PHP
  • ユーザー定義関数とクラスの違いとは?

    間違えて違うカテゴリーに質問してしまったので、 そちらを削除して、質問させていただきます(レスも幸いなかったため)。 PHPを勉強して1ヶ月の初心者です。 ホームページを作ろうとして、本に書いてあったプログラムを元に、 付け足したり、削ったりしていました。 そして、プログラムが長くなってきたので、外部ファイルに処理を分割してみました。 どの本にも、「クラス」「オブジェクト指向」という言葉が強調されていたので、 とりあえずクラスにしてみました。 しかし、クラスの中で処理をした変数を取り出すのが手間に感じます (クラス内では「$this->変数名」、クラス外では「$クラス名->変数名」と書く手間が・・・)。 本の中には、クラスを使わずに、 ユーザー定義関数のみのfunctionをまとめた外部ファイルを 作成している例が多い気がします。 そこで質問なのですが、 処理を分割して外部ファイルにするとき、 「メソッドをまとめたクラス」にした方がいいのでしょうか? それとも、「ユーザー定義関数をまとめたもの」にした方がいいのでしょうか? また、「こうゆう場合は、クラスにした方がいい」「ユーザー定義関数にした方がいい」などの 条件がありましたら、教えていただきたいです。 本やネットを調べても、使い分けについて書かれているページがなく、 今後の作成のためにも、ぜひ知っておきたいです。 すべてクラスにした方が今後よいようでしたら、全部クラスのままで作れるよう、 慣れていきたいとも思ってもいます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 関数内のクラス定義について

    function func_name() { --- snip --- class class_name { --- snip --- } --- snip --- } のように関数内でクラスを定義した例を見たのですが、関数外でクラスを定義した場合とどこが違うのでしょうか? またどのような意味があるのでしょうか? PHPでは関数内に子関数を定義すると子関数もグローバルになって二重定義エラーになるためこのようなことは出来ないと認識しているのですが、関数内でのクラス定義でこのようなことは起こりませんか。 またclass class_nameはグローバルなスコープを持たないのでしょうか?よろしくお願いします。

    • 締切済み
    • PHP
  • 定義済み関数を用途別に逆引きしたい

    ボクはプログラミングに関してほぼ初心者で、 プログラミングの基礎はC言語だと聞いたので、C言語の入門本に取り掛かり変数や構造体や関数などの概念を学んだ上で、既存のウィンドウズ付属の定義済み関数を組み合わせてプログラミングしてみようと思ったのですが、一つの疑問が浮かび上がりました。 「定義済み関数を使うには、その関数を知っていることが前提条件なのか?それらは用途や目的など何らかの形で分類されていなくて、ただ漠然と並べられているのか?ボクはいくつ関数を覚えればいいんだ…?orz」という疑問です。 質問する前にボクなりに調べましたが、もしかしてこの「関数を用途や目的等別で分類する」とはオブジェクト指向の「クラス」にあたるのでしょうか?だとすれば、次にボクはオブジェクト指向のプログラミングを学ぶべきでしょうか?

  • クラスのメンバ関数を別ファイルで定義したときのバグ

    C++ においてヘッダファイルで宣言したクラスのメンバ関数を別のソースファイルで定義して、コンパイルするとうまくいきません。エラーは出ないのですが、同名の何もしない関数としてコンパイルされているようなのです。クラスのメンバ関数を宣言したのと同じヘッダに書くとちゃんとコンパイルされます。 どうしてそうなるのか、いまいち原因がわかりません。

  • クラスの継承の仕方

    後学のため、JavaScriptについて勉強しています。 JavaScriptでもクラス(のようなもの)を定義してオブジェクトを作成できるようですが、サブクラスを定義する方法が分かりません。メソッドやコンストラクタはどのように継承すればよいのでしょうか。 お分かりの方おられましたら、ご教授のほどお願い致します。

  • クラス?オブジェクト?インスタンス?何がなんだか・

    一般的なオブジェクト指向の 定義として下記で合っているのでしょうか お願いします クラス:第2実体(人間) インスタンス:第1実体(例:山田) オブジェクト:色々なインスタンスをさして、抽象的に総称としてオブジェクト 例えば・・クラス:人間、インスタンス:山田 クラス:犬、インスタンス:ゴン 違うクラスのインスタンスをまとめて呼ぶ際にオブジェクト? よく分からなくなっています、よろしくお願いします

専門家に質問してみよう