• ベストアンサー

C++でのDirectXプログラミングについて

自分は、VC++を使ってDirectXプログラミングを行っているのですが、 Webや書籍で公開されている方のコードを見ていると、 クラスを定義していくオブジェクト指向の形式ではなく、 ただ処理を書き下していく構造化言語の形式をとるコードを多く見かけます。 自分は、C++でプログラミングを行っていると言うことで、 機能毎にクラスをひとつひとつ丁寧に定義して、プログラムを作っている最中なのですが、 人にクラスを使ってもらうわけでない以上、処理を書き下す形式で問題ないように思えてきました。 クラスの定義をクラス毎に書かない分、コードを書くのが早いように思うので、 むしろ処理を書き下す形式の方が良いようにも思うのですが、 オブジェクト指向がもてはやされている世間体を考えると、 自分の考えに自信が持てないので、玄人の方の意見を参考したいと質問させて頂きました。 意見をお聞かせ下さいませんか?

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

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

クラスを使うメリットはあると思います。 例えばキャラクタ処理という基底クラスを作って、それを継承して自キャラと敵キャラ処理を作ったらメンテナンス性が高いと思いますよ。 逆に継承を利用しないとクラスを使う意味は、ほとんど無いです。 それにグラフィック等の基本クラスを作っておくと自分で次のゲームを作った時に楽できますよ。 参考↓ http://www.tnksoft.com/reading/classgame/ http://www.plustarnet.com/aspil/Programming/

manche5
質問者

お礼

回答有難う御座いました キャラクタ処理なんていうのは、格好の相手ですねw あとオブジェクト指向の良さは、移植性の高さだと思い込んでいましたが、継承という点を考えれば自分にとっても良いデスね。 具体的な例が聞けて良かったデス。

その他の回答 (1)

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

>クラスの定義をクラス毎に書かない分、コードを書くのが早いように思うので、 >むしろ処理を書き下す形式の方が良いようにも思うのですが、 >オブジェクト指向がもてはやされている世間体を考えると、 クラスの設計で、そのクラスが何の振る舞いをするかまで定義されてるんなら、そこのクラスに対するアクセスライブラリ揃えればいいでしょうし、でも、ゲームという特殊な部分では再利用されないクラスなんか定義したって再利用されないんで、コード直接書くと思うんですよね。 抽象的過ぎてアドバイスでも何でも無いですけど。

manche5
質問者

お礼

オブジェクト指向は、2回目以降のプログラミングに本領発揮するんでしょうけど、 確かに使い回せない部分をクラスで書くのは効果ないですよね。 というより、自分の質問は、”オブジェクト指向は、構造型よりどれだけ優れているか”の質問に終始するように思えてきました・・・

関連するQ&A

  • オブジェクト指向プログラミングはどのように使用(適用)する?

    あるシステム、またはフリーソフトでもいいのですが、 オブジェクト指向によるプログラミングを行おうとするとき、 そのシステム(ソフトウェア)全体に使用(適用)するのでしょうか? 書籍で学んでいると、オブジェクト指向プログラミングをする場合には オブジェクトとオブジェクトを組み合わせてゆくように書かれています。 もちろん、仕組みはそうではあると思いますが、 無理にシステム全体でオブジェクト指向プログラミングをする必要はなく、 たとえばシステム内である処理を行おうとしたとき、 オブジェクト指向プログラミングの方がいい場合に適用すればいいのではないでしょか?

  • 本当にオブジェクト指向プログラミングっていいのでしょうか?

    いつもお世話になっております。 VC++初心者です。 現在、VC++6.0、MFCのソース修正で四苦八苦しています。 (コーディングするよりも。ソースを追うので苦労してます。) (初心者の私が言うのも難ですが、オブジェクト指向云々言う前に  ソースのif文節が異常に長かったり、3重以上ループが出てくると  とても嫌になります、、、) 一般的(?)に、プログラミングは 手続き型プログラミングよりオブジェクト指向プログラミングが 開発効率がよい、と重宝されているようですが、 どうも納得できていません。 (その手の書籍を2,3冊読みましたが消化不良に終わっています。) 個人的には、手続き型プログラミングの方が好きです。 というのも、慣れているからかもしれませんが、 ソースが追いやすいし、見やすいと思います。 逆にオブジェクト指向プログラミングでは、 ・継承されすぎると、基本クラスまで追うのが一苦労。 ・インスタンスをつくってから、関数を呼ぶのが面倒な気がする。  (手続き型なら関数呼び出しのみで済みます。) ・インスタンスをdeleteし忘れて、メモリを圧迫する危険がある。  (ガーベージコレクションというものもあるようですが、  どこで何を消しているか不安です。) ・ソースを追いにくい(慣れの問題なのでしょうか、、、) そこでですが、 「手続き型は~~で大変だけど、オブジェクト指向ならこんなにすばらしい」 というような対比的に具体例を挙げて説明されている 書籍、サイトの紹介、または、よい助言を頂けませんでしょうか。 また、上記に伴い、 ・手続き型で組んで失敗した例(オブジェクト指向型にすれば良かった例) ・オブジェクト指向型で組んで失敗した例(手続き型にすれば良かった例) も宜しければ教えて頂きたく、お願いします。 (成功例のみよりも、失敗からの成功例を教えて頂けると嬉しいです。) 長くなりましたが、宜しければご教授下さい。

  • DirectXでのプログラミング

    はじめまして。シンといいます。 現在VC++.NET(2002)とDirectX9.0を 使用してプログラミングをしております。 タスク処理の形式でプログラムを組んでいるのですが 描写処理として頂点バッファに定義したモデルデータを 出力するタスクを登録したのですがまったく描写がされず いきずまってしましました・・。 タスク処理は描写毎に初期処理→タスク処理→タスク後処理といった フローで処理を行っており 初期処理でClear、BeginScene タスク処理でSetStreamSource、SetFVF、DrawPrimitive 後処理でEndScene、Present を行っております。 頂点バッファより画面へ描写する場合にCreateWindo、Direct3DCreate9、CreateDevice等で 宣言しておかなくてはいけない事があるのでしょうか? 元々はスプライト描写のみをしていたプログラムを改造して作成しています。 (先々でスプライトと頂点モデルデータを合成したい為) なにかお気づきのことがありましたらご教授お願い致します。

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

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

  • オブジェクト指向プログラミングについて

    VisualBasicを対象にしたオブジェクト指向プログラミングに関する参考書、Webサイトなどはないでしょうか。 現在、クラスモジュールなどを多用しオブジェクト指向プログラミングを実践しているつもりですが、あまり勉強したわけではないのでいまいちよくわからないです。 (オブジェクト指向プログラミングのメリットとデメリットなど)

  • オブジェクト指向プログラミングの多態性のメリット、目的は?

    オブジェクト指向プログラミングを学んでいます。 基本概念の多態性がどうも理解できません。 メリット、目的はなんなのでしょうか? 上位クラスを継承し、 その継承されたクラスのメソッドを上書きするということと何が違うのでしょうか? 学習の参考にしている書籍の中には ”多態性を使ったオブジェクト指向プログラミングの典型例”として、 異種リスト(=上位型に下位型を代入し、一族のオブジェクトを一括管理する)を紹介しています。 多態性はこのような使用のみを目的としているのでしょうか?

  • プログラミングを勉強したいのですが

     僕は、13歳の中学生です。  MacOSX でプログラミングをしたいのですが、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=178026  の参考リンクを読んで、自分も作ってみても、よく理解ができません。  僕には、プログラミングの経験がなく、テキストエディタで HTML を書くくらいのことしかできません。Objective-C, Java はもちろん、C, C++ などのソースコードの読解も、ほとんどできません。 一応、オブジェクト指向については、書籍「オブジェクト指向アプローチ」などで学習したので、だいたい分かります。  そこで、どのようにして入門すればよいのか教えてください! なるべく Developer Tools でやりたいです。また、分かりやすくて有用な高級言語があれば、それも教えてください。  あと、僕は MacOSX 10.2.4 を使っていますが、Developer Tools を古いバージョンに入れ替える方法がありましたら、教えてください(MacOSX 10.1 を持っています)。「Cocoa はやっぱり!」のソースが、10.1 向けに書かれているからです。  よろしくお願いします!

    • ベストアンサー
    • Mac
  • Java:クラスをたくさん使ったプログラミング?

    Java言語勉強中のものです。 Eclipseをつかっています。 初心者ですので、易しい言葉でご回答いただければ幸いです。 Javaの基礎についてひととおり勉強しました。 オブジェクト指向についても、だいたい・・なんとなくは理解できていると思います。 ただ、自分で作成するときに、 うまくオブジェクト指向を取り入れたプログラミングができません。 なんだかあっちこっちのものを呼び出してきてとてもややこしいです。 クラスがたくさんつかわれているプログラムは、 ほかの人がつくったプログラムをなんとかがんばって読む、というのが精一杯です。 自分ではとても思いつかない構造ばかりです。 あっちこっちからよんできているので、図やらリストやらを書いて 本当に「なんとか」理解できた、というレベルです。 クラスが5個以上になると正直もう嫌だってなります。。実用レベルにはまだまだ至っていません。 本当の意味でオブジェクト指向を理解できていないのかもしれません。 どうすればそういった、オブジェクト指向をとりいれたプログラムが書けるようになるのでしょうか? いろんなプログラムを見る、数をこなすことでしょうか? 何かおすすめの参考書や、 「こういう考え方をすれば・・・」というものがありましたら教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • C++について

    C++について C++を学ぼうと思って入門書を探しています。 今までにC++、オブジェクト指向はやったことがありません。 C言語は初級と中級の間ぐらいの知識です。現在は独習Cを読んで、理解を深めています。 VC++を理解したいと思って業務(ツール)のソースや構成などを見てもさっぱりでした。 どこから学んでいけばよく分からない状態です。 オブジェクト指向を理解しつつ、C++も習得していってVC++を使えるようになりたいです。 Visual C++〈1〉はじめてのWindowsプログラミング (プログラミング学習シリーズ) が良いと聞いたのですが、C言語を分かっている程度の私が読んで勉強になりますか? もし、他に取っ掛かりやすい本がありましたらお願い致します。

  • オブジェクト指向プログラミング

    一般に、オブジェクト指向プログラミングといわれているプログラミングに関してですが、 「関数・手続きを使用するプログラミング」と 「クラスを作成してプログラミング」というのは おおきな違いがあるのでしょうか? (クラスを作成しなくても関数・手続きで、プログラミングすれば 一緒じゃないかなぁと思っていますので・・・。) どなたか、これに関して、お返事をして頂けたら今後いろいろな面でかなり助かります。

専門家に質問してみよう