• ベストアンサー

C++プログラミングの手順

C++を勉強しはじめてすごく基本的な部分は理解できました。 でも、それはあくまで知識であり実践となりますと話は別です。 いままでは、ライブラリという他人の作ったクラスを使用してプログラミングをしてきましたが、 だんだん奥深くに入り込むと、自分のわがままに会ったクラスがほしくなってきます。 でもいざクラスを作ろうとしたら、 プログラマの方々はクラスの定義を先にするか、ソースから作ってゆくのでしょうか? クラスを作る手順を教えてください。

  • nVIDIA
  • お礼率46% (520/1121)

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

  • ベストアンサー
  • unya_unya
  • ベストアンサー率54% (19/35)
回答No.5

> クラスの定義を先にするか、ソースから作ってゆくので > しょうか? 理想的には、(それ以前の設計については、ひとまず 措いとくとして) (1)クラスの仕様である宣言(=定義。これもソースコードなんだけどね。)の作成を先に済ませてから、 (2)宣言に合致した実装のソースコードを作る。 という順番になると思います。 ただし、初心者であれば(1)を完璧にこなしてから(2)に移る、というのは相当に困難、というかムリ でしょう。普通の人は、ある程度コードを書けるよう にならないと、クラス定義を書きこなせるようにはな りませんから。 という訳で、実装の力がない(=見通しが利かない人) ほど、設計と実装を行ったりきたりすることになります。かといって、それが必ずしも悪い訳ではありません。「案ずるより生むが易し」で、実際にコードを書 いてみて気がつくことが一杯あるんですから。

nVIDIA
質問者

お礼

専門家の方の作る順番が良く分かりました。 ソースコードはある程度掛けますがまだまだです。 でも、今後どうしても他人との共同で作らなきゃいけないので、 >(1)クラスの仕様である宣言(=定義。これもソースコードなんだけどね。)の作成を先に済ませてから、 >(2)宣言に合致した実装のソースコードを作る。 見たいになるためにもこの夏がんばりたいです。 いいアドバイスありがとうございます。 ただ…PCから出る熱風で部屋が暑くなるんです。 かなりそこがきついですが、がんばります!(^^;)

その他の回答 (4)

  • Interest
  • ベストアンサー率31% (207/659)
回答No.4

> プログラマの方々はクラスの定義を先にするか、ソースから作ってゆくのでしょうか? > クラスを作る手順を教えてください。 クラスを作る云々以前に、「設計」をします。「実装」(ソースコードを書くこと)は設計の後です。設計をせずに実装するとしたら、それは行き当たりばったりでプログラムを作るということになります。 C++に限らず、一般的なソフトウェア開発では (1) 要件定義(要求分析) (2) システム設計(アーキテクチャ設計、概略設計) (3) 内部設計(詳細設計) (4) 実装(コーディング) (5) テスト のような流れで開発を進めます。(さまざまな開発プロセスのモデルがありますが、ここではウォーターフォールモデルを例に出しました。) そういうわけで、突然ソースコードを書き始めることはなく、最初に「何を作るか」を決めて、それから「どう作るか」を検討して、やっと作り始めるわけです。ここら辺の話は、”ソフトウェア工学”の範疇です。機会があったら勉強してみてください。

nVIDIA
質問者

お礼

期末で忙しかったんで変事遅くなりましたすみません。 非常に分かりやすかったです。 同時に、基本情報の復讐にもなりました。 ありがとうございます。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

設計も実装も、まともにできるようになるにはそれなりの下積みが必要です。 > いままでは、ライブラリという他人の作ったクラスを使用してプログラミングをしてきましたが では、そのライブラリのサブセットを自分で作ってみてはどうでしょう?基本的な設計が既にあるので、実装だけで済みます。 例えば、stringクラスのサブセットを自作するだけでも得るものは多いはずです。テンプレートを使ってbasic_stringを作るのは難しいので、char型に特化すればよいと思います。 次に、既存のC言語で書かれた(比較的小規模な)ライブラリのラッパーを設計・実装してみてください。FILE型を使ったストリーム操作なんかが手頃です。 ここまでできれば、まったくのオリジナルクラスを作る際にも、どうすればよいのか大体見えてくるはずです。

nVIDIA
質問者

お礼

期末で忙しかったんで変事遅くなりましたすみません。 要するにライブラリを改造せよ。というわけですね。 まずはライブラリどの様な仕組みになってるか、 覗き見してみます。 ありがとうございました。

  • ddnp009
  • ベストアンサー率25% (15/58)
回答No.2

意見を求めているのは、次のうちどっち? [1] クラス実体のコーディングが先か、   またはそのクラスを用いる側のコーディングが先か [2] クラス設計(構想)が先か、   またはクラス実装も含めたプログラムが先か 質問文どおりに解釈すると[2]になるのかな。 だとすると普通そんな疑問はありえないんだけどね。 (構想無しに何を作る)

nVIDIA
質問者

補足

期末で忙しかったんで変事遅くなりましたすみません。 まだ、オブジェクト指向始めて半年なのでどちらともハッキリいえませんが、 感じとしては[2]だとおもいます。たぶん。

回答No.1

ヒトそれぞれです。 僕は設計と実装を行ったりきたりします。

関連するQ&A

  • プログラミング、どう勉強すればいいのかわかりません

    少し前からpythonを勉強しているものです。プログラミング等の経験はありません。 まず、本を買ってそれからたとえばループだとか、ファンクションの定義の仕方だとか、そういったものの書き方などは理解しました。一通りは理解したつもりです。 ただ、ここからどうすればいいのかわからないんです。 プログラマーの方々、なにとぞ指南をいただけると幸いです。

  • プログラミングの基礎

    将来プログラマになりたいと思っています 今中学生なのですが、高校は情報科学科のある高校に行こうと思っています プログラミングの勉強をするために学んでおくべきことはなんですか? 基本中の基本から学びたいと思っています。 あと言語はC言語をやろうと思っているのですが C言語を勉強する前にパソコンの動作?を理解するためにアセンブラも勉強をしておくほうがいいのでしょうか

  • 初心者ですが、プログラミングを勉強したいです

    専門的な知識がなく、全くの初心者なので 色々と認識違いもあると思いますがよろしくお願いします。 私は20歳の子持ち既婚女性です。 現在1歳の子供がおり、来年2月には2人目が生まれる予定の妊婦です。 前置きをグダグダと書きますが結論を先に申し上げますと プログラミングができるようになりたいのです。 主人はインターネット関係(詳しくわかりませんが)の会社で働いています。 主人自身は、パソコンには詳しいのですが システムを開発する、要するにプログラミング?的な事はできません。 同じ会社内のプログラマーが開発したシステムを使って仕事をしているようです。 そんな主人からよくプログラマーのお話を聞くので興味があります。 とはいっても、話の内容が難しくなってくると基礎知識もないので 全然理解できてはいないんですが・・・^^; 私がプログラミングを覚えたい理由は以下です。 ・高卒で学歴もなく、社会経験もなく、就職に役立つような資格やスキルがない  ⇒できるだけ若いうちに何らかのスキルを身に付けたい ・主人の会社では常にプログラマー不足  ⇒いずれ子供が幼稚園に通い始めた時、不利な条件でも雇ってくれる ・主人のできないプログラミングをこなし、認められたい しかし私はインターネットでサイト閲覧、ゲームなどしかしたことがなく パソコンそのものの基礎知識がありません。 以前、PHPを勉強しようと参考書を見ながら プログラミングの打ち込みをしてみましたが 結局根本的なところで理解できていないので途中で断念。 やはり一から勉強したい、と思うようになりました。 ですが正直なところ、どこから手をつけていいのかわからず困っています。 調べていると、システム開発などの会社に勤めている方は 基本情報技術者・応用情報技術者という資格を持っているという情報を目にしました。 まずはこういう資格の取得から目指せば良いでしょうか? それともプログラミングを勉強する前にパソコンの基礎知識を 勉強していったほうがいいでしょうか? プログラマーになられた方はどういった順序で学んでいったのかを 知りたいので是非ともよろしくお願いします。

  • C++ 6.0について

    私は、プログラマー目指して勉強でVisual C++で四角格子のプログラミングしているのですが、 計算で使うsinやcosやsqrtが定義されていないとエラーが出ます。 これらも定義するのでしょうか?どのように定義するのですか? 教えてください。

  • C/C++のゲームプログラミングについて

    私は約1年後に学校で課題研究の発表があります。 それなんですが、ゲームプログラミングをしたいと思っております。 プログラミングについてはCを一通り理解しているのみです。 DirectXとC++でシューティングゲームを作成しようかと思っていたのですが、不可能でしょうか? たとえ不可能であっても、DirectXとC++でシューティングゲーム完成に至るまでにかかる期間と 勉強しなければいけないもの(勉強手順)を全てお教えいただけないでしょうか? それと何か良い参考書等がありましたら加えてお教え願います。

  • 本格的にCプログラミングができるようになるまで

    大学生です。大学ではまだ授業がありませんので、独学でC言語のプログラミングを勉強しています。C言語の文法を一通り理解し、ポインタに関しても1冊読んで理解しました(つもりです)。 C言語を教えている先生に個人的に、今後何を勉強すべきか聞いたところ、「いろんなアルゴリズムとかデータ構造を覚えるといい」と言ってくださいました。しかし、私には難しい事項ばかりで、「これらを勉強する意味は何なのか?」という疑問もあります。 また、オープンソースになっているプログラムを見ると、私のレベルを遥かに超えたものばかりで、読んでもさっぱりです。さらに、GUIツールキットの使い方なんかはもちろん、ライブラリの使い方や作り方、ソースを複数ファイルに分割する方法すら知らないことに気づきました(恥ずかしい限りです)。 独学を始めた頃は、「C言語をマスターすればソフトが作れるようになるんだろう」程度の認識でした。しかしここに来て、あまりにも多くの事項を学ばねばならない気がしてきました。「演習あるのみ」と仰る方もいますが、何を演習すればいいのかも分かりません。 一人前にプログラムが書けるようになるまでには、何をしなければならないのでしょうか。目的や理由も添えていただけると嬉しいです。

  • プログラミングの勉強と理解

    私の職種はデザイナーです。CG、映像、Webのデザインをします。2D、3D、編集などします。 しかし仕事の大半はプログラミングです。C++、C#、PHP、javascript、データベース(MySQL)がほとんどです。 Webアプリを自分一人で作ってもいます。PHPがメインでjQueryとデータベースを使った非同期で動くアプリです。デザイナーなので見た目はプロっぽく作っています。 そしてWebアプリを支援するツールをC#で作っています。 本職ではC++で大規模なアプリの一部の開発をしています。 CGツールのAPIなども使ってソフトウエアのカスタマイズもします。 これでもデザイナーなのですが、やはり本職のプログラマーの足元にも及びません。 ここからが本題です。 私は他人が作った環境やライブラリを使っているにすぎず、Webアプリの作り方やPHPやそのフレームワーク、jQueryなどの使い方などはWebで見て見よう見まねでツギハギしているだけです。 20代・30代の現役プログラマーさんたちは遥か上を行っています。 ブログやSNSで小難しい言語の使い方の解説をされている方も大勢いますし、書籍を出せるほどの知識を持った方も多いです。 自分はもう30代後半なのに、他の方の知識を借りてコードをツギハギしているだけで嫌気が差してきました。 思考がプログラム脳ではなく、フレームワークを作れるでもなく、jQueryのようなものを作れるわけでもなく、かといってC言語の講習会はメモリ管理とか難しすぎて理解できませんでした。 クラスや継承など比較的簡単なところはわかりますが、他人が作ったテンプレートとか、もう見ても何がなんだかわかりません。 どのようにしてプログラム脳にもっていけばいいのでしょうか? そもそも初歩から勉強したわけではなく、なんとなく業務的にやってたらプログラミングをやるようになったのできちんと学習ということをやっていないのが原因のような気がします。 もう30代後半なので読解力も衰えてきていると思いますが、プログラミングスクールのようなところに通って一から勉強したほうが良いのでしょうか? 私の書いたコードは他人に見せれるようなものではありません。 自分で作るアプリとかはクラスとかほとんど使っていませんし・・・(本職のアプリでは使っています)。 学習方法について何かアドバイスがあればどうぞよろしくお願い致します。

  • プログラミングについて。

    プログラミング初心者です。 ちょっと興味があり、プログラミングの勉強をしています。 テキストベースでプログラムを書いていったとして、どうやってGUIベースにすればいいのでしょうか? Linux上で簡単なプログラムをつくってコンパイルしましたが、コマンドから実行するともちろんCUIでの実行になります。 どうすれば、GUIベースで作れるのでしょうか。 言語以外の知識(専用ソフトウェア等)を必要とするのですか。 それとも、htmlのように画像などを読み込ませ完成させるのでしょうか。 iPhoneアプリ製作などは XCodeなどがありますが、プログラマーとして仕事をしている人は基本的にそのような専用ソフト上でプログラミングしているのでしょうか。

  • プログラミングをはじめるための心構えについて

    ITエンジニアです。 仕事でプログラムを書くことがあまりなく、UNIX、ネットワーク、セキュリティの知識が求められることが多いです。 ただ、ITエンジニアである以上、プログラムが書けないことは恥ずかしいことだと思ってます。 担当業務が異なるにせよ、調べればある程度作れることは必須だと思ってます。 これまで、何度かプログラミングをやろうと思って書籍を買いました。 しかし、最初の50ページくらいのif文の書き方などの超基本的な文法はある程度理解しておりますが、恥ずかしながら動くモノを作ることをやっていません。文法以外にフレームワークや書籍に書いてあるバージョンとPCに入れた環境が異なると操作方法が違うことがあり、面倒に感じてしまいます。 Twitterやブログなどを拝見すると、プロのプログラマーは普段から趣味でプログラミングをやっているなど、モノ作りへのモチベーションが非常に高いと感じます。 そこで相談なのですが、 1.プログラミングの勉強方法 あまりプログラミングが得意で無い人は、書籍にあるサンプルコードを理解しながら 写して実行することを繰り返す方法で良いのでしょうか?そこで楽しさを感じる人はプログラミングとの相性がいい、センスがあると思って良いのでしょうか。 2.何を作るか 書籍などではショッピングサイトなどのサンプルコードが多いと思いますが、 特に何を作るか決めてない人は、サンプルにあるようなショッピングサイトで十分なんでしょうか? いわゆるプロのプログラマーは「何を作るか」をどのように決めているのでしょうか。

  • プログラミングの勉強をかねてHPを作りたいです

    将来プログラマになりたいので、プログラミングの勉強もかねてホームページを作りたいと考えている者です。 そのホームページは、できる限り排他的に、身近な友人のみで、写真や動画などを使い易く共有できる仕様にしたいと考えています。 ちなみに、HPを作る上での私の知識は0に等しいです。 そこでいくつか質問です。 1・ホームページ作りは、プログラミングの勉強になるでしょうか?また、Yesの場合、どんなプログラミング言語が適しているでしょうか? 2・ホームページを作る上で、何かオススメの書籍はあれば、教えて頂きたいです。HTMLやCSSのみでなく、プログラミングも含まれた本があれば嬉しいです。 3・赤の他人は見られないようにしたいのですが、そのためのオススメの手段や、それが記載された書籍やサイトなどがあれば、教えて頂きたいです。

専門家に質問してみよう