• ベストアンサー
  • 困ってます

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

  • 質問No.2286679
  • 閲覧数51
  • ありがとう数4
  • 回答数5

お礼率 46% (520/1121)

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

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

  • 回答No.5
  • ベストアンサー

ベストアンサー率 54% (19/35)

> クラスの定義を先にするか、ソースから作ってゆくので
> しょうか?

理想的には、(それ以前の設計については、ひとまず
措いとくとして)
(1)クラスの仕様である宣言(=定義。これもソースコードなんだけどね。)の作成を先に済ませてから、
(2)宣言に合致した実装のソースコードを作る。
という順番になると思います。


ただし、初心者であれば(1)を完璧にこなしてから(2)に移る、というのは相当に困難、というかムリ
でしょう。普通の人は、ある程度コードを書けるよう
にならないと、クラス定義を書きこなせるようにはな
りませんから。

という訳で、実装の力がない(=見通しが利かない人)
ほど、設計と実装を行ったりきたりすることになります。かといって、それが必ずしも悪い訳ではありません。「案ずるより生むが易し」で、実際にコードを書
いてみて気がつくことが一杯あるんですから。
お礼コメント
nVIDIA

お礼率 46% (520/1121)

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

ただ…PCから出る熱風で部屋が暑くなるんです。
かなりそこがきついですが、がんばります!(^^;)
投稿日時:2006/07/23 11:19

その他の回答 (全4件)

  • 回答No.4

ベストアンサー率 31% (207/659)

> プログラマの方々はクラスの定義を先にするか、ソースから作ってゆくのでしょうか?
> クラスを作る手順を教えてください。

クラスを作る云々以前に、「設計」をします。「実装」(ソースコードを書くこと)は設計の後です。設計をせずに実装するとしたら、それは行き当たりばったりでプログラムを作るということになります。

C++に限らず、一般的なソフトウェア開発では
(1) 要件定義(要求分析)
(2) システム設計(アーキテクチャ設計、概略設計)
(3) 内部設計(詳細設計)
(4) 実装(コーディング)
(5) テスト
のような流れで開発を進めます。(さまざまな開発プロセスのモデルがありますが、ここではウォーターフォールモデルを例に出しました。)

そういうわけで、突然ソースコードを書き始めることはなく、最初に「何を作るか」を決めて、それから「どう作るか」を検討して、やっと作り始めるわけです。ここら辺の話は、”ソフトウェア工学”の範疇です。機会があったら勉強してみてください。
お礼コメント
nVIDIA

お礼率 46% (520/1121)

期末で忙しかったんで変事遅くなりましたすみません。

非常に分かりやすかったです。
同時に、基本情報の復讐にもなりました。
ありがとうございます。
投稿日時:2006/07/23 11:12
  • 回答No.3

ベストアンサー率 26% (845/3158)

設計も実装も、まともにできるようになるにはそれなりの下積みが必要です。

> いままでは、ライブラリという他人の作ったクラスを使用してプログラミングをしてきましたが

では、そのライブラリのサブセットを自分で作ってみてはどうでしょう?基本的な設計が既にあるので、実装だけで済みます。
例えば、stringクラスのサブセットを自作するだけでも得るものは多いはずです。テンプレートを使ってbasic_stringを作るのは難しいので、char型に特化すればよいと思います。

次に、既存のC言語で書かれた(比較的小規模な)ライブラリのラッパーを設計・実装してみてください。FILE型を使ったストリーム操作なんかが手頃です。

ここまでできれば、まったくのオリジナルクラスを作る際にも、どうすればよいのか大体見えてくるはずです。
お礼コメント
nVIDIA

お礼率 46% (520/1121)

期末で忙しかったんで変事遅くなりましたすみません。

要するにライブラリを改造せよ。というわけですね。
まずはライブラリどの様な仕組みになってるか、
覗き見してみます。
ありがとうございました。
投稿日時:2006/07/23 11:08
  • 回答No.2

ベストアンサー率 25% (15/58)

意見を求めているのは、次のうちどっち?

[1] クラス実体のコーディングが先か、
  またはそのクラスを用いる側のコーディングが先か
[2] クラス設計(構想)が先か、
  またはクラス実装も含めたプログラムが先か

質問文どおりに解釈すると[2]になるのかな。
だとすると普通そんな疑問はありえないんだけどね。
(構想無しに何を作る)
補足コメント
nVIDIA

お礼率 46% (520/1121)

期末で忙しかったんで変事遅くなりましたすみません。

まだ、オブジェクト指向始めて半年なのでどちらともハッキリいえませんが、
感じとしては[2]だとおもいます。たぶん。
投稿日時:2006/07/23 11:00
  • 回答No.1

ベストアンサー率 46% (546/1184)

ヒトそれぞれです。
僕は設計と実装を行ったりきたりします。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ